覆盖率比来訪次數更值得看
很多运营者盯的是“今天蜘蛛来了几次”,但更该問的是:我挂上去的入口頁,蜘蛛實际抓了多少個。假设池子里有 2000 個入口頁,一個月的訪問日誌里只出現了 300 個真實蜘蛛命中的 URL,那覆盖率大概就是 15%。剩下的大部分不是被拒绝,而是压根没進入待抓队列。来訪次數再多,如果集中在那 300 個頁面上,整体的 URL 發現效率依然很低。
抓取覆盖率由什么影响
覆盖率通常不是單一因素决定的,而是几件事叠加的结果:
- 入口是否被引用:蜘蛛不會主動遍歷你的全部域名,它依赖外鏈、sitemap、歷史路径去找入口。没有外部引用的孤立入口頁,被發現概率很低。
- 主机响應與抓取速率:同一 IP 下短時間接到大量請求,頁面變慢或超时,蜘蛛會降低對该主机的抓取频率。
- 内容同质化:入口頁之間高度雷同,蜘蛛抓到几個之後可能判断價值不高,减少後續抓取。
- robots 與頁面狀態:誤封、返回 4xx/5xx、跳轉到空頁面,都會让這次抓取白費。
- URL 结构混乱:參數過多、层級過深,蜘蛛容易在中間层就停止深入。
怎么排查
比較實用的做法是:把“實际挂出的入口頁清單”和“日誌中真實被抓的 URL”做一次差集,然後看三件事——没被抓的頁面集中在哪些域名、哪些目錄层級、哪些上线批次。
如果某几台服務器上的入口几乎全部没被抓,問题多半在主机层,比如响應慢、IP 被限速;如果各個域名都有零星被抓,問题更可能出在入口本身的引用關系和内容差异上。
提升覆盖率的可行做法
- 给入口頁安排至少一個稳定的外部引用,而不是只靠 sitemap 声明。
- 控制單台主机、單個 IP 下的入口頁數量,避免短時間集中放出。
- 分批上线,观察每批的抓取反馈,再决定下一批的規模。
- 先修响應速度與错誤率,把 5xx 和超时降到可接受范围。
- 入口頁之間保持基本差异,不要只替換标题和數字。
- 保留可抓取的普通連結结构,別把導航全放在 JS 里。
几個常见誤区
把 sitemap 当成“提交就一定被抓”的保證、認為入口頁越多覆盖率越高、用跳轉代替可抓取的連結,這几種做法都會让覆盖率長期停留在低位。尤其是最後一種,蜘蛛拿到的頁面里没有可跟随的連結,爬取路径就断在這里。
覆盖率是一個過程指标,不是结果指标。它能說明蜘蛛愿不愿意進来,但不能說明頁面會不會被收錄。两件事別混在一起看。
把覆盖率纳入日常巡检,比單纯數蜘蛛訪問次數更能反映池子的健康度。当它長期卡在低位时,優先修主机和引用關系,而不是繼續往上加頁面。