列表頁是站内連結最密集的地方,最新内容、栏目頁、标簽頁往往都靠它把連結分發出去。但分頁经常被處理得很随意:有的站第二頁開始就没有連結入口,有的用脚本拼接,有的干脆把翻頁做成參數無限延伸。结果是内容明明存在,抓取路径却断了。
先搞清楚分頁的几種形態
同样是“下一頁”,實現方式不同,對抓取的影响也不同。
- 數字頁碼:/list/2、/list/3,URL 獨立、可直達,最容易被發現,也最容易失控——如果没有上限,頁碼會無限膨胀。
- 上一頁 / 下一頁:只暴露相邻頁,鏈路存在但深度线性增長,越靠後的内容越难走到。
- 点击加载更多:按钮触發接口返回資料。如果返回的是連結,蜘蛛還有机會;如果只是拼接 DOM,基本等于没有連結。
- 無限滚動:滚動到底部才加载,抓取工具通常不會滚動,需要配合“查看全部”或分頁入口做兜底。
第二頁之後,連結要真的存在
核心原則很简單:分頁的目标是让蜘蛛用一次点击就能到達下一批内容,那么下一頁的地址就應该以 a 标簽 href 的形式出現在 HTML 里。常见的几個坑:
- 把翻頁做成点击事件,href 為空或寫成 javascript:;
- 按钮禁用狀態也渲染成連結,指向同一個地址,形成一堆重复入口;
- 用带會话信息的地址翻頁,同一批内容产出無數 URL;
- 翻頁連結只在特定條件下才輸出。
把 href 补上,成本很低,收益却直接体現在抓取覆盖率上。
翻頁 URL 该怎么收敛
分頁本身不是坏事,問题在于 URL 形態是否可控。
- 路径式優于參數式:/list/page/2 比 /list?p=2 更直观,也更好在日誌里統計。
- 頁碼要有邊界:翻到没有内容的頁碼时,返回 404 或跳回最後一頁,別让空頁一直可訪問。
- 避免參數叠加:分頁加排序、再加篩選,很容易生成成千上萬個近似頁面,這類组合建议收敛成固定入口。
- canonical 指向自身:第 2 頁就是第 2 頁,不要把它指向第 1 頁,那會让整批列表内容失去獨立身份。
分頁頁面的定位是“通往内容的通道”,不是要被当作獨立内容去竞争。把通道修好,別指望它自己去拿流量。
和栏目頁、标簽頁的配合
分頁通常出現在栏目頁、标簽聚合頁和站内搜尋结果頁。前两者是站内重要的抓取入口,值得保留可抓取的分頁鏈;站内搜尋结果頁一般不建议開放抓取,容易产出大量近似地址,也會稀释抓取額度。如果确實需要,至少限制參數组合,並考虑加 noindex。
另外,分頁只是“向後延伸”的路径,栏目第一頁仍應承担主要連結分發:把最新、最重要的内容放在顯眼位置,並确保它們都能從這里点到,而不是全部沉到第 8 頁以後。
日常检查清單
- 翻頁連結是否都是可抓取的 a 标簽,带真實 href;
- 随机抽查第 2 頁、第 5 頁、最後一頁,確認頁面有内容、狀態碼正常;
- 日誌里翻頁 URL 的抓取频次是否異常,是否存在大量返回 200 的空頁;
- 排序、篩選參數與分頁叠加时,是否會生成無上限的 URL;
- 移動端與桌面端的分頁入口是否一致。
分頁不产生新内容,但它决定了内容能不能被走到。把它当成站点结构的一部分来维護,比事後补内鏈省力得多。