列表頁往往是站内 URL 發現的主干道:首頁给出几個栏目入口,栏目頁再逐條通向詳情頁。這條鏈條能不能走通,很大程度上取决于翻頁連結是不是以普通 a 标簽的形式出現在 HTML 里。不少站点在改版时把翻頁換成了 JavaScript 加载或滚動触發,入口還在、样式更顺眼,但抓取路径可能就断在了第二頁。
三種常见翻頁形態的可發現性
传统分頁連結
頁碼寫死在 HTML 中,href 携带分頁參數。蜘蛛解析第一頁时就能顺带拿到第 2 頁及之後的 URL,這是最稳的形態。核對时重点看三處:頁碼是不是真的 a 标簽;onclick 里有没有 return false 把預設跳轉截断;末尾几頁是否只渲染出“下一頁”而隐藏了數字頁碼。
無限滚動
内容随滚動動態插入,首屏 HTML 里通常只有前若干條。蜘蛛一般不执行滚動,也不會触發列表底部才出現的加载。如果站点只保留無限滚動,後續條目的 URL 很难從這條路径被發現。常见的兜底做法是在列表底部留一個普通的分頁入口,或者提供一個“查看全部”的静態頁面,让發現路径不依赖交互。
查看全部與合並頁
把整類條目塞進單個頁面,URL 數量少、發現路径短,但單頁体积和首字节時間會明顯上升,翻頁本身的價值被轉移到了渲染成本上。這類頁面的核對重点是响應大小與超时概率,而不是連結层級。
翻頁路径的核對顺序
- 在浏览器中禁用 JavaScript,打開栏目首屏,直接在源碼里找第二頁的連結。找不到,說明翻頁依赖脚本。
- 观察抓取日誌中第 2、3 頁的訪問频次,與第 1 頁做對比。若第 1 頁有稳定訪問而後續頁碼几乎為零,基本可以確認路径断裂。
- 检查分頁 URL 是否被 robots.txt 規則或頁面上的 meta robots noindex 挡在门外,這類配置在改版中容易被顺手加上。
- 查看翻頁是否叠加了額外參數,例如滚動位置、排序标记,導致同一頁出現大量 URL 變体。
容易踩的几個坑
- 分頁連結用相對路径且大小寫不统一,同一頁出現多個地址。
- 頁碼超出實际范围时仍返回 200 的空列表頁,形成可以無限增長的 URL 空間。
- 第二頁起被统一加上 noindex,連結可以爬、頁面却無法進入後續處理。
- 排序與篩選參數和分頁參數组合,變体數量被成倍放大,抓取资源被摊薄。
- 尾斜杠、编碼方式不一致,同一列表在日誌中呈現為好几组 URL。
日常维護的健康清單
- 核心栏目保留可点击的静態分頁連結,不依赖脚本渲染。
- 超出最大頁碼的請求返回 404 而不是空列表。
- 對無检索價值的篩選组合做收敛,避免參數自由增長。
- 把列表頁纳入日誌观察范围,按周對比各頁的抓取分布。
翻頁不是装饰,它是 URL 發現鏈路上的一段路面。核對的目标不是让每一頁都被抓取,而是確認這條路径存在、可走,並且不會把资源引向没有邊界的地方。