搜尋抓取

列表頁與分頁:蜘蛛翻頁时容易卡在哪

列表頁承担着把蜘蛛引向詳情頁的主要任務,翻頁路径一旦断裂或過度依赖脚本,蜘蛛就容易停在第一頁。本文梳理路径式與參數式分頁的寫法、無限滚動的补救方式、分頁深度與列表頁内容厚度,以及服務器响應對翻頁抓取的影响,並附一份自查清單。

搜尋抓取

列表頁與分頁:蜘蛛翻頁时容易卡在哪

一個站点里被蜘蛛抓得最多的頁面,往往不是文章詳情頁,而是各類列表:栏目首頁、分類頁、标簽頁、搜尋结果頁以及分頁。它們數量不多,却承担着把蜘蛛引向深层内容的任務。翻頁路径一旦断了或者太绕,蜘蛛就很难繼續往里走。

列表頁是蜘蛛的主干道

從抓取路径的角度看,首頁到栏目的連結、栏目到詳情頁的連結,构成了蜘蛛的主要行進路线。詳情頁之間通常互鏈很少,蜘蛛想發現新内容,多半得回到列表頁。所以列表頁的第一屏要足够稳定:連結是普通的 a 标簽,href 指向真實可訪問的 URL,而不是依赖点击脚本才生成。

翻頁連結的几種寫法

路径式分頁

/list/page/2/ 這類寫法每一頁都是獨立 URL,蜘蛛可以直接抓取,也方便做缓存與統計。需要注意的是頁碼不要無限生成,超出内容范围的頁碼應当返回明确的狀態碼或跳回列表首頁,而不是渲染一個空列表。

參數式分頁

?page=2 這類地址同样能被抓取,但同一套分頁參數在不同栏目下含义要一致,不要一會儿從 0 開始,一會儿從 1 開始,否則容易产生大量语义重复的 URL。這類頁面可以保持可抓取,同时用 canonical 指向規范形式,减少同一内容被反复處理。

無限滚動與加载更多按钮

如果翻頁完全由滚動或按钮触發,且没有對應的 URL 變化,蜘蛛在 HTML 里看不到後續連結。常见的补救方式是保留一套可抓取的分頁地址,让滚動加载只是前端体驗的增强。

核心判断标准其實只有一個:HTML 源碼里有没有指向下一頁的普通連結。

列表頁本身不要太薄

有些列表頁只有标题和時間,摘要、封面、分類信息一概没有,内容体量與詳情頁相差很大,蜘蛛對這類頁面的重抓意愿通常不高。适当保留摘要和结构化信息,既方便用戶浏览,也让列表頁本身有被索引的價值。

给蜘蛛留出口的几個做法

  • 分頁序列保持连續,不要出現第 1 頁有第 2 頁連結、第 2 頁却只鏈回第 1 頁的断点。
  • 列表底部可以放几個相關分類或热门連結,作為翻頁之外的补充路径。
  • 頁碼深度比較大的栏目,可以考虑拆成多個子列表,避免所有内容都挤在一條翻頁鏈上。
  • 避免用 200 狀態碼返回空列表,出错时用明确的狀態碼表達。

服務器层面的影响

翻頁請求往往集中在同一段時間,資料库压力比詳情頁更集中。如果列表頁响應慢或間歇性超时,蜘蛛容易在中途停下,後續頁碼就不會被抓到。缓存列表頁、限制單次返回條數、把排序和篩選逻辑做得更轻,都是顺手能做的優化。

列表頁不只是给用戶看的门面,也不只是给蜘蛛看的目錄,它更像一條路。路要通、要连續,蜘蛛才走得下去。

怎么自己检查一遍

  1. 關掉 JavaScript,看列表頁能否用鼠标点到下一頁。
  2. 用抓取工具模拟蜘蛛訪問栏目首頁,確認返回的是完整 HTML。
  3. 抽查第 5 頁、第 10 頁,確認狀態碼、canonical 與内容都正常。
  4. 對照服務器日誌,看蜘蛛是否只停在第一頁,後續頁碼几乎没有請求。

這些检查不需要复杂工具,重点是把自己当成沿着連結一步步走的蜘蛛,看看這條路從哪一頁開始走不通。