列表頁的分頁序列,是站点自己铺好的一條抓取路径。鏈條完整时,蜘蛛能從第一頁逐頁走到後面的條目;鏈條一断,深處的條目就只剩入口頁那一根细线。很多站点抱怨“後面几頁的内容總不被抓”,問题往往就出在分頁這一步。
分頁為什么會影响 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 的抓取工具模拟訪問,看能否從第一頁依次走到第十頁。
- 随机抽取几條深层條目,检查它們在站内是否還有其他入口,避免只依赖分頁這一條路。
- 记錄調整前後的日誌變化,作為判断依據,而不是凭感觉下结论。
分頁不是装饰,它是抓取路径的一部分。把分頁当成入口来维護,深层條目的發現效率通常會出現可见的變化。