搜索抓取

分页与加载更多:列表页如何把详情 URL 交给搜索蜘蛛

列表页是详情页 URL 的重要发现入口。传统分页、加载更多、无限滚动对抓取路径影响不同。本文从翻页链接可抓取、分页参数收敛、加载更多补入口、Sitemap 与内链分工、服务器响应和日志核对几个方面,整理列表页抓取入口的检查思路,帮助减少无效翻页和漏抓。

搜索抓取

分页与加载更多:列表页如何把详情 URL 交给搜索蜘蛛

列表页通常是详情页 URL 被发现的第一站。搜索蜘蛛顺着列表中的链接往下走,能拿到多少详情地址、翻页是否顺畅、加载更多是否可抓,都会影响抓取路径的完整度。与其只看 Sitemap 提交了多少 URL,不如回到列表页,核对它实际递出了哪些入口。

翻页链接要能被直接抓取

传统分页不该依赖 JavaScript 点击。如果翻页地址写在 href 里,蜘蛛可以逐页跟进;如果只是按钮绑定事件,抓取路径容易在第二页断掉。核对时可以在关闭脚本的环境下查看列表页,确认下一页、页码链接是否仍然存在。

  • 页码链接使用可解析的 URL,例如 /list?page=2 或 /list/page/2。
  • 不要用 nofollow 屏蔽翻页,除非该分页确实不需要被抓取。
  • 最后一页之后不要返回 200 空列表,容易形成空入口。

加载更多与无限滚动需要补入口

点击加载更多、滚动加载的列表,详情链接往往在脚本执行后才出现。蜘蛛可能只看到首屏若干条。可以保留一个可抓取的“查看更多”链接,指向下一批数据;或者把加载更多对应的接口地址转成静态分页,供抓取使用。

如果页面必须依赖脚本,至少保证首屏链接是 HTML 中直接存在的,并给后续批次留一个普通链接入口。

分页参数要收敛,避免重复发现

同一个列表可能通过 page、offset、start、last_id 等多个参数组合访问。参数越多,蜘蛛可能把同一批内容当成不同页面反复抓取。建议固定一种分页命名,其他旧参数做 301 到规范地址,并在日志里观察哪些参数被高频访问。

  1. 确定主分页参数,例如 page。
  2. 排序、筛选参数只保留必要维度,避免与分页组合出大量 URL。
  3. 对空结果页、超出范围页返回 404 或 410,不要让它们参与抓取队列。

Sitemap 与内链的分工

Sitemap 适合提交详情页、栏目页的规范地址,但它不能替代列表页的抓取路径。列表页负责让蜘蛛按站内结构发现新内容,Sitemap 负责补充入口较深或更新频繁的地址。两者都指向同一批 URL 时,要保持规范地址一致,避免参数版和静态版混用。

  • 列表页链接:负责日常发现和更新信号。
  • Sitemap:负责兜底提交和批量核对。
  • 日志:负责验证两者是否都被抓取,以及抓取是否落到同一规范地址。

服务器响应影响翻页节奏

列表页抓取通常呈批量连续请求。如果服务器响应变慢,蜘蛛可能降低翻页速度,甚至只抓前几页就离开。检查日志时,可以把列表页请求按时间窗聚合,观察响应时间、状态码和翻页深度是否同步变化。持续 5xx 或长时间高延迟,会让抓取路径变短。

用日志核对列表到详情的链路

在日志中筛选列表页地址,看蜘蛛实际访问了哪些页码,再对照详情页日志,判断哪些详情 URL 是从列表页被发现的。重点看三件事:翻页是否连续、详情链接是否被跟进、空列表是否仍返回 200。发现断点后,优先修链接和状态码,而不是反复提交 Sitemap。

  • 翻页连续:从第 1 页到第 N 页的请求是否均匀出现。
  • 详情跟进:列表页抓取后,是否出现对应详情页请求。
  • 异常状态:空列表、越界页码是否返回 200。

把列表页当作 URL 发现的第一入口来维护,比只盯着抓取总量更有用。翻页链接可抓、加载更多有补位、分页参数收敛、服务器稳定,再配合 Sitemap 和日志核对,就能让详情页 URL 的发现路径更清楚。