服務器日誌是判断抓取状况最直接的證據。第三方工具给的通常是估算,日誌给的是记錄:蜘蛛什么时候来、抓了哪些 URL、拿到什么狀態碼,都能對上。問题在于日誌信息量大、字段杂,直接翻很难看出结论。下面按排查顺序说几個可操作的看法。
先確認来的是谁
日誌里的 User-Agent 不一定可信,蜘蛛可以伪装,普通脚本也能自称蜘蛛。稳妥的做法是交叉驗證:把 IP 反查確認归属,或者比對已知的抓取 IP 段。如果只根據 UA 判断,很容易把采集程序算成蜘蛛,得出错誤的抓取量。
同时要区分蜘蛛類型。来自不同产品线的抓取目的不同,频率和深度也不一样。把几類混在一起統計,分布會失真。
值得看的几列
- 請求時間:判断抓取时段,是否集中在低峰,是否與你的發布节奏重合。
- 狀態碼:200、301、404、429、503 的占比,比總量更有說明力。
- URL 路径:按目錄聚合,能看出蜘蛛偏好抓哪一层。
- 响應大小與响應時間:抓取慢的頁面往往在這里暴露。
- Referer:部分請求會带来源,可以大致還原爬行路径。
看分布,而不是看總量
抓取總數增長不代表抓得更深。可能是同一批列表頁被反复抓,也可能是大量 404 被反复請求。更有用的指标是這几组比例:
- 抓取請求里,内容頁占多少,列表頁占多少。
- 有多少請求落在需要多次点击才能到達的深层目錄。
- 狀態碼分布里,非 200 的比例是否在上升。
- 同一 URL 被重复抓取的間隔,是否短到不合理。
如果内容頁占比長期很低,問题通常不在蜘蛛,而在入口:内鏈没有把深层頁面暴露出来,或者 Sitemap 里的 URL 本身就没覆盖到。
判断深层頁面有没有被走到
取一批你關心的深层 URL,用路径關鍵詞在日誌里篩選,看它們在最近一段時間内有没有出現。更细一点的做法:
- 把 URL 按目錄分组統計,找出零抓取的目錄。
- 看是新頁面從未被抓,還是舊頁面停止被抓。
- 對比發布時間和首次抓取時間,估算發現延迟。
零抓取的目錄往往對應两類問题:没有任何内鏈指向,或者指向它的連結藏得太深、太靠後。前者需要补入口,後者需要調整内鏈结构,把重要頁面往上层提。
几個常见的誤讀
一是把带宽当抓取量。蜘蛛抓一個体积大的頁面,占用的带宽可能是几十個小頁面的總和,但抓取次數只有一次。二是只看当天資料。抓取本身有波動,單日高低說明不了趋势,至少看一周到一個月。三是忽略 429 和 503。這两個狀態碼出現得多,說明服務端在主動限速,蜘蛛會據此降低频率,之後的抓取量下降是结果,不是原因。
從日誌回到動作
看完日誌,能落地的動作通常只有三類:补入口(内鏈、Sitemap、導航)、减负担(去重、修死鏈、收敛參數组合)、改响應(缓存、限速、修慢頁面)。日誌本身不解决問题,它只是告诉你問题出在哪一段鏈路上。
抓取量上升不等于抓得更好。真正值得關注的是:该被抓的頁面有没有被抓到,抓到的是不是你希望被抓的那一批。