很多站点的 URL 发现主力并不是 Sitemap,而是列表页和它的翻页。首页、栏目页、标签页把一批又一批链接交出去,蜘蛛顺着下一页往前走,深层页面才有机会入队。翻页结构出问题,往往不是某个页面抓不到,而是整段序列从某一页开始断掉。
翻页链接的几种写法
同样是翻页,蜘蛛看到的可抓取性差别很大。
- 静态 href 分页:每页都有形如 /list/page/3/ 或 ?page=3 的真实链接,蜘蛛可以并行抓取,也可以跳跃式取用。
- 只保留“下一页”:页面只有一条下一页链接,蜘蛛必须逐页前进,越靠后越难被发现,中断风险也更高。
- JS 点击加载:链接由脚本绑定,HTML 里没有 href,蜘蛛通常拿不到后续入口,除非有可访问的静态回退。
- 无限滚动:内容靠接口追加,URL 不变化,蜘蛛看到的基本只有第一屏。
翻页序列容易断在哪里
核对时优先看这几个位置。第一,页码跳转是否留了过渡:从第 3 页直接跳到第 10 页,中间的 URL 如果只在这两页之外出现,就会成为缺口。第二,分页链接是否在首屏 HTML 中,还是滚动后才插入 DOM。第三,翻页是否依赖 POST 或带会话参数的接口,这类地址通常不适合作为抓取入口。第四,空结果页和异常页是否返回 200,让蜘蛛把无内容页当成有效序列继续走。
核对方法
- 抓取日志里按分页路径前缀筛选,看第 1 页到第 N 页的抓取是否连续,哪一页开始没有记录。
- 随机抽几个深页 URL,反查站内有哪些入口能到达,确认是否只靠翻页这一条路。
- 用 HTML 站点地图页或分类索引页给深页补一条更短路径,减少对翻页序列的依赖。
- 检查分页链接的可点击性与 href 是否一致,避免脚本改写后蜘蛛拿到的是空值或 #。
翻页是发现路径,不是内容本身。它的作用是让 URL 进入队列,而不是靠页面上堆更多链接。
分页与抓取资源的取舍
分页往往会产生大量近似页面,尤其是排序、筛选、时间范围参数组合出来的地址。这类页面本身价值有限,却会占用抓取频次。常见的处理是:只保留主序列可分页,参数组合页用规范链接或 robots 规则收敛入口;对确实需要被发现的深页,用更稳定的入口替代参数翻页。
服务器响应与翻页体验
翻页请求通常较为密集,响应慢或偶发 5xx 时,蜘蛛容易降低这一段的抓取节奏,甚至中断当前序列。核对时可以看分页路径的响应码分布与平均响应时间,确认没有出现连续超时。稳定返回、内容完整,比追求单页加载速度更重要。
整体思路并不复杂:让翻页序列尽量短、链接尽量真实、入口尽量多元。做到这三点,深层 URL 被发现只是时间问题,并不需要额外的技巧去推动。