蜘蛛每天来多少次,並不等于它把站点走完了。很多站点日誌里的抓取請求看起来不少,但唯一 URL 數長期停在某個水平,新增頁面迟迟不出現在抓取记錄里。想把這件事说清楚,需要一個可核對的口径:抓取覆盖率。
先定分母:哪些 URL 算“该被抓”
覆盖率的分母不能随手拿全站 URL 數。更稳妥的做法是先列出站点愿意被蜘蛛抓取的 URL 集合,再分层統計。
- 入口层:首頁、栏目頁、频道導航這類長期存在的頁面。
- 内容层:文章、商品、詳情等正文頁面,通常是站点的主要内容载体。
- 辅助层:标簽頁、篩選頁、分頁,是否纳入分母取决于你是否希望它們被抓。
把這三层分開算,比混在一起算一個總數更有意义。内容层覆盖率高、辅助层低,和整体覆盖率 60% 是两種完全不同的狀態。
日誌里至少要讀的四列
- 請求路径:確認 URL 是否規范化過,带參數和不带參數會被算成两條记錄。
- 狀態碼:200、301、304、404、5xx 分開統計,304 偏多說明蜘蛛在重复訪問同一批頁面。
- 蜘蛛标识與時間:区分不同蜘蛛,按天看频次變化,而不是只看總量。
- 来源或抓取入口:有 referrer 记錄时,可以看出這條請求是通過内鏈還是從 Sitemap 進来的。
覆盖率之外的三個观察点
覆盖率高不代表抓取健康,還要一起看:
- 抓取频次分布:如果首頁和列表頁占了绝大多數請求,深层頁面只是偶尔被碰到,說明路径並不通畅。
- 狀態碼结构:5xx 和超时比例偏高时,蜘蛛通常會降低訪問频率,覆盖率也會跟着下滑。
- 抓取深度:可以從入口頁按内鏈层級估算,看蜘蛛實际走到的层級和站点结构是否匹配。
几個常见的誤讀
- 把 304 当成“没抓”:304 也是一次有效訪問,只是内容未變。
- 只看總請求數:請求數上升可能只是同一批頁面被反复抓。
- 把 Sitemap 提交量当成已抓取量:提交只是告知,不等于被抓。
發現死角之後,按這個顺序改
- 先修服務器侧問题:5xx、超时、TLS 握手失敗優先,這些會直接影响蜘蛛的抓取节奏。
- 再修可達性:確認死角頁面能從入口頁经過少量内鏈点到,没有只能靠 JS 渲染才出現的連結。
- 然後修结构:把重要頁面從深层目錄或孤岛狀態中拉出来,放進栏目頁或相關推荐位。
- 最後补充發現通道:Sitemap 分片、RSS、提交接口各自承担一部分,互相不冲突。
覆盖率是结果指标,不是原因指标。它低下来时,要回到路径、狀態碼和服務器响應上找原因。
把這三层分母、四列日誌和上面几個指标固定成一張表,按周看變化,比每次重新翻日誌更容易發現趋势。真正的抓手往往不在“蜘蛛為什么不来”,而在“来了之後卡在哪一步”。