很多站長习惯盯着一個數字:今天蜘蛛来了多少次。次數涨了就安心,次數掉下来就慌。但蜘蛛的訪問量並不是無限的,搜尋引擎每天愿意在一個站点上花多少時間,是有大致范围的。行业里常说的抓取预算(crawl budget),描述的就是這件事——它不是官方给出的固定額度,而是一個用来理解抓取行為的视角。
抓取预算不是一個固定數字
同样規模的站点,能分到的抓取量可能差很多。通常和這几件事有關:站点的頁面總量、更新频率、服務器响應速度、内容是否長期稳定、以及整体质量信号。頁面數量多、更新频繁、响應快的站点,往往會被更频繁地訪問;而一個大站如果長期有大量死鏈和慢頁面,抓取量就會被拖住。
所以当你想判断"我的抓取量是否正常"时,先別和其他站点横向比。更實际的做法是:记錄自己站点一周的基线,然後看變化。
抓取多了,不等于收錄多了
這是最容易被混淆的一点。抓取解决的是"這個地址被看到了",收錄解决的是"這個地址值不值得留下"。蜘蛛把一個頁面抓走十次,如果内容一直没變、又没有足够的價值,也不代表它就會進入索引。
抓取量回答的是訪問频率問题,收錄回答的是质量判断問题。把两者当成一回事,後面的判断都會跑偏。
更常见的情况是:抓取量看着不错,但其中大部分都花在了不值得收錄的地址上,真正需要被發現的頁面反而排在後面。
哪些 URL 在消耗抓取量
下面這些類型,往往是抓取日誌里的常客,但價值普遍不高:
- 带篩選、排序參數的列表頁,參數组合接近無限
- 带追踪參數的地址,同一内容對應多個 URL
- 會话 ID、临时 token 生成的地址
- 站内搜尋结果頁
- 返回 200 狀態但内容為空的软 404 頁面
- 需要经過多次跳轉才能到達的重定向鏈
- 响應很慢的頁面,一次抓取會占用較長時間
這些地址單獨看都不算"错誤",但它們會摊薄抓取资源,让真正重要的頁面被訪問得更少、更慢。
從日誌入手:一套自查顺序
不知道從哪里開始时,建议按下面的顺序過一遍服務器日誌或抓取統計:
- 先按狀態碼分组,看 200、301、404、5xx 各占多少比例。5xx 和大量 404 是明顯的浪費。
- 再按路径或模板分组,看哪一類頁面被抓得最多。是内容頁,還是列表頁和參數頁?
- 把被抓取最多的地址,和站点里真正有内容的地址做對比,找出落差。
- 看响應時間分布,把明顯偏慢的頁面單獨列出来。
- 记錄一周内各類 URL 的被抓次數,作為後續對比的基线。
做完這几步,通常就能看出抓取量到底是被谁吃掉的,而不是笼统地觉得"蜘蛛来得不够多"。
處理顺序:先止血,再引導
發現浪費之後,動手的顺序也很重要。
先止血:修掉返回错誤狀態碼的頁面,让该返回 404 的返回 404,该跳轉的做一次跳轉而不是鏈式跳轉;對無價值的參數组合,用 robots.txt 或服務器規則做拦截;優化响應最慢的那几個頁面。
再引導:通過内鏈和站点地图,把抓取资源引向真正希望被收錄的頁面。站点地图里尽量只放值得收錄的地址,不要把全部參數頁都塞進去。
需要提醒的是,用 robots.txt 屏蔽一個地址,並不等于把它從索引里移除。這两件事的處理方式不同,容易混在一起判断。
關于蜘蛛池這類工具
市面上有些工具會宣称能通過制造大量抓取請求来"喂养"站点。從原理上说,它們改變的只是日誌里的訪問數字,而不是頁面的质量信号。抓取請求本身不带来收錄判断,反而可能让你在自查日誌时看到一堆無意义的訪問记錄,干扰判断。把它当成收錄手段,方向和预期都不太對。
观察周期要按周算
抓取行為的調整通常不會当天见效。做完拦截和提速之後,建议以周為單位观察日誌里的结构變化:低價值地址的抓取比例是否下降,重要頁面的被抓频率是否上升。一天一结论,很容易被正常的波動带偏。
把抓取预算理解成一筆有限的资源,然後定期检查它流向哪里,比單纯數蜘蛛来了多少次更有用。