很多站点把“抓取预算”当成一個可以申請、可以調高的配額,其實它更像一個结果:一邊是搜尋引擎愿意给你的抓取速率,另一邊是你站点上需要被抓的 URL 總量。两邊一除,就是每天大概能拿到的抓取次數。想让重要頁面被更快發現,能動手的地方主要在分母。
抓取額度被什么吃掉
把抓取日誌按目錄、按模板分组統計一遍,通常會看到同一類頁面反复出現。常见的几類:
- 參數组合:篩選、排序、分頁參數互相排列组合,URL 數量指數增長,内容却高度重复。
- 分頁的尾巴:列表翻到第 50 頁之後的條目,绝大多數早就能從別處被抓到。
- 软 404 與空壳頁:返回 200 但没有實质内容,蜘蛛每次都来,每次都空手而归。
- 重定向鏈:一個入口要跳三四次才到终点,中間每一跳都在花時間。
- 同一内容的多套地址:带 www 與不带 www、大小寫差异、带不带尾斜杠,各自被抓一遍。
让分母變小的几個動作
- 收敛參數:能被 robots.txt 或 canonical 處理的组合,尽量不要放開给蜘蛛到處爬;必要參數保留,营销參數剥掉。
- 明确 canonical:每個模板只留一個規范地址,列表頁、詳情頁、分頁頁各自说清楚。
- 内鏈指向規范地址:站内連結是蜘蛛最主要的發現入口,鏈到哪個地址,它就更可能去抓哪個地址。
- Sitemap 只放值得抓的:canonical 之外的變体、早已 404 的歷史地址清出去,减少無效排队。
- 處理重定向:能直连就直连,301 鏈尽量压到一跳以内。
抓取速率那一邊能做什么
速率主要由服務器表現决定:响應時間、错誤率、超时比例。稳定往往比快更重要——一個偶尔 200ms、偶尔 8s 的站点,通常不如稳定在 400ms 的站点拿到的抓取量多。反向代理、頁面缓存、静態化、把動態接口的重活挪到异步,都是常见做法。
一個常见的誤解
新發布的 URL 不一定排在最前面被抓。蜘蛛有它自己的優先級判断:連結入口多不多、頁面在站内的层次、歷史抓取质量、站点整体响應情况,都會影响排队顺序。所以“發布了却迟迟没動静”时,先看内鏈和 Sitemap,而不是急着去找抓取加速的手段。
抓取预算不是靠某個工具或某個“池”直接塞進来的,它更像站点健康度的一份讀數。
自查的顺序
- 從日誌里挑一天,按目錄統計抓取次數與狀態碼分布。
- 找出被反复抓取、却從不产生價值的那几類 URL。
- 追問這些 URL 是從哪個入口被發現的:内鏈、Sitemap,還是參數拼接。
- 堵掉入口,观察两周,看重点目錄的抓取次數有没有上升。
如果站内連結本身很稀疏,蜘蛛想走到深层頁面只能靠 Sitemap,發現速度自然慢。這種情况優先补内鏈,把重要頁面挂到相關度高、位置靠前的連結上,比換抓取策略更直接。每隔一段時間和上個月的資料對比一次,把“抓取次數上升的目錄”和“實际有新内容的目錄”放在一起看,差距就是下一步该處理的地方。