搜索抓取

列表页与分页:蜘蛛翻页时容易卡在哪

列表页承担着把蜘蛛引向详情页的主要任务,翻页路径一旦断裂或过度依赖脚本,蜘蛛就容易停在第一页。本文梳理路径式与参数式分页的写法、无限滚动的补救方式、分页深度与列表页内容厚度,以及服务器响应对翻页抓取的影响,并附一份自查清单。

搜索抓取

列表页与分页:蜘蛛翻页时容易卡在哪

一个站点里被蜘蛛抓得最多的页面,往往不是文章详情页,而是各类列表:栏目首页、分类页、标签页、搜索结果页以及分页。它们数量不多,却承担着把蜘蛛引向深层内容的任务。翻页路径一旦断了或者太绕,蜘蛛就很难继续往里走。

列表页是蜘蛛的主干道

从抓取路径的角度看,首页到栏目的链接、栏目到详情页的链接,构成了蜘蛛的主要行进路线。详情页之间通常互链很少,蜘蛛想发现新内容,多半得回到列表页。所以列表页的第一屏要足够稳定:链接是普通的 a 标签,href 指向真实可访问的 URL,而不是依赖点击脚本才生成。

翻页链接的几种写法

路径式分页

/list/page/2/ 这类写法每一页都是独立 URL,蜘蛛可以直接抓取,也方便做缓存与统计。需要注意的是页码不要无限生成,超出内容范围的页码应当返回明确的状态码或跳回列表首页,而不是渲染一个空列表。

参数式分页

?page=2 这类地址同样能被抓取,但同一套分页参数在不同栏目下含义要一致,不要一会儿从 0 开始,一会儿从 1 开始,否则容易产生大量语义重复的 URL。这类页面可以保持可抓取,同时用 canonical 指向规范形式,减少同一内容被反复处理。

无限滚动与加载更多按钮

如果翻页完全由滚动或按钮触发,且没有对应的 URL 变化,蜘蛛在 HTML 里看不到后续链接。常见的补救方式是保留一套可抓取的分页地址,让滚动加载只是前端体验的增强。

核心判断标准其实只有一个:HTML 源码里有没有指向下一页的普通链接。

列表页本身不要太薄

有些列表页只有标题和时间,摘要、封面、分类信息一概没有,内容体量与详情页相差很大,蜘蛛对这类页面的重抓意愿通常不高。适当保留摘要和结构化信息,既方便用户浏览,也让列表页本身有被索引的价值。

给蜘蛛留出口的几个做法

  • 分页序列保持连续,不要出现第 1 页有第 2 页链接、第 2 页却只链回第 1 页的断点。
  • 列表底部可以放几个相关分类或热门链接,作为翻页之外的补充路径。
  • 页码深度比较大的栏目,可以考虑拆成多个子列表,避免所有内容都挤在一条翻页链上。
  • 避免用 200 状态码返回空列表,出错时用明确的状态码表达。

服务器层面的影响

翻页请求往往集中在同一段时间,数据库压力比详情页更集中。如果列表页响应慢或间歇性超时,蜘蛛容易在中途停下,后续页码就不会被抓到。缓存列表页、限制单次返回条数、把排序和筛选逻辑做得更轻,都是顺手能做的优化。

列表页不只是给用户看的门面,也不只是给蜘蛛看的目录,它更像一条路。路要通、要连续,蜘蛛才走得下去。

怎么自己检查一遍

  1. 关掉 JavaScript,看列表页能否用鼠标点到下一页。
  2. 用抓取工具模拟蜘蛛访问栏目首页,确认返回的是完整 HTML。
  3. 抽查第 5 页、第 10 页,确认状态码、canonical 与内容都正常。
  4. 对照服务器日志,看蜘蛛是否只停在第一页,后续页码几乎没有请求。

这些检查不需要复杂工具,重点是把自己当成沿着链接一步步走的蜘蛛,看看这条路从哪一页开始走不通。