抓取预算不是抽象概念,而是日誌里的具体數字
搜尋引擎给每個站点的抓取频次並不固定,它和站点規模、更新频率、服務器响應速度、外部連結數量都有關系。對一個几千頁的中小站点来说,每天可能只有几十到几百次抓取;對内容量大但更新慢的站点,频次還會更低。
把這些抓取次數当成一份配額来看,很多問题就解释得通了:為什么新發的文章三天了還没被抓、為什么明顯是垃圾的參數頁天天被訪問、為什么服務器一忙抓取量就掉。抓取预算自查的目的不是让蜘蛛抓得更多,而是让它把有限的時間花在真正需要被看到的頁面上。
第一步:把抓取量按頁面類型拆開
從服務器日誌里導出最近 7 到 14 天的记錄,只保留搜尋引擎的 UA,然後按 URL 归组統計次數。接着人工把這些 URL 分几類:
- 内容頁:文章、商品、詳情頁,這些是真正想要被收錄的
- 栏目頁與列表頁:抓取量通常不高,属于正常
- 分頁地址:頁碼很深的翻頁往往没有單獨價值
- 站内搜尋、篩選、排序产生的參數頁:很容易生成成千上萬個组合
- 标簽頁、日期归档、作者归档:如果内容重复度高,價值有限
- 附件、图片、CSS 與 JS 等静態资源:属于必要抓取,但要留意是否被重复請求
- 測試頁、废弃目錄、舊的 API 路径:通常還在被歷史連結引導
如果内容頁只占抓取量的两成,而參數頁和归档頁占了六成以上,那么問题基本可以定位了。
第二步:低價值路径的几種處理方式,各有代價
robots.txt 屏蔽
适合完全不需要被抓的功能性路径,比如站内搜尋结果頁、购物车、打印頁、内部的接口地址。代價是屏蔽之後你就看不到這些 URL 的狀態碼和报错信息了,而且規則寫得太宽容易誤伤正常目錄,改動前最好先在測試环境核對一遍路径匹配。
noindex 並不能省下抓取
很多人以為给頁面加 noindex 就等于告诉蜘蛛別来了,其實蜘蛛必须先把頁面抓下来才能讀到這個标簽。noindex 解决的是索引問题,不是抓取問题。想让這類頁面少被訪問,還得同时减少指向它們的連結入口。
參數收敛與去入口
參數頁最有效的處理方式是從源头控制數量:固定篩選和排序的預設值,只保留有實际搜尋量的參數组合,把剩余的設定為不輸出連結。少一個入口,往往比寫十條屏蔽規則更管用。
合並與重定向
内容高度相似的标簽頁、归档頁,可以考虑合並到栏目頁,或者用跳轉指向主版本。注意跳轉鏈不要叠太多层,两跳和三跳對抓取频次的影响是不一样的。
第三步:让有效頁面更容易被抓到
- 新頁面發布後,從首頁或對應栏目頁给出一個稳定的内鏈入口
- 站点地图只放需要被收錄的 URL,不要把參數頁和废弃頁一起塞進去
- 减少不必要的跳轉鏈,尤其是移動端适配跳轉和 HTTP 到 HTTPS 的重复跳轉
- 保證首屏正文能被直接讀取,不要所有内容都靠脚本异步填充
- 服務器响應時間是硬约束,慢一秒,蜘蛛分给下一個頁面的机會就少一分
第四步:服務器與抓取高峰的配合
抓取高峰常和訪問高峰重叠,這时候响應變慢,蜘蛛會主動降低抓取频次,而且是渐進的,恢复起来也需要時間。可以做几件事:把日誌轮轉和磁盘清理放在低峰期,静態资源走缓存或獨立域名,資料库慢查询單獨排查。如果使用 Bing 等支持 crawl-delay 的爬虫,可以在抓取異常时临时放缓,Google 並不支持這個指令,只能靠响應速度間接影响。
一份可以每周看一次的清單
- 有效抓取占比:内容頁抓取次數 ÷ 總抓取次數,观察趋势是否上升
- 狀態碼分布:4xx 和 5xx 各自占比,5xx 出現就要排查服務器
- 平均响應時間:按抓取量最高的前 20 個 URL 單獨看
- 新頁面從發布到首次被抓的時間,是否在拉長
- 站点地图提交的 URL 數與實际被抓的數量差异
- robots.txt 和 noindex 的改動记錄,確認没有誤伤或遗留規則
抓取预算的調整是渐進的過程。改完規則不要指望第二天就看到變化,通常需要观察两到四周,结合日誌再判断下一步動作。
把這份清單固定成一個每周半小时的习惯,比一次性大改一遍規則要稳定得多。