先把覆盖率拆成两個數
抓取覆盖率不是搜尋引擎公布的指标,只是运营中常用的一個观察口径:在一段時間里,蜘蛛實际抓取的 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
- 没有任何内鏈指向的頁面,只存在于 Sitemap 或後台列表里。
- 入口太深的頁面,需要经過多层列表、分頁或篩選才能到達。
- 由參數生成的地址,如排序、篩選组合,容易被当作低價值 URL 忽略。
- 狀態碼不稳定的頁面,频繁 5xx 或超时,蜘蛛尝试几次後會降低回訪。
- 刚發布、還没被任何内鏈或 Sitemap 覆盖的新内容。
先修可抓性,再谈覆盖率
如果日誌里 5xx、连接超时、429 的比例偏高,先處理服務器與限流,否則补再多内鏈也没有意义。其次是检查 robots.txt、meta robots,以及可能誤拦的 WAF 規則。可抓性恢复正常之後,再按“重要頁面優先”的顺序补内鏈、更新 Sitemap,而不是一次性把所有 URL 塞進去。
一個可以定期做的事
每月或每次内容批量更新後,用同一套口径跑一次覆盖率統計,與上一次對比。重点不是涨了几個百分点,而是看新發布的内容多久出現在日誌里、長期被忽略的目錄有没有變化。
抓取覆盖只是把頁面送到搜尋引擎面前的通道之一,它不保證收錄,也不保證排名,但能让你更早發現“蜘蛛根本没来過”這類基础問题。