搜索抓取

列表页翻页:蜘蛛会沿着分页链接走到第几页

列表页是内容站发现详情页的重要入口,但很多站点的分页链接依赖脚本、被参数规则挡住或路径过深,蜘蛛往往只停在前几页。本文梳理常见分页写法、蜘蛛翻页时容易卡住的原因,以及内链、Sitemap 和服务器响应如何配合,让列表页深处的 URL 更容易被继续发现。

搜索抓取

列表页翻页:蜘蛛会沿着分页链接走到第几页

列表页是很多内容站最主要的 URL 出口。蜘蛛从栏目页、标签页或首页进入后,通常先看到第一页,再顺着分页链接往深处走。但实际抓取中,蜘蛛常常在第二页、第三页就停下。原因不一定是内容不重要,而是分页链接本身没有被蜘蛛顺利读到。

蜘蛛为什么会停在第一页

最常见的情况是分页链接由 JavaScript 生成。用户点击下一页时,脚本才去请求数据并更新列表,HTML 里并没有可以跟随的 a 标签。蜘蛛抓到的第一页源码里,只有第一页的详情链接。它能发现这些 URL,却不知道后面还有列表。

另一种情况是分页 URL 被参数规则挡住。比如 ?page=2、?paged=3 这类地址被 robots.txt 屏蔽,或者被 canonical 统一指向第一页。蜘蛛即使从别处看到分页地址,也可能判定不必单独抓取。

还有分页路径过深。第一页到第二十页之间没有其他入口,只有一条下一页链接,蜘蛛需要连续抓取二十次才能到达。中途如果某次请求超时或返回错误,链条就断了。

几种常见分页写法的抓取表现

  • 静态分页路径:如 /list/page/2/。路径清晰,HTML 里有 a 标签,蜘蛛容易顺着走。
  • 参数分页:如 ?page=2。能抓,但容易被重复内容规则影响,需要确认 canonical 和参数处理是否合理。
  • rel=next/prev:这是一种提示,不是强制指令。它不会保证蜘蛛翻页,也不能替代可点击链接。
  • 无限滚动和加载更多:对用户友好,对蜘蛛不友好。最好保留一个普通分页入口,或在首屏 HTML 里放足量链接。

让蜘蛛继续翻页的几个做法

第一,确保分页链接是服务器渲染的 a 标签。不要只写 onclick 或 data 属性,蜘蛛需要真实 href。第二,在第一页同时给出下一页和最后一页的链接。蜘蛛可以直接跳到末页,再从末页往前发现一批 URL,不必逐页爬完整条链。

第三,别把所有压力都放在分页上。重要内容如果只出现在第二十页之后,可以再通过分类页、专题页、站内推荐或相关阅读给出入口。多个入口意味着蜘蛛不必依赖一条长长的分页链。

第四,Sitemap 里可以放少量重要列表页,但不必把每一页分页都塞进去。分页地址数量可能很大,全放进去会稀释抓取重点。更实际的做法是保证列表页本身可抓,让蜘蛛自己决定翻到哪一页。

服务器响应和状态码也会影响翻页

分页请求通常要查数据库、做筛选、拼列表,响应时间比详情页更长。如果列表页加载慢,或者在高频抓取时返回 5xx、429,蜘蛛的翻页过程就会中断。列表页做缓存、限制单页条目数量、避免一次性查询过多数据,都有助于让分页请求更稳定。

还要注意分页地址在抓取时是否触发登录、验证码或风控。有些站点把列表页的频繁访问当成异常流量,结果蜘蛛还没翻到第三页就被拦住。这类情况需要从服务器日志和 WAF 规则两侧一起核对。

分页不是唯一的路

分页解决的是用户怎么浏览更多,抓取路径解决的是蜘蛛怎么发现 URL。两者目标不完全一样。如果列表页有几百页,与其想办法让蜘蛛翻完,不如用更短的内链结构把重要 URL 提到浅层。比如把热门内容聚合到专题页,把新内容放进首页或栏目首页的推荐位,把存档页按时间或分类拆开。

蜘蛛翻页的深度,往往取决于它从第一页能读到多少条可靠链接,以及每次请求是否顺利返回。

最后,定期看日志里分页 URL 的抓取记录。哪些页被频繁抓取,哪些页只抓过一次,哪些页返回了错误,这些信息比猜测更有用。根据记录调整链接位置、分页数量和缓存策略,通常比一次性改动全部模板更稳妥。