列表页是站内链接最密集的地方,最新内容、栏目页、标签页往往都靠它把链接分发出去。但分页经常被处理得很随意:有的站第二页开始就没有链接入口,有的用脚本拼接,有的干脆把翻页做成参数无限延伸。结果是内容明明存在,抓取路径却断了。
先搞清楚分页的几种形态
同样是“下一页”,实现方式不同,对抓取的影响也不同。
- 数字页码:/list/2、/list/3,URL 独立、可直达,最容易被发现,也最容易失控——如果没有上限,页码会无限膨胀。
- 上一页 / 下一页:只暴露相邻页,链路存在但深度线性增长,越靠后的内容越难走到。
- 点击加载更多:按钮触发接口返回数据。如果返回的是链接,蜘蛛还有机会;如果只是拼接 DOM,基本等于没有链接。
- 无限滚动:滚动到底部才加载,抓取工具通常不会滚动,需要配合“查看全部”或分页入口做兜底。
第二页之后,链接要真的存在
核心原则很简单:分页的目标是让蜘蛛用一次点击就能到达下一批内容,那么下一页的地址就应该以 a 标签 href 的形式出现在 HTML 里。常见的几个坑:
- 把翻页做成点击事件,href 为空或写成 javascript:;
- 按钮禁用状态也渲染成链接,指向同一个地址,形成一堆重复入口;
- 用带会话信息的地址翻页,同一批内容产出无数 URL;
- 翻页链接只在特定条件下才输出。
把 href 补上,成本很低,收益却直接体现在抓取覆盖率上。
翻页 URL 该怎么收敛
分页本身不是坏事,问题在于 URL 形态是否可控。
- 路径式优于参数式:/list/page/2 比 /list?p=2 更直观,也更好在日志里统计。
- 页码要有边界:翻到没有内容的页码时,返回 404 或跳回最后一页,别让空页一直可访问。
- 避免参数叠加:分页加排序、再加筛选,很容易生成成千上万个近似页面,这类组合建议收敛成固定入口。
- canonical 指向自身:第 2 页就是第 2 页,不要把它指向第 1 页,那会让整批列表内容失去独立身份。
分页页面的定位是“通往内容的通道”,不是要被当作独立内容去竞争。把通道修好,别指望它自己去拿流量。
和栏目页、标签页的配合
分页通常出现在栏目页、标签聚合页和站内搜索结果页。前两者是站内重要的抓取入口,值得保留可抓取的分页链;站内搜索结果页一般不建议开放抓取,容易产出大量近似地址,也会稀释抓取额度。如果确实需要,至少限制参数组合,并考虑加 noindex。
另外,分页只是“向后延伸”的路径,栏目第一页仍应承担主要链接分发:把最新、最重要的内容放在显眼位置,并确保它们都能从这里点到,而不是全部沉到第 8 页以后。
日常检查清单
- 翻页链接是否都是可抓取的 a 标签,带真实 href;
- 随机抽查第 2 页、第 5 页、最后一页,确认页面有内容、状态码正常;
- 日志里翻页 URL 的抓取频次是否异常,是否存在大量返回 200 的空页;
- 排序、筛选参数与分页叠加时,是否会生成无上限的 URL;
- 移动端与桌面端的分页入口是否一致。
分页不产生新内容,但它决定了内容能不能被走到。把它当成站点结构的一部分来维护,比事后补内链省力得多。