搜索抓取

分页序列与 URL 发现:列表页翻页入口怎样设计才不影响抓取

分页是很多站点把深页送入抓取队列的主要通道。本文从链接形式、参数写法、无限滚动和 Sitemap 配合几个角度,说明怎样让翻页入口更容易被搜索蜘蛛跟随,同时避免重复发现和路径过深。

搜索抓取

分页序列与 URL 发现:列表页翻页入口怎样设计才不影响抓取

很多站点的末级页面并不是从首页直接链接过去的,而是沿着“首页 → 栏目页 → 列表页第 1 页 → 第 2 页 → 详情页”这样的路径被逐步发现。分页序列因此不只是浏览体验的一部分,它也承担着把深页送入抓取队列的作用。如果翻页入口在源码里不可跟随,或者路径设计得让蜘蛛容易迷路,URL 发现效率就会下降。

可抓取的翻页链接长什么样

最基础的一点:翻页入口必须以标准链接形式出现在服务器返回的 HTML 里。也就是说,蜘蛛在不执行 JavaScript 的情况下,也能从源码中读到指向下一页的地址。常见的失误是把翻页做成纯按钮,点击后由 JS 拼接参数并请求数据,源码里没有任何可跟随的地址。这样蜘蛛走完第一页后,后面的页面很难被自动发现。

可以保留按钮的交互,但同时在 HTML 中放一个普通的下一页链接作为兜底。例如列表底部出现“下一页”文字链接,或者用分页条输出第 1、2、3 页的链接。只要链接是静态可读的,蜘蛛就有路径可走。

分页参数的两种写法

分页通常有两种 URL 形态:一是查询参数,如 ?page=2;二是路径形式,如 /list/page/2/。两者都能被蜘蛛抓取,但要注意参数写法带来的边界问题。

  • 查询参数可能因为排序、筛选、会话等附加参数组合出大量变体,导致同一分页被重复发现。建议把无意义的参数去掉,只保留分页必需的那个。
  • 路径形式更干净,但改动时要做 301 跳转,避免新旧地址同时可访问。
  • 无论哪种形式,都要保证第 1 页有稳定入口,并且从第 1 页能一路链到最后一页,而不是只显示“上一页、下一页”。

无限滚动与“加载更多”怎么处理

无限滚动和点击“加载更多”对用户友好,但默认状态下不会产生新的可抓取 URL。常见做法是在滚动加载的同时,给每个分页生成一个静态地址,并在页面源码中保留分页链接。比如滚动到第 2 页时,地址栏可以更新为 ?page=2,同时 HTML 中依然有指向第 3 页的链接。这样用户不被打断,蜘蛛也有路可循。

关键不是禁止动态加载,而是不要让动态加载成为唯一的发现通道。

分页与 Sitemap 的配合

Sitemap 可以帮助声明分页地址,但它通常更适合作为补充,而不是替代内链。把分页全部塞进 Sitemap,并不会自动提高抓取优先级;更重要的是分页之间能否通过链接自然连通。实际操作中,可以只把重要的列表页或更新频繁的分页放进 Sitemap,同时确保列表页内部有稳定的翻页链接。

另外注意 Sitemap 中的分页地址应与站内链接一致,避免同一分页出现两个不同 URL,造成重复发现。

控制分页路径的深度

分页越往后,链接层级越深,蜘蛛到达的成本也越高。如果列表有几百页,从第 1 页一路“下一页”走到第 300 页并不现实。更实用的做法是:

  1. 在分页条中保留首尾页和当前页附近的页码,让蜘蛛可以跳跃前进。
  2. 对更新频繁的列表,考虑按时间或分类拆分,减少单个分页序列的长度。
  3. 确保详情页除了列表页外,还有其他入口,比如相关推荐、标签聚合或站内搜索产生的静态页。

容易被忽略的几处细节

  • 翻页链接不要加 nofollow,除非你确实不想让后续页面被发现。
  • 分页页的标题和描述可以保持简洁,但不要全部相同,至少让蜘蛛能区分页面主题。
  • 如果列表内容为空或只有一页,不要输出多余的翻页链接。
  • 服务器要稳定返回 200 状态,分页地址频繁 5xx 或超时,会让后续页面得不到发现机会。

分页序列本质上是站内的一条发现通道。把它做成可抓取、可连通、不产生大量重复地址的结构,比事后单独提交 URL 更省力。定期用抓取工具或日志核对翻页入口是否被走到,也能及时发现链接断掉或参数失控的问题。