搜尋抓取

抓取覆盖率怎么算:從日誌里找出蜘蛛没抓到的 URL

抓取覆盖率不是官方指标,但能帮你發現被蜘蛛忽略的頁面。本文說明怎么從服務器日誌中提取被抓過的 URL,用 Sitemap、CMS 内容和内鏈范围三種分母做對比,定位被遗漏的目錄與 URL 類型,並给出修复的先後顺序。

搜尋抓取

抓取覆盖率怎么算:從日誌里找出蜘蛛没抓到的 URL

先把覆盖率拆成两個數

抓取覆盖率不是搜尋引擎公布的指标,只是运营中常用的一個观察口径:在一段時間里,蜘蛛實际抓取的 URL 數量,與你認為應该被抓的 URL 數量之間的比例。它不能說明收錄情况,也不能预测排名,但能帮你發現明顯被忽略的部分。要用它,先把分子和分母分別定义清楚。

分子来自服務器日誌:篩選蜘蛛的請求,去掉重复、合並等價 URL 後,得到去重後的 URL 列表。分母没有唯一答案,通常從三個来源各取一份:Sitemap 里列出的 URL、CMS 中已發布且狀態正常的 URL、以及從首頁出發顺着内鏈能走到的 URL。

從日誌里整理被抓過的 URL

篩選时先做 UA 與 IP 段核驗,避免把普通爬虫或自己的监控請求算進去。之後做几步归一化:去掉 utm 類跟踪參數、统一大小寫、處理末尾斜杠差异、把 301 或 302 的目标地址單獨记一份。归一化做得好不好,直接决定統計结果能不能用。

整理时可以按目錄聚合,比如 /product/、/article/、/tag/,這样比看一個總數更有意义。整体數字看着不错,但某個目錄几乎没被抓過,問题往往就藏在那里。

看覆盖率时,最值得關注的是“哪一類没被抓”,而不是“整体百分比是多少”。

分母的三個来源和它們的差別

  • Sitemap:你主動声明的 URL 集合,理想狀態最全,但常滞後于實际内容,改版後尤其明顯。
  • CMS 已發布内容:最接近真實内容量,但可能包含未生成頁面、草稿、已下架頁面。
  • 内鏈可到達 URL:從首頁出發能走到的范围,是蜘蛛最現實的抓取邊界,通常小于前两者。

三個分母對比着看,能快速定位問题類型:Sitemap 里有、内鏈却走不到,多半是連結结构的問题;CMS 里有、Sitemap 里没有,多半是生成或更新流程的問题;内鏈能到、日誌里却長期没有,就要看狀態碼和服務器响應了。

常见被漏掉的那几類 URL

  1. 没有任何内鏈指向的頁面,只存在于 Sitemap 或後台列表里。
  2. 入口太深的頁面,需要经過多层列表、分頁或篩選才能到達。
  3. 由參數生成的地址,如排序、篩選组合,容易被当作低價值 URL 忽略。
  4. 狀態碼不稳定的頁面,频繁 5xx 或超时,蜘蛛尝试几次後會降低回訪。
  5. 刚發布、還没被任何内鏈或 Sitemap 覆盖的新内容。

先修可抓性,再谈覆盖率

如果日誌里 5xx、连接超时、429 的比例偏高,先處理服務器與限流,否則补再多内鏈也没有意义。其次是检查 robots.txt、meta robots,以及可能誤拦的 WAF 規則。可抓性恢复正常之後,再按“重要頁面優先”的顺序补内鏈、更新 Sitemap,而不是一次性把所有 URL 塞進去。

一個可以定期做的事

每月或每次内容批量更新後,用同一套口径跑一次覆盖率統計,與上一次對比。重点不是涨了几個百分点,而是看新發布的内容多久出現在日誌里、長期被忽略的目錄有没有變化。

抓取覆盖只是把頁面送到搜尋引擎面前的通道之一,它不保證收錄,也不保證排名,但能让你更早發現“蜘蛛根本没来過”這類基础問题。