很多站点的問题不是蜘蛛不来,而是来了之後把時間花在了不值得的 URL 上。抓取预算就是描述這件事的一個角度:搜尋引擎在一段時間内愿意為某個站点投入的抓取资源有限,站点能做的不是把這個上限拔高,而是让有限的抓取落在真正需要被發現的頁面上。
抓取预算由什么决定
粗略地说,它由两部分相乘:一是蜘蛛愿意以多快的速度抓,受服務器响應時間、错誤率影响;二是站点有多少 URL 值得抓,受内容更新频率和 URL 總量影响。前者是站点能直接影响的部分,後者則经常被自己制造的冗余撑大。
所以讨论抓取预算,重点不在“怎么让蜘蛛多抓”,而在“怎么少制造無效抓取”。
常见的無效抓取消耗
同一内容的多套 URL
带追踪參數、排序參數、會话 ID、大小寫混用、末尾斜杠不统一,都會让同一篇内容以多個 URL 出現。如果没有 canonical 收口,蜘蛛可能每個變体都抓一遍,抓取量被拆成几份,而索引里往往只留一份。
软 404 與空结果頁
篩選條件组合出大量没有结果的列表頁,頁面返回 200 但正文空洞。蜘蛛會把它当作正常頁面繼續抓,下一次更新时再来確認一次。這類頁面的數量往往随時間增長,是抓取预算里比較容易被忽视的漏洞。
無限滚動與分頁叠加
列表頁既做無限滚動又保留分頁連結时,需要明确哪一套是给蜘蛛的路径。否則蜘蛛可能顺着分頁一路翻到底,抓到的是同一批條目的重复视图。
把抓取留给值得的 URL
- 内鏈集中指向 canonical 版本,避免同一内容在導航、标簽、推荐位里出現多個入口。
- Sitemap 只放需要被發現的規范 URL,不要把參數變体都塞進去。
- 狀態碼要明确:不存在的頁面给 404 或 410,不要用 200 加一句“暂無内容”。
- 篩選、排序類頁面用 robots 規則或連結属性控制,別让它們和正文頁抢抓取。
- 低價值但必须存在的頁面,比如登入、帮助,可以降低其在站内連結里的曝光。
服務器狀態會改變抓取节奏
响應時間變長、5xx 比例上升时,蜘蛛通常會主動降频,抓取预算随之缩水。稳定的响應時間和明确的狀態碼,比任何加速抓取的技巧都更實际。如果站点在抓取高峰期出現超时,不妨先看日誌里 5xx 與超时的分布,再决定是否需要限流或加缓存。
一個可执行的检查顺序
- 從日誌里統計被抓取最多的 URL 模板,看它們是不是真正需要被抓的頁面。
- 統計返回 200 但内容為空的頁面數量,评估软 404 的規模。
- 检查 canonical 與内鏈是否指向同一版本,確認參數頁没有獨立入口。
- 核對 Sitemap 中的 URL 數量與站内實际可抓 URL 數量的差距。
- 观察服務器响應時間與 5xx 比例,確認降频是否由稳定性引起。
抓取预算不是一個可以随意調大的開關,它更像一份被動的反馈:站点越干净,蜘蛛越容易把時間花在有用的頁面上。
把無效 URL 收掉、把狀態碼讲清楚、把内鏈集中到規范地址上,這三件事做完,往往會發現抓取分布比之前更接近预期。這個過程需要看日誌驗證,而不是靠猜测。