搜索抓取

分页与无限滚动:列表页翻页对 URL 发现的传导核对

列表页是站内 URL 发现的主干道,翻页链接却常被改造成 JS 加载或滚动触发。本文梳理传统分页、无限滚动、查看全部三种形态的可发现性差异,给出用源码检查、日志观察、参数收敛来做核对的具体顺序,帮助定位翻页路径断裂的位置。

搜索抓取

分页与无限滚动:列表页翻页对 URL 发现的传导核对

列表页往往是站内 URL 发现的主干道:首页给出几个栏目入口,栏目页再逐条通向详情页。这条链条能不能走通,很大程度上取决于翻页链接是不是以普通 a 标签的形式出现在 HTML 里。不少站点在改版时把翻页换成了 JavaScript 加载或滚动触发,入口还在、样式更顺眼,但抓取路径可能就断在了第二页。

三种常见翻页形态的可发现性

传统分页链接

页码写死在 HTML 中,href 携带分页参数。蜘蛛解析第一页时就能顺带拿到第 2 页及之后的 URL,这是最稳的形态。核对时重点看三处:页码是不是真的 a 标签;onclick 里有没有 return false 把默认跳转截断;末尾几页是否只渲染出“下一页”而隐藏了数字页码。

无限滚动

内容随滚动动态插入,首屏 HTML 里通常只有前若干条。蜘蛛一般不执行滚动,也不会触发列表底部才出现的加载。如果站点只保留无限滚动,后续条目的 URL 很难从这条路径被发现。常见的兜底做法是在列表底部留一个普通的分页入口,或者提供一个“查看全部”的静态页面,让发现路径不依赖交互。

查看全部与合并页

把整类条目塞进单个页面,URL 数量少、发现路径短,但单页体积和首字节时间会明显上升,翻页本身的价值被转移到了渲染成本上。这类页面的核对重点是响应大小与超时概率,而不是链接层级。

翻页路径的核对顺序

  1. 在浏览器中禁用 JavaScript,打开栏目首屏,直接在源码里找第二页的链接。找不到,说明翻页依赖脚本。
  2. 观察抓取日志中第 2、3 页的访问频次,与第 1 页做对比。若第 1 页有稳定访问而后续页码几乎为零,基本可以确认路径断裂。
  3. 检查分页 URL 是否被 robots.txt 规则或页面上的 meta robots noindex 挡在门外,这类配置在改版中容易被顺手加上。
  4. 查看翻页是否叠加了额外参数,例如滚动位置、排序标记,导致同一页出现大量 URL 变体。

容易踩的几个坑

  • 分页链接用相对路径且大小写不统一,同一页出现多个地址。
  • 页码超出实际范围时仍返回 200 的空列表页,形成可以无限增长的 URL 空间。
  • 第二页起被统一加上 noindex,链接可以爬、页面却无法进入后续处理。
  • 排序与筛选参数和分页参数组合,变体数量被成倍放大,抓取资源被摊薄。
  • 尾斜杠、编码方式不一致,同一列表在日志中呈现为好几组 URL。

日常维护的健康清单

  • 核心栏目保留可点击的静态分页链接,不依赖脚本渲染。
  • 超出最大页码的请求返回 404 而不是空列表。
  • 对无检索价值的筛选组合做收敛,避免参数自由增长。
  • 把列表页纳入日志观察范围,按周对比各页的抓取分布。
翻页不是装饰,它是 URL 发现链路上的一段路面。核对的目标不是让每一页都被抓取,而是确认这条路径存在、可走,并且不会把资源引向没有边界的地方。