蜘蛛池的效果,往往不取决于蜘蛛来了多少次,而取决于它進来之後往下走了几层。抓取總量看着不错、目标頁却始终没有訪問记錄,是运营里最常见的一種“假热闹”。
先明确“深度”指哪几件事
- 連結深度:從入口頁算起,目标 URL 在第几跳被訪問到,是一跳、两跳還是三跳以上。
- 會话深度:同一次抓取會话里,蜘蛛连續訪問了几個頁面才离開。
- 回訪深度:同一個 URL 被發現之後,隔多久被第二次訪問。
這三者要分開看。會话深度高但連結深度低,說明蜘蛛在入口頁附近打轉;連結深度够但回訪深度差,說明頁面被發現了却没被持續關注。
從服務端日誌里讀深度
用 referer 串出訪問鏈路
如果日誌保留了 referer 字段,可以按時間排序,把同 IP、同 UA 的连續請求拼成一條路径:入口頁、中間頁、目标頁。哪一环断掉,基本就是深度止步的位置。要注意部分爬虫不發送 referer,這时只能依靠時間窗和 UA 归並来判断。
看 URL 路径的規律
把目标頁的目錄层級,和日誌里實际被訪問到的层級做對比。如果入口頁被訪問很多次,中間层几乎没有记錄,說明蜘蛛没有沿着連結繼續走;如果中間层有记錄、最後一层没有,問题多半出在中間頁的出口或目标頁自身。
看請求間隔
同一 IP 在一两秒内连續請求多個頁面,通常属于顺着連結展開;如果每次只来一個頁面、間隔很久,更像是被外部触發的單頁訪問,深度一般不會自己涨上去。
哪些因素會限制深度
- 入口頁可点的連結太少或位置太隐蔽,蜘蛛找不到繼續走的路。
- 中間层返回 3xx、404 或超时,鏈路直接中断。
- 目标頁依赖脚本渲染,抓取端拿到的 HTML 里没有可跟随的連結。
- 目錄层級過深,或同類頁面互相争抢内鏈,抓取被分散。
- 抓取预算被大量低價值地址占用,蜘蛛没有余力走深。
几個常见誤区
抓取量大不等于抓得深;sitemap 提交了不等于會被逐個抓取;入口頁連結多不等于路径通畅。
把入口頁做成連結墙,短期可能抬高總請求數,但如果中間环节没有可讀内容、跳轉鏈條不连贯,蜘蛛走两步就回头,目标頁依舊拿不到有效訪問。深度更像一個结构問题,而不是靠堆量能解决的問题。
可以按顺序落地的检查
- 连續導出三到七天的日誌,按 UA 筛出爬虫請求。
- 統計每個入口頁的後續請求數,判断是單頁訪問還是有鏈路展開。
- 抽查被訪問到的最深一层地址,看它是否就是目标頁。
- 對断鏈位置逐個核實狀態碼和响應時間。
- 調整入口頁連結位置與中間层结构後,再观察一轮,只比較同一指标的前後變化。
使用建议
深度是慢變量,通常需要一到两周的日誌才能看出趋势,不必每天盯着看。把“目标頁被訪問的比例”和“被訪問到的平均层級”作為長期观察項,比盯抓取總量更接近真實情况。