搜索抓取

分页链接与抓取:蜘蛛会翻到第几页,又从哪里继续

列表页分页是蜘蛛进入深层内容的主要通道。本文梳理路径式、参数式、按钮式与无限滚动几种分页形态在抓取上的差别,说明翻页深度衰减、列表页重复度与空结果页带来的消耗,并给出控制可翻页深度、收敛参数噪声、保留详情页回链等可落地的做法。

搜索抓取

分页链接与抓取:蜘蛛会翻到第几页,又从哪里继续

列表页的分页,是蜘蛛从栏目入口走向深层内容的主要通道之一。它决定了一个栏目里有多少条内容有机会被抓到,也决定了蜘蛛在每个列表页上要花多少时间。围绕分页做处理,本质上是让蜘蛛走得动、也走得值。

分页链接的常见形态

同样是翻页,蜘蛛拿到的路径可能完全不同:

  • 路径式:/list/page/2/ 这类地址最容易识别,也便于在日志里按前缀区分。
  • 参数式:?page=2 或 ?p=2,可以抓,但要留意参数顺序、大小写和附加参数组合出的近似 URL。
  • 按钮式:用井号锚点或纯 JS 绑定点击事件的“下一页”,不产生新的可抓 URL,蜘蛛一般不会跟进。
  • 无限滚动:滚动或点击后才出现的内容,如果没有对应的分页地址,后续条目通常只能靠 Sitemap 或详情页内链被发现。

蜘蛛沿分页往下走时会遇到什么

分页不是一条无限延伸的通道,实际抓取中常见的约束有几类:

  • 深度衰减:页码越靠后,被访问的频率通常越低。第二、三页还算常客,第二十页之后往往很久才来一次。
  • 重复度:列表页之间的标题、摘要高度相似,容易被判断为低价值页面,停留时间随之缩短。
  • 抓取预算:一个栏目如果有几百页分页,全部走一遍会占掉相当一部分配额,挤压其他页面的机会。
  • 空结果页:翻到超出内容范围的页码,若仍返回 200 的空列表,会白白消耗抓取次数。

让分页既好抓又不失控

  1. 保留真实链接:翻页用普通超链接指向可访问的 URL,而不是只靠 JavaScript 事件。视觉上仍然可以做成按钮样式。
  2. 控制可翻页深度:把页码收在一个合理范围,例如只保留最近若干页;更早的内容交给归档页、Sitemap 或站内搜索入口去发现。
  3. 处理空结果页:超出范围时返回 404 或 410,或者干脆不输出下一页链接;也可以用 noindex 让页面保留在站内但不出现在索引中,不过 noindex 并不能减少抓取。
  4. 用 canonical 收敛参数噪声:排序、筛选、视图切换等参数组合出的页面,指定规范地址,减少同一批内容被当成几十个页面来抓。
  5. 详情页回链列表页:在文章底部给出返回栏目、上一篇或下一篇,让蜘蛛从深层页面还能回到主干,不至于停在叶子节点。

无限滚动与“加载更多”

这两种交互对用户体验不错,但对抓取并不友好:内容藏在滚动或点击之后,HTML 里没有对应 URL。折中做法是保留一套可访问的分页地址,把无限滚动当作前端增强;或者在页面中放一个指向查看更多、下一页的常规链接,让蜘蛛有路可走。

关于 rel=next 与 rel=prev:它们曾被用来标记分页序列,后来主流搜索引擎公开说明不再将其作为索引信号使用。保留它们通常没有坏处,但不要指望靠这两个标签解决分页抓取问题,真正的入口仍然是页面里的可点击链接。

怎么验证分页有没有被抓

  • 在服务器日志里按路径前缀过滤,看分页地址的请求分布,重点关注最深的页码。
  • 观察列表页的响应时间,分页查询如果很慢,蜘蛛的抓取节奏也会被拖累。
  • 对比 Sitemap 里提交的详情页数量与实际被抓数量,判断是分页深度不够,还是别的地方卡住了。
分页处理的目标不是让蜘蛛把每一页都抓一遍,而是让它在有限的次数里拿到更值得收录的内容。把可走的路径留给蜘蛛,把重复和空转挡在门外,通常比单纯追求翻得更深更有用。