列表页的分页序列,是站点自己铺好的一条抓取路径。链条完整时,蜘蛛能从第一页逐页走到后面的条目;链条一断,深处的条目就只剩入口页那一根细线。很多站点抱怨“后面几页的内容总不被抓”,问题往往就出在分页这一步。
分页为什么会影响 URL 发现
蜘蛛没有“滚动加载”的概念,它只能沿着页面里实际存在的 href 前进。分页链接如果稳定出现在 HTML 源码里,每一页就是一个新入口,能把列表里成百上千条链接一级级带出去;如果分页链接只在滚动或点击后才由脚本生成,对蜘蛛来说第二页之后就不存在,后面的条目自然也没人替它们“打招呼”。
这也是分页常被视为抓取路径中继站的原因:它不只承载内容,还承担着向下一层传递链接的职责。
三类常见的分页断点
下一页按钮完全由脚本接管
有些列表用无限滚动或“加载更多”替代分页,滚动到底才开始请求数据接口。页面 HTML 里既没有指向第二页的 a 标签,也没有可推导的页码,蜘蛛拿到的是一份“到此为止”的文档。改进方向通常是保留一套静态可达的分页链接:要么在服务端渲染出下一页的 href,要么提供一条通往后续页面的常规入口。
只留上一页与下一页,没有数字序号
这种写法理论上仍能顺藤摸瓜,但效率取决于每一页是否都能稳定取到。如果中间某页因为偶发超时没被抓到,“下一页”链条就断在那里,后面的内容全部悬空。相比之下,数字序号页让每页都成为独立可达的入口,某一次失败不会造成整条链失效。两种方式可以并存:主推“下一页”,同时保留可直达的页码。
分页参数被规则或规范误伤
列表页常见的 ?page=2、?p=2、/page/2 等形态,容易被 robots.txt 的通用规则、链接上的 nofollow,或者指向第一页的规范标签误伤。规范标签若把所有分页都指向第一页,等于变相告诉搜索引擎这些页面可以忽略。核对时要逐项确认:分页 URL 未被封禁、未被统一规范到首页、没有被 JS 的 rel 属性阻断。
核对清单
- 分页链接是否出现在原始 HTML:关闭 JS 后查看源码,确认第二页之后仍有可点击的地址。
- 序号页能否直达:随便挑一个靠后的页码,直接访问看是否返回正常内容,而不是跳回第一页。
- 页码与内容是否一致:同一页码多次访问,条目顺序和数量是否稳定,避免出现随机排序导致的重复发现。
- 分页是否被规则阻断:检查 robots.txt、链接 nofollow、规范标签三处是否存在冲突。
- 末页与空结果页的处理:超出范围的页码应返回明确的 404 或 410,而不是 200 配空白页。
- 分页数量是否失控:筛选与排序组合过多时,应限制可被发现的组合数,避免路径被稀释。
服务器与响应层面的配套
分页请求数量大、规律性强,对服务器稳定性更敏感。翻页请求频繁超时或返回 5xx,会直接压低该目录的抓取强度,即便链接结构完好也走不动。建议把分页页面的响应时间控制在与普通列表页同一水平,并避免在大批量翻页时触发限流或验证码。
怎么验证效果
- 在抓取日志中统计分页 URL 的占比,观察第二页之后的请求量是否明显偏低或干脆为零。
- 用不带 JS 的抓取工具模拟访问,看能否从第一页依次走到第十页。
- 随机抽取几条深层条目,检查它们在站内是否还有其他入口,避免只依赖分页这一条路。
- 记录调整前后的日志变化,作为判断依据,而不是凭感觉下结论。
分页不是装饰,它是抓取路径的一部分。把分页当成入口来维护,深层条目的发现效率通常会出现可见的变化。