两個“深度”為什么容易混在一起
在抓取日誌里,常看到首頁被反复抓取,而某個三級栏目下的内容頁几乎没出現過抓取记錄。這时容易先归因于“蜘蛛不喜欢這個栏目”,但更常见的原因是:点击深度(用戶從首頁点到目标頁需要几次点击)和抓取深度(蜘蛛從入口顺着連結到達该頁面的层數)並不一致。前者由導航决定,後者由連結结构决定,两者错位时就出現断层。
抓取深度不是一道硬性上限,但层級越深,連結传递與調度優先級越容易被稀释。当入口頁本身的抓取频次就低,再往下层传導的抓取机會自然更少。
断层常见的几種表現
- 栏目頁有抓取记錄,但栏目下的詳情頁長期為零或极少。
- 列表頁只被發現第一頁,第二頁之後的連結没有被跟随。
- 同一批内容在 Sitemap 中有 URL,但實际抓取路径只剩站点地图這一條。
- 導航或面包屑里的連結指向的是篩選後的 URL,與真實詳情頁 URL 並不相同。
排查顺序
第一步:以首頁為起点做一次連結抓取
用爬虫工具從首頁出發,记錄每個 URL 的层級與入鏈數量。注意区分两件事:連結是否存在、連結是否可被跟随(是否被 nofollow、是否由脚本插入、是否要交互後才渲染)。如果某個栏目在第三层才出現,其下内容就處在第四层左右,抓取传導會明顯變慢。
第二步:核對導航與列表頁的分頁連結
分頁連結是否由可点击的 a 标簽承载,决定了詳情頁能否被逐頁發現。只在頁面上渲染“下一頁”按钮、由前端事件切換内容的實現,會让第二頁之後的入口断层。同理,篩選條件生成的组合 URL 如果數量巨大,會把有限的抓取量摊薄,真正需要抓取的詳情頁反而被排到後面。
第三步:检查 URL 层級與實际目錄是否一致
有些站点物理目錄很浅,URL 路径却很長,而頁面之間只靠站内搜尋或參數跳轉相连。這種情况给人的印象是“很深”,但真正的問题是缺少横向連結:同栏目内相關内容互鏈、标簽聚合頁、专题頁,都能把深层頁面拉到更浅的入口位置。
第四步:判断站点地图的补位作用
Sitemap 是补充入口,不是替代内鏈的手段。它可以缩短發現時間,但如果頁面本身没有任何内鏈指向,即使被抓到,也很难获得持續回訪。把 Sitemap 当作最後一道保險,而不是主要路径。
可以落地的調整方向
- 在栏目頁首屏给出足够數量的詳情入口,避免全部依赖分頁。
- 為深层頁面增加同栏目推荐、上一篇/下一篇、标簽聚合等横向連結。
- 把重要栏目固定在主導航或面包屑中,减少点击层級。
- 收敛參數组合,對篩選頁做合理的入口控制,避免重复 URL 摊薄抓取量。
- 定期用日誌比對:被抓取最多的 URL 與被内鏈指向最多的 URL 是否一致。
判断标准不是“頁面排在第几层”,而是“從任意常用入口出發,能否在較少跳轉内稳定到達”。深度只是表象,連結數量與入口质量才是可以動手調整的部分。
驗證與观察
調整後不要急着下结论,先看日誌中该栏目的抓取條數與狀態碼分布是否變化,再看詳情頁 URL 是否開始出現。如果仍然没有,回到第一步重新確認連結是否真的可被跟随,而不是只在浏览器里点得通。服務器响應是否稳定、是否對蜘蛛請求返回了不同内容,也會影响结果,這部分可以用同一 UA 手動請求做對照。