搜索抓取

列表页翻到第几页:分页与“加载更多”如何改变蜘蛛的抓取路径

从列表第一页往下翻,是蜘蛛发现内容最常见的路径,但分页链接写在哪、加载更多是真链接还是 JS 按钮、无限滚动是否留了替代入口,都会让蜘蛛停在不同位置。本文梳理分页抓取的常见断点,并给出让后续页仍可被发现的实操做法。

搜索抓取

列表页翻到第几页:分页与“加载更多”如何改变蜘蛛的抓取路径

对多数站点来说,蜘蛛发现新 URL 的第一入口是列表页。它拿到第一页,沿着页面上的 a 标签继续往下走,走到第二页、第三页,这是最自然的一条路径。所以“下一页”这个链接是否真实存在于 HTML 里,直接决定了蜘蛛能不能顺着走。

蜘蛛翻页靠的是什么

它不点按钮,也不滚动鼠标。蜘蛛只认两样东西:页面源码里可解析的链接,以及这些链接指向的地址能不能正常返回内容。凡是需要用户交互才会出现的地址,默认都不在它的路径上。

三种常见的分页实现

传统页码链接

  • 地址形如 /list/?page=2 或 /list/page/2/,可重复访问;
  • “下一页”写成 a href,蜘蛛能一页页跟下去;
  • 页码数量多时,深层页的抓取频率通常明显下降。

“加载更多”按钮

如果按钮只是 div 加一段 JS 事件,首次渲染的 HTML 里没有任何指向第二页的地址,蜘蛛就看不到后续内容。把按钮改成 a href 指向真实分页地址,再用 JS 拦截点击做无刷新体验,是相对稳妥的折中。

无限滚动

无限滚动对用户友好,对蜘蛛基本只暴露第一屏。常见做法是在滚动区域底部保留一个“查看全部”的普通链接,或提供 /list/page/N/ 形式的静态分页,作为蜘蛛的替代通道。

rel="next" 与 rel="prev" 已经不是抓手

主流搜索引擎早已不再把 rel="next"/"prev" 当作分页信号,也不保证依据它发现链接。分页结构需要靠真实的 a 标签和可访问的 URL 来表达,而不是靠标记暗示。

分页越深,被走到的概率越低

列表翻到十几页、二十几页之后,蜘蛛回访的密度通常会降下来,这是资源分配的正常结果。与其指望它翻到底,不如把重要内容往浅层放:分类页、聚合页、相关文章模块、站内推荐,都能把深层 URL 提到更浅的位置。Sitemap 适合作为补充入口,承接那些确实进不了浅层链接的页面。

落地检查清单

  1. 用查看源代码或关闭 JS 的方式,确认翻页链接是否真的写在 HTML 里;
  2. 检查分页地址是否稳定、可重复访问,不依赖会过期的会话参数;
  3. 确认列表条目是直连详情页,而不是先跳一次中转地址;
  4. 分页的 canonical 指向自身,不要把各页码都指向第一页;
  5. 在服务器日志里搜 page=2、page=3 或 /page/,确认蜘蛛是否真的翻过页;
  6. 对需要深翻的列表,考虑按时间、分类或字母切分出更细的入口。

一个容易被忽略的细节

如果列表页本身高度雷同,只有标题和缩略图,蜘蛛对这类页面的抓取价值判断会偏低,翻页的动力也会跟着下降。适当补充摘要、发布时间、分类说明,让每一页之间有点差异,是成本较低的改善方式。改完之后观察日志里抓取分布的变化,比凭感觉判断更可靠。

分页要解决的从来不是“让蜘蛛多抓”,而是保证内容的到达路径真实存在。把翻页链接做实,把重要 URL 放在浅层,用 Sitemap 兜底,剩下的交给站点自身的更新节奏。