搜索抓取

分页、加载更多与无限滚动:列表页怎么把蜘蛛送到详情页

列表页是蜘蛛发现详情页的主要入口。本文对比传统分页、加载更多按钮和无限滚动三种方式在抓取上的差异,说明每屏链接数量、分页深度与参数收敛的取舍,并给出用服务器日志验证抓取路径是否走通的思路。

搜索抓取

分页、加载更多与无限滚动:列表页怎么把蜘蛛送到详情页

列表页承担了大部分 URL 发现

除了 Sitemap,蜘蛛发现新页面最依赖的就是列表页。首页、分类页、标签页、聚合页,这些能一次列出几十条链接的地方,构成了站点的主要抓取入口。问题在于,很多站点把列表页做得越来越“轻”——第一屏只放十几条,剩下的靠按钮和滚动加载,人看着顺滑,蜘蛛却可能一条都碰不到。

三种翻页方式,蜘蛛看到的东西不一样

传统分页

每页一个独立地址,如 /list?page=2,链接直接写在 HTML 里,蜘蛛顺着点就能一页页走下去。这是最稳的方式。要注意两点:一是分页页自身要有可抓的链接,不要让第 2 页只能通过第 1 页的脚本生成;二是分页页不要写 canonical 指向第 1 页,那等于告诉蜘蛛这几页“不算数”,后面的详情页入口也跟着被削弱。

加载更多按钮

按钮触发的通常是异步请求,返回的是数据而不是完整页面。蜘蛛不会去点按钮,所以按钮背后的那批链接对它是不可见的。常见的补救办法是给按钮配一个真实链接,比如“加载更多”同时是一个指向 /list?page=2 的 a 标签,脚本拦截点击,蜘蛛拿到的是可抓地址。这样人机两不误。

无限滚动

对蜘蛛最不友好。滚动到底部才加载的内容,在初始 HTML 里往往完全不存在。三种处理方式:一是提供分页降级,把 /list?page=n 作为真实可访问地址并在页面里留链接;二是把全部条目放进 Sitemap,让蜘蛛从另一条路找到;三是在底部放“查看全部”的入口。只靠无限滚动,等于把详情页的入口交给一个并不存在的点击动作。

每屏放多少条,不只是设计问题

列表页每屏的链接数量会影响抓取效率,但不是越多越好。

  • 首屏链接价值最高,重要的、更新频繁的条目尽量往上放;
  • 一页塞几百条链接容易稀释每个链接的站内信号,蜘蛛也未必都走;
  • 列表条目尽量用标题做锚文本,不要只放图片或只放按钮;
  • 把“下一页”做成文字链接并保持在固定位置,比用图标更容易被识别。

分页深度与翻页收敛

蜘蛛顺着分页往下走是有耐心的,但这个耐心有限。抓取深度越深,越靠后的页面被抓的概率越低。对内容量大的站点,可以考虑用时间归档、分类切分、标签聚合把长列表拆成多条浅路径,而不是一条几百页的分页链。另一头也要收敛:筛选参数、排序参数会组合出大量地址,尽量用 robots.txt 或参数处理规则把无意义的组合挡掉,让抓取花在真正的详情页上。

判断标准很简单:关掉脚本,用抓取工具或直接查看 HTML 源码,看看详情页链接还在不在。在,就是可抓的;不在,就得补一条路。

用日志验证路径是否通

改完之后别急着下结论。看服务器日志里蜘蛛访问列表页的频次,以及随后访问详情页的比例:如果蜘蛛只抓列表页、不往下走,说明链接没有被识别;如果一直停在第一页,说明分页入口有问题;如果反复抓同一批地址,说明去重或参数收敛没做好。把这几类信号对齐,列表页这条抓取路径基本就理顺了。