搜索抓取

分页与蜘蛛:列表页翻到第几页,抓取价值开始下降

列表页分页是最容易失控的一类抓取路径:链接一路延伸,内容增量却越来越低。本文从分页深度、翻页链接位置、参数化变体和深分页的服务器开销几个角度,说明怎么给蜘蛛一条有终点的路径,把抓取预算留给真正有内容的页面。

搜索抓取

分页与蜘蛛:列表页翻到第几页,抓取价值开始下降

列表页的分页是一类特殊的 URL 集合:由同一套模板生成,内容高度相似,数量却可能成百上千。蜘蛛沿链接往下翻并不费力,真正的问题是这些 URL 里有多少值得抓。

蜘蛛翻页和用户翻页是两件事

用户翻到第三页还没找到想要的内容,会换个关键词;蜘蛛没有这种偏好,它只按链接走。如果每一页都挂着指向下一页的链接,路径就会一直延伸,抓取预算被摊薄到大量低差异页面上。

所以判断分页问题,不看蜘蛛翻了多少页,而看每一页相对前一页新增了多少可索引内容。

分页深度到什么位置开始失效

  • 前几页:通常包含最新、最热的内容,也和其他入口页互相链接,值得保留。
  • 中间页:如果列表项只是同一批内容的重新排序,增量很低。
  • 深分页:不少站点的第五十页之后基本没有新链接,只剩模板和空壳。

比较稳妥的做法是把分页当成一条有终点的走廊:到某个深度后收口,而不是无限延伸。常见的收口方式是限制可翻页的总数,或者把深分页改成独立入口,让它不参与默认的抓取路径。

路径式分页与参数式分页

形如 /list/page/2/ 的路径式分页容易被识别和统计;而 /list?page=2&sort=xx 这类参数分页,容易和排序、筛选参数组合出大量 URL。如果同一批内容能通过多种参数组合到达,蜘蛛会重复走很多遍。把默认排序之外的分页组合明确标记为 noindex,或在 robots.txt 中限制,通常比放任其自然增长更可控。

另外,rel 的 next、prev 标注早已不是主流搜索引擎的索引信号,写上不会带来额外收益,但作为给蜘蛛的一条路径提示仍然无害。真正决定路径的,是页面里可以点击的链接。

翻页链接放哪儿,蜘蛛就走到哪儿

分页链接的位置决定了蜘蛛能否顺利往下走。底部只有一个箭头图标、没有文字链接时,部分抓取环境可能读不到;用脚本点击生成下一页、地址栏不变的情况,则等于把路径截断。

  • 用真实的 a 标签指向下一页的固定 URL。
  • 页码链接给出明确锚文本,不要只写数字。
  • 首页、末页、上一页、下一页都提供链接,方便回退。

深分页是服务器的慢查询重灾区

列表页越深,分页查询越慢,渲染时间越长。响应变慢时,蜘蛛的抓取节奏会跟着调整,深分页往往是第一批被放弃的 URL。与其等到服务器扛不住,不如提前限制最大页数,把基于大偏移量的分页查询换成基于游标的翻页,同时改善用户加载和抓取体验。

分页的终点不该由模板决定,而应由内容增量决定:翻到没有新东西的那一页,就该停下。

落地检查

  1. 看看最常见的列表模板最深能翻到第几页,最后一页是否还有独有链接。
  2. 确认翻页链接是真链接,而不是点击事件或滚动加载。
  3. 把排序、筛选参数产生的分页变体收进可控范围。
  4. 观察蜘蛛对深分页的抓取比例,如果抓取高但收录有限,说明预算花得不太值。

分页不是要全部砍掉,而是让蜘蛛沿着一条清晰、有终点的路径走,把注意力留给真正有内容的页面。