抓取预算(crawl budget)经常被说得很玄,拆開来看其實就是两件事:搜尋引擎一天愿意在你的站点上花多少抓取次數,以及這些次數被分到了哪些 URL。前者受站点規模、更新频率和服務器响應影响,後者基本是你自己能控制的。中小站点通常不必焦虑總量,真正该關心的是分配。
抓取预算由两部分组成
常见的拆法是把它分成“抓取速率上限”和“抓取需求”:
- 抓取速率上限:由搜尋引擎根據服務器承载能力决定,响應慢、超时多,上限就會被压低。
- 抓取需求:你希望被重新抓取的 URL 數量與更新频率。URL 越多、更新越频繁,需求越大。
当需求長期大于上限,才會出現新頁面等很久才被抓、老頁面改了也不更新的現象。這才是需要動手的信号。
什么情况下才值得動手
先判断自己是否真的處于预算紧張狀態,避免把小問题当成大問题:
- 站点 URL 總量在几千以内、内容更新不频繁,通常没有预算問题。
- 篩選參數、排序方式、日歷頁、站内搜尋结果产生了大量可抓取 URL,這是最常见的诱因。
- 服務器响應偏慢,日誌里能看到成片的 5xx 或超时,上限是被自己压低的。
- 新發布的頁面两三周仍未见抓取,需要看抓取分布,而不只是看總量。
三個可以自己算出来的數字
- 每日抓取總量:在日誌里按爬虫 UA 統計,看一周的平均值,而不是盯着某一天的峰值。
- 抓取落在有效頁面上的比例:把抓取次數按目錄归類,标出哪些是内容頁、哪些是列表和參數頁。比例失衡就說明预算被浪費。
- 平均响應時間:同一目錄下的响應差异很大时,先優化最慢的那部分,速率上限往往會自然回升。
服務器响應為什么會直接影响上限
抓取速率不是搜尋引擎單方面“给”的,而是双方协商出来的结果。响應時間從 200 毫秒涨到 2 秒,意味着同样的抓取窗口内能完成的請求數少了一個量級。所以優化抓取预算时,先看服務器,再看 URL 结构,最後才看内容更新,顺序反了容易做無用功。
分配顺序:先砍浪費,再谈提速
最有效的動作通常是减法,而不是想办法让蜘蛛来得更勤:
- 把没有獨立检索價值的參數组合、排序方式,用 robots.txt 規則或規范标簽收口。
- 站内搜尋结果頁、按日期归档的薄列表頁,评估是否真的需要被索引。
- 死鏈、重定向鏈、软 404 清一遍,减少無效抓取。
- 確認重要目錄的入口层級没有過深,让抓取能顺着連結自然走到。
- 最後才考虑更新频率、站点地图准确性這類“加法”。
如果日誌里某個目錄被反复抓取却從不带来流量,優先怀疑它是不是被当成了入口頁在扩散。抓取次數本身不是成绩,落到有價值的 URL 上才是。
几個常见誤区
- 把收錄量当预算指标:收錄是结果,抓取是過程,两者變化节奏並不一致。
- 靠频繁改動換抓取:没有實质新内容的反复修改,只會消耗抓取次數。
- 只盯蜘蛛總量:總量下降但有效頁面占比上升,往往說明方向對了。
一套可复用的检查顺序
每隔一两個月做一次就够:導出日誌按目錄匯總抓取次數,對照各目錄的實际價值,找出被抓得多但没有價值的目錄,再用 robots.txt、規范标簽或入口調整收口,然後观察两周後的分布變化。判断标准始终是“抓取有没有落到该落的地方”,而不是總次數有没有變多。