蜘蛛池跑起来之後,最常见的問题是:知道该看日誌,但不知道该看哪几個數。很多人盯着爬虫請求量的曲线,涨了就安心,跌了就加资源。這個做法的問题在于,請求量只是最上游的過程資料,它和目标頁面是否能被有效處理之間,還隔着好几层。
先把指标分三類
為了避免自己骗自己,可以先把所有能观察到的資料分成三類:
- 過程指标:爬虫請求數、獨立 IP 與 UA 分布、狀態碼分布、入口頁命中率、平均响應時間。
- 结果指标:目标頁面是否被請求過、請求深度、是否進入索引、索引後的展現與点击變化。
- 成本指标:服務器與带宽開销、入口頁维護人力、被誤伤或降權的風險。
只有把三類放在一起看,才可能得出值不值得繼續的结论。單看任何一類都會偏。
過程指标里容易看错的地方
請求總數的涨幅不代表覆盖面
請求數從一萬涨到三萬,可能是同一批蜘蛛在反复抓同一批入口頁,而不是覆盖到了新的 URL。這时候要看的是被請求過的不同 URL 數量,而不是請求條數。前者才接近「發現」這個動作。
UA 要按 IP 段和反向解析复核
日誌里 UA 寫着各大搜尋引擎的名字,不代表真的是它們。至少要做一次反查抽样,把明顯伪装的部分從統計里剔掉,否則過程資料會被大量虚假請求稀释,看起来热闹,實际没有價值。
狀態碼分布比平均值更有信息量
平均响應 200 毫秒听起来不错,但如果其中 15% 是 503 或超时,蜘蛛實际体驗到的是另一回事。抓取日誌里按狀態碼分桶,比算一個平均數更有用。
结果指标才是判断依據
過程指标回答的是「蜘蛛来過没有」,结果指标回答的是「来過之後發生了什么」。需要重点跟的是:
- 目标頁面第一次被請求的時間,相對于入口頁被請求的時間差多少。
- 目标頁面被抓取的频率,是否有第二次、第三次。
- 目标頁面出現在索引中的時間與數量,注意区分「被索引」和「能被搜到」。
如果入口頁抓取很热闹,但目标頁面的首次抓取迟迟不来,問题通常不在蜘蛛數量,而在連結路径、入口頁與目标頁的關联强度,或者入口頁本身质量不足。
三種常见的誤判
把抓取量当成收錄量
抓取只是訪問,是否收錄由目标頁面自身的质量、重复度、站点整体状况决定。蜘蛛池能改善的是發現和抓取机會,不能替頁面通過质量判断。
把收錄速度当成收錄质量
有些頁面很快進索引,但随後又被移出,或者長期停留在「已抓取未索引」。這種情况下速度没有意义,反而說明頁面在某一關被卡住了。
把短期波動当成趋势
蜘蛛抓取本来就有波動,一天两天的涨跌說明不了什么。要用同一批入口頁、同一套統計口径,至少按周對比,才有可比性。
建立一份能前後對比的记錄
建议至少记錄這几列,並且固定統計口径:
- 日期、入口頁被請求次數、去重後的 URL 數、狀態碼分布。
- 目标頁面首次被抓取日期、累計抓取次數、目前索引狀態。
- 当期投入:资源、時間、维護動作,以及哪些動作是在哪一天做的。
關键是動作要记日期。否則看到曲线變化时,無法判断是哪次調整带来的,也無法判断下次该繼續還是回退。
什么时候该調整,什么时候该停
比較務實的判断方式:如果连續两到三周,入口頁抓取正常,但目标頁面的首次抓取没有新增,說明鏈路环节有問题,應先排查入口頁與目标頁的關联方式,而不是繼續加量。如果抓取和目标頁覆盖都在缓慢增長,但站点自身的收錄没有變化,要回到頁面质量與站点整体评估上找原因,這可能已经超出蜘蛛池能解决的范围。
蜘蛛池能改變的是被發現的概率和被抓取的机會,改變不了頁面本身值得不值得收錄。把指标分清楚,才不會用加量的方式去解决一個不属于量的問题。