搜尋抓取

分頁與翻頁連結:蜘蛛沿列表往下走时會在哪里停

列表頁是蜘蛛深入站点的重要通道,但翻頁連結是否可抓取、分頁该保留多少頁、分頁 URL 如何收敛,都會影响抓取路径和抓取消耗。本文從連結形式、canonical 處理、View-all 頁面和服務器响應几個角度,梳理分頁抓取中常见的断点與检查方法。

搜尋抓取

分頁與翻頁連結:蜘蛛沿列表往下走时會在哪里停

分頁連結是抓取路径里最容易被忽略的一段

列表頁、归档頁、搜尋结果頁,通常承担着把蜘蛛带到更深层内容的任務。第一頁的連結蜘蛛很容易抓到,但第二頁、第三頁往後,往往就不是自動能走到的了。如果翻頁連結不可抓取,或者被規則挡住,後面那些條目就只能依赖 Sitemap 或別的内鏈来發現。

分頁不是單纯的用戶体驗問题,它直接决定蜘蛛在站内能走多遠,也影响老内容被重新訪問的机會。

蜘蛛是怎么碰到下一頁連結的

最常见的做法是在列表底部放一個“下一頁”的 a 标簽。只要這個連結在初始 HTML 里,蜘蛛顺着 href 就能走下去。問题通常出在几種情况:

  • 下一頁按钮是 button 或 div,点击後由 JavaScript 加载内容,初始 HTML 里没有可跟随的連結;
  • 連結用了 onclick 跳轉,href 是空的或者“javascript:void(0)”;
  • 翻頁連結被放在懒加载区域,蜘蛛不执行滚動就碰不到;
  • 無限滚動只加载前几屏,後面的條目没有獨立 URL。

想確認並不难:在浏览器里禁用 JavaScript 後打開列表頁,看看還能不能点到下一頁。如果点不到,蜘蛛大概率也走不下去。

让蜘蛛翻到第几頁比較合适

分頁不是越多越好。每翻一頁,蜘蛛就要多請求一次,服務器也要多响應一次。站点越大,分頁产生的 URL 就越多,抓取预算會被大量重复列表消耗掉。比較稳妥的做法是:

  • 為分頁設定一個明确的截止頁,比如只保留最近 20 頁或 50 頁,更早的内容交给 Sitemap 或归档入口;
  • 把最有價值的條目放在列表前几頁,减少蜘蛛為了找到它們而翻很多頁;
  • 不要生成“上一頁/下一頁”之外的大量頁碼連結,尤其是那種一次列出几百個頁碼的寫法;
  • 如果站点内容量不大,可以直接用“查看全部”頁面替代深层分頁,但要注意頁面体积和重复内容處理。

分頁 URL 和 canonical 的處理

分頁地址通常带參數,比如 ?page=2、/list/page/2/ 或者 ?paged=2。這些地址本身可以被抓取,只要它們返回正常内容。關键是別让同一批條目产生太多重复地址:篩選、排序、分頁叠加在一起,容易生成大量内容相似的 URL。

對于分頁頁面的 canonical,建议让每一頁指向自己,而不是全部指向列表第一頁。全部指向第一頁會削弱後續頁面作為發現路径的作用;但如果你確認某些分頁只是重复内容、没有獨立價值,也可以用 canonical 或 robots 規則做收敛。這里没有统一答案,要看列表頁是否承担 URL 發現任務。

以前常用的 rel=prev/next 已经不再是主流搜尋引擎的抓取信号,不要把它当作翻頁連結的替代品。真正让蜘蛛走下去的,還是可点击、可跟随的 a 标簽。

View-all 頁面與抓取消耗

把全部條目放在一個頁面里,确實能让蜘蛛一次看到更多連結。但這類頁面往往体积大、加载慢,還容易和分頁頁面产生重复。如果要做,建议控制條目數量,保證服務器能稳定响應,並在内鏈上把它当作一個补充入口,而不是唯一入口。

服務器端要注意什么

分頁請求通常集中在列表頁,蜘蛛翻頁时會连續訪問同一個路径的不同參數。如果這個路径响應慢,或者偶尔返回 5xx,蜘蛛可能提前停止翻頁。给列表頁做缓存、减少每次請求的資料库查询,比單纯增加分頁數量更有意义。

检查分頁抓取情况的几個動作

  1. 在服務器日誌里篩選列表頁路径,看带 page 參數的請求有没有出現,以及後續有没有繼續翻頁。
  2. 抽查第二頁、第三頁的下一頁連結,確認是普通 a 标簽,且 href 指向正确。
  3. 看看分頁頁面是否返回 200,有没有誤设 noindex 或 robots 屏蔽。
  4. 检查分頁 URL 是否被參數規則放大,比如排序、篩選和分頁组合出大量無意义地址。
  5. 對比 Sitemap 里的深层 URL 和日誌里的抓取记錄,判断蜘蛛是否主要靠分頁發現内容。
分頁連結不需要做得复杂,但要保證蜘蛛能顺着一條清晰的路径走到列表深處,同时不让服務器和抓取预算承担不必要的重复消耗。