搜索抓取

翻页链接与 URL 发现:蜘蛛在第 2 页之后会怎么走

列表页是站内 URL 最密集的地方,分页结构直接决定蜘蛛能顺着链接走多远。本文说明独立分页、点击加载更多、无限滚动三种写法对 URL 发现的影响,列出上线前的检查点,并解释为什么把分页 canonical 全指向第 1 页会截断抓取路径。

搜索抓取

翻页链接与 URL 发现:蜘蛛在第 2 页之后会怎么走

列表页往往是站内 URL 密度最高的地方。一个栏目翻到第 20 页,背后可能对应上千条详情页地址。蜘蛛能不能走到这些地址,很大程度取决于第 1 页里有没有留下一条它能顺着往下走的路。

分页在 URL 发现里的位置

典型的抓取路径是:首页 → 栏目页 → 列表第 1 页 → 详情页。第 1 页承担两件事:把当前页的详情 URL 交出去,以及把“下一页”这条通道留出来。如果第二步断了,后面的分页和详情页就只能靠 Sitemap 或外链兜底,发现速度会明显慢下来,更新也不容易被及时看到。

三种翻页写法的差别

独立 URL 的分页

每一页都有自己的地址,比如 ?page=2 或 /list/page/2/ 这类形式,HTML 里用 a 标签指向下一页,蜘蛛顺着链接逐页推进。这是最容易被抓取的结构,也是排查问题最简单的结构——日志里能直接看到第几页被请求过。

点击加载更多

初始 HTML 里通常只放一个按钮,后续内容由脚本请求返回。这类结构对 URL 发现不够友好:按钮本身往往不是链接,蜘蛛不一定会去触发它。可行的做法是给“加载更多”配一个可点击的普通地址,或者在列表底部保留一组静态分页链接作为兜底。

无限滚动

用户滚动时自动加载,页面上没有明确的分页地址。即使把详情页都放进 Sitemap,列表页之间缺少连接关系,重访和更新发现的效率依然会打折。常见补救方式是在滚动区域下方补一段可爬的分页链接。

上线前值得逐条过的检查点

  • 第 1 页的 HTML 源码里,能找到指向第 2 页的可点击 a 链接,而不是只有 onclick 或 javascript 伪协议。
  • 分页地址是稳定、可复现的,不要带随机会话参数或时间戳。
  • 分页页面的 canonical 指向自身,不要整站统一指回第 1 页。
  • 第 2 页之后的 title 和描述可以简化,但正文列表要能正常返回内容,不要返回空壳页面。
  • 列表页如果暂时不希望被索引,用 noindex 时保留 follow,避免把通往下一步的链接一起掐掉。
  • 筛选、排序、日历这类会生成组合地址的功能,给一个明确的页数或参数上限,别让 URL 无限增殖。
  • 移动端和 PC 端的分页结构保持一致,避免只有一端可爬。
  • 分页页面的响应时间留出余量,第 1 页加载缓慢会直接影响后续页的抓取节奏。

一个常见的坑:canonical 全指向第 1 页

有些站点为了处理“分页内容重复”,把第 2 页到第 N 页的 canonical 全部写回第 1 页。结果是蜘蛛每走到一条分页链接,都被告诉“真正的地址是第 1 页”,后续页面的收录和路径延续都会受影响。更稳妥的做法是让每页 canonical 指向自身,只在确实存在等价地址(例如排序参数不同但内容完全一致)时才做归一。

怎么在日志和后台里验证

在服务器日志里筛一下对分页地址的请求,看看第 1 页之外的页有没有被访问、访问频率如何。如果日志里始终只有第 1 页,再回头检查链接是否可爬、canonical 是否写错、页面是否返回了空内容。搜索控制台里的已发现未编入索引、抓取统计中的响应分布,也能从侧面反映分页地址有没有被正常读到。

分页不只是浏览体验问题,它同时是站内最密集的一条 URL 发现通道。把这条通道留通,后面的详情页才有被发现的机会。

分页结构不需要做得很复杂。可爬的链接、稳定的地址、自指的 canonical,再加一个合理的页数上限,通常就能让抓取路径顺利延续到列表深处。