一個站点里被蜘蛛抓得最多的頁面,往往不是文章詳情頁,而是各類列表:栏目首頁、分類頁、标簽頁、搜尋结果頁以及分頁。它們數量不多,却承担着把蜘蛛引向深层内容的任務。翻頁路径一旦断了或者太绕,蜘蛛就很难繼續往里走。
列表頁是蜘蛛的主干道
從抓取路径的角度看,首頁到栏目的連結、栏目到詳情頁的連結,构成了蜘蛛的主要行進路线。詳情頁之間通常互鏈很少,蜘蛛想發現新内容,多半得回到列表頁。所以列表頁的第一屏要足够稳定:連結是普通的 a 标簽,href 指向真實可訪問的 URL,而不是依赖点击脚本才生成。
翻頁連結的几種寫法
路径式分頁
/list/page/2/ 這類寫法每一頁都是獨立 URL,蜘蛛可以直接抓取,也方便做缓存與統計。需要注意的是頁碼不要無限生成,超出内容范围的頁碼應当返回明确的狀態碼或跳回列表首頁,而不是渲染一個空列表。
參數式分頁
?page=2 這類地址同样能被抓取,但同一套分頁參數在不同栏目下含义要一致,不要一會儿從 0 開始,一會儿從 1 開始,否則容易产生大量语义重复的 URL。這類頁面可以保持可抓取,同时用 canonical 指向規范形式,减少同一内容被反复處理。
無限滚動與加载更多按钮
如果翻頁完全由滚動或按钮触發,且没有對應的 URL 變化,蜘蛛在 HTML 里看不到後續連結。常见的补救方式是保留一套可抓取的分頁地址,让滚動加载只是前端体驗的增强。
核心判断标准其實只有一個:HTML 源碼里有没有指向下一頁的普通連結。
列表頁本身不要太薄
有些列表頁只有标题和時間,摘要、封面、分類信息一概没有,内容体量與詳情頁相差很大,蜘蛛對這類頁面的重抓意愿通常不高。适当保留摘要和结构化信息,既方便用戶浏览,也让列表頁本身有被索引的價值。
给蜘蛛留出口的几個做法
- 分頁序列保持连續,不要出現第 1 頁有第 2 頁連結、第 2 頁却只鏈回第 1 頁的断点。
- 列表底部可以放几個相關分類或热门連結,作為翻頁之外的补充路径。
- 頁碼深度比較大的栏目,可以考虑拆成多個子列表,避免所有内容都挤在一條翻頁鏈上。
- 避免用 200 狀態碼返回空列表,出错时用明确的狀態碼表達。
服務器层面的影响
翻頁請求往往集中在同一段時間,資料库压力比詳情頁更集中。如果列表頁响應慢或間歇性超时,蜘蛛容易在中途停下,後續頁碼就不會被抓到。缓存列表頁、限制單次返回條數、把排序和篩選逻辑做得更轻,都是顺手能做的優化。
列表頁不只是给用戶看的门面,也不只是给蜘蛛看的目錄,它更像一條路。路要通、要连續,蜘蛛才走得下去。
怎么自己检查一遍
- 關掉 JavaScript,看列表頁能否用鼠标点到下一頁。
- 用抓取工具模拟蜘蛛訪問栏目首頁,確認返回的是完整 HTML。
- 抽查第 5 頁、第 10 頁,確認狀態碼、canonical 與内容都正常。
- 對照服務器日誌,看蜘蛛是否只停在第一頁,後續頁碼几乎没有請求。
這些检查不需要复杂工具,重点是把自己当成沿着連結一步步走的蜘蛛,看看這條路從哪一頁開始走不通。