很多站点的 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 被發現只是時間問题,並不需要額外的技巧去推動。