对多数站点来说,蜘蛛发现新 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 适合作为补充入口,承接那些确实进不了浅层链接的页面。
落地检查清单
- 用查看源代码或关闭 JS 的方式,确认翻页链接是否真的写在 HTML 里;
- 检查分页地址是否稳定、可重复访问,不依赖会过期的会话参数;
- 确认列表条目是直连详情页,而不是先跳一次中转地址;
- 分页的 canonical 指向自身,不要把各页码都指向第一页;
- 在服务器日志里搜 page=2、page=3 或 /page/,确认蜘蛛是否真的翻过页;
- 对需要深翻的列表,考虑按时间、分类或字母切分出更细的入口。
一个容易被忽略的细节
如果列表页本身高度雷同,只有标题和缩略图,蜘蛛对这类页面的抓取价值判断会偏低,翻页的动力也会跟着下降。适当补充摘要、发布时间、分类说明,让每一页之间有点差异,是成本较低的改善方式。改完之后观察日志里抓取分布的变化,比凭感觉判断更可靠。
分页要解决的从来不是“让蜘蛛多抓”,而是保证内容的到达路径真实存在。把翻页链接做实,把重要 URL 放在浅层,用 Sitemap 兜底,剩下的交给站点自身的更新节奏。