做蜘蛛池的人经常遇到這種情况:入口頁的訪問量看着有,目标 URL 却一直没有抓取记錄。這时候多數人會马上去換連結位置、改锚文本,其實更划算的做法是先翻服務器日誌。工具面板给的是结果,日誌给的才是過程。
入口頁被抓和目标 URL 被抓,是两件事。日誌能把這两件事拆開,让你知道卡在哪一步。
先確認入口頁到底被抓了几次、怎么抓的
不要只看“有没有来過”。至少要同时看這一组字段:訪問時間、User-Agent、請求方法、狀態碼、响應字节數、Referer。任何一個字段異常,後面的判断都會跑偏。
- User-Agent:区分是搜尋蜘蛛、第三方爬虫還是监测工具。不同 UA 的行為差別很大,混在一起看容易誤判。
- 請求方法:HEAD 請求不會解析頁面内容,這種情况没提取到連結属于正常,別当成異常。
- 狀態碼:200 之外,304、301、403、429、5xx 都要單獨拎出来看。429 和 503 尤其要留意,它反映的是抓取压力,而不是連結問题。
- 响應字节數:如果明顯小于该頁正常体积,可能是内容被截断、返回了错誤頁,或者中間层替換了 HTML。
- Referer:能帮你還原蜘蛛是從哪條路径過来的,判断它在站点内部是怎么走的。
判断蜘蛛有没有真正“讀到”連結
抓到了頁面,不等于讀到了連結。可以按這個顺序看:
- 同一個 UA 對入口頁的抓取次數,是偶發一次還是持續回訪。
- 响應字节數是否和正常渲染後的体积接近。差得太多,說明拿到的可能是空壳頁。
- 是否伴随請求了頁面里的 CSS、JS 等资源。如果完全没有任何资源請求,說明它没有走完渲染流程。
- 紧接着有没有對頁面内其他連結的請求。如果连站内普通連結都没被跟進,那問题在頁面本身,不在目标 URL。
再去目标站的日誌里找證據
很多人只盯入口頁日誌,忘了目标站也有一份。把目标站日誌按搜尋蜘蛛的 UA 過滤,看有没有對應路径的請求。有請求但狀態碼異常,是另一類問题;完全没有請求,才說明發現环节没走通。两邊的日誌時間對齐之後,因果關系會清楚很多。
几種常见誤判
- 把监测工具、SEO 插件的訪問当成搜尋蜘蛛,结果以為抓取很频繁。
- 只看總訪問量,不看單條记錄的返回狀態,漏掉了 5xx 和超时。
- 用压缩後的传輸字节數和正常体积對比,得出“頁面被截断”的错誤结论。
- 入口頁刚上线几小时就下结论,忽略了抓取本身就有先後顺序和排队。
排查完之後的調整思路
- 如果入口頁狀態碼長期異常,先修入口頁,別急着換目标 URL。
- 如果入口頁一切正常但站内連結也没被跟進,優先检查頁面是否依赖客戶端渲染、是否有大面积屏蔽規則。
- 如果入口頁和目标站都正常,只是目标 URL 没動静,可以适当增加入口頁的稳定性和内容厚度,让它值得被回訪。
- 調整之後留出观察周期再评估,不要一天之内反复改動。
日誌能告诉你“發生了什么”,但不能保證“接下来一定會被抓”。把入口頁做稳定、做真實、做可讀,是唯一可控的部分。