搜尋抓取

分頁與無限滚動:列表頁翻頁對 URL 發現的传導核對

列表頁是站内 URL 發現的主干道,翻頁連結却常被改造成 JS 加载或滚動触發。本文梳理传统分頁、無限滚動、查看全部三種形態的可發現性差异,给出用源碼检查、日誌观察、參數收敛来做核對的具体顺序,帮助定位翻頁路径断裂的位置。

搜尋抓取

分頁與無限滚動:列表頁翻頁對 URL 發現的传導核對

列表頁往往是站内 URL 發現的主干道:首頁给出几個栏目入口,栏目頁再逐條通向詳情頁。這條鏈條能不能走通,很大程度上取决于翻頁連結是不是以普通 a 标簽的形式出現在 HTML 里。不少站点在改版时把翻頁換成了 JavaScript 加载或滚動触發,入口還在、样式更顺眼,但抓取路径可能就断在了第二頁。

三種常见翻頁形態的可發現性

传统分頁連結

頁碼寫死在 HTML 中,href 携带分頁參數。蜘蛛解析第一頁时就能顺带拿到第 2 頁及之後的 URL,這是最稳的形態。核對时重点看三處:頁碼是不是真的 a 标簽;onclick 里有没有 return false 把預設跳轉截断;末尾几頁是否只渲染出“下一頁”而隐藏了數字頁碼。

無限滚動

内容随滚動動態插入,首屏 HTML 里通常只有前若干條。蜘蛛一般不执行滚動,也不會触發列表底部才出現的加载。如果站点只保留無限滚動,後續條目的 URL 很难從這條路径被發現。常见的兜底做法是在列表底部留一個普通的分頁入口,或者提供一個“查看全部”的静態頁面,让發現路径不依赖交互。

查看全部與合並頁

把整類條目塞進單個頁面,URL 數量少、發現路径短,但單頁体积和首字节時間會明顯上升,翻頁本身的價值被轉移到了渲染成本上。這類頁面的核對重点是响應大小與超时概率,而不是連結层級。

翻頁路径的核對顺序

  1. 在浏览器中禁用 JavaScript,打開栏目首屏,直接在源碼里找第二頁的連結。找不到,說明翻頁依赖脚本。
  2. 观察抓取日誌中第 2、3 頁的訪問频次,與第 1 頁做對比。若第 1 頁有稳定訪問而後續頁碼几乎為零,基本可以確認路径断裂。
  3. 检查分頁 URL 是否被 robots.txt 規則或頁面上的 meta robots noindex 挡在门外,這類配置在改版中容易被顺手加上。
  4. 查看翻頁是否叠加了額外參數,例如滚動位置、排序标记,導致同一頁出現大量 URL 變体。

容易踩的几個坑

  • 分頁連結用相對路径且大小寫不统一,同一頁出現多個地址。
  • 頁碼超出實际范围时仍返回 200 的空列表頁,形成可以無限增長的 URL 空間。
  • 第二頁起被统一加上 noindex,連結可以爬、頁面却無法進入後續處理。
  • 排序與篩選參數和分頁參數组合,變体數量被成倍放大,抓取资源被摊薄。
  • 尾斜杠、编碼方式不一致,同一列表在日誌中呈現為好几组 URL。

日常维護的健康清單

  • 核心栏目保留可点击的静態分頁連結,不依赖脚本渲染。
  • 超出最大頁碼的請求返回 404 而不是空列表。
  • 對無检索價值的篩選组合做收敛,避免參數自由增長。
  • 把列表頁纳入日誌观察范围,按周對比各頁的抓取分布。
翻頁不是装饰,它是 URL 發現鏈路上的一段路面。核對的目标不是让每一頁都被抓取,而是確認這條路径存在、可走,並且不會把资源引向没有邊界的地方。