服務器日誌里能看到搜尋蜘蛛的訪問记錄,很多人會據此判断“抓取没問题,等着收錄就行”。但抓取和收錄是鏈路上前後相接的两個环节,前者只說明頁面被請求、被取回了内容,後者還要经過解析、质量判断、去重和索引分配。日誌正常,只能說明入口和可訪問性没有明顯障碍,不能推出頁面一定會進索引。
抓取日誌能證明什么,不能證明什么
它能證明的事情其實比較有限:蜘蛛找到了這個 URL,請求得到了响應,服務器没有把它挡在门外。如果狀態碼是 200 並且返回了完整的 HTML,還可以說明這一步没有报错。
它不能證明的則多得多:正文是否被完整解析、内容是否被判為有效、是否與其他頁面高度重复、最终有没有被寫進索引。日誌按請求记錄,索引按内容判断,两者之間並不存在一一對應關系。把日誌当成收錄的凭證,容易在错誤的方向上繼續優化。
從日誌往下走,卡点通常在這几處
响應本身有問题
200 並不等于内容可用。空壳頁面、正文需要交互才出現、返回内容與用戶實际所见差別很大,都會让這一次抓取在資料上“成功”,但後續處理走不下去。還有一種情况是响應体過小,或者正文被大量模板代碼淹没,抽取阶段拿不到有意义的主体内容。
頁面自己把索引让了出去
noindex 标簽、robots meta 指令、X-Robots-Tag 响應头、指向其他地址的 canonical,任何一項都會让頁面在解析阶段被排除或归並到別處。這類問题在日誌里完全看不出来,必须在頁面源碼和响應头上逐項核對。尤其要注意改版、模板調整之後遗留的舊指令。
内容與其他頁面過于接近
同一套模板下批量生成的頁面,如果正文差异只体現在城市名、型号名上,被判定為重复或價值不足的概率會明顯上升。此时抓取可能很频繁,但收錄迟迟不動。處理方向通常是增加真正有区分度的信息,而不是繼續给同一批頁面加内鏈。
渲染依赖没有跑完
如果主要内容由客戶端脚本生成,而脚本依赖接口、依赖某個第三方资源,或者首屏之後才注入正文,抓取到的初始 HTML 里可能是空的。抓取记錄照样存在,索引拿到的却是一副空架子。可以關閉脚本查看一次頁面源碼,大致判断風險。
一套可复用的排查顺序
- 先看日誌细节:確認返回狀態碼、响應体大小、抓取時間分布,判断是零星抓取還是稳定抓取。
- 再看响應头與頁面指令:检查 noindex、canonical、X-Robots-Tag,確認頁面没有主動登出索引。
- 然後看原始 HTML:禁用脚本後查看源碼,確認正文是否在初始响應中就存在。
- 接着做同類對比:把已收錄頁面和未收錄頁面放在一起,比較内容深度、獨有信息、内鏈入口的差別。
- 最後看時間:新頁面從抓取到索引本身存在延迟,短時間内反复改标题、改正文反而會打乱判断。给頁面留出观察窗口,再做结论。
判断問题出在抓取還是收錄,關键不是“蜘蛛有没有来”,而是“蜘蛛取到的是什么,以及這份内容有没有被判定為值得單獨建索引”。
把關注点從抓取挪到内容
当日誌顯示抓取稳定、狀態碼正常,却依然没有收錄时,繼續在抓取层面加投入往往收效有限。更值得花時間的是:這一頁是否提供了別處没有的信息,是否和其他頁面足够不同,是否在初始响應里就能讀到主体内容。收錄不是一個開關,而是内容经過一系列判断後的结果。把這些判断的前提准备好,比反复刷新日誌更有意义。