頁面迟迟不進索引,常见的归因是“内容质量不够”。但真實情况里,有相当一部分頁面卡住的原因更简單:蜘蛛根本没走到它面前,或者只是從一條质量很差的路径掃到了它。日誌能把這些路径摊開来看,比反复提交 URL 更有用。
日誌里值得盯的几列
不用做很复杂的分析,先把下面几列固定下来,按天聚合就够用:
- 請求時間:判断是集中抓取還是零星路過。
- User-Agent:区分真正的搜尋蜘蛛和其他爬虫、以及伪装的采集程序。
- 請求路径:注意带上參數的完整形式,參數常常是問题的来源。
- 狀態碼:200 不代表内容被采纳,但 404、410、5xx 值得單獨看。
- 响應体大小:很小的响應往往是空壳頁或跳轉頁。
多數日誌會带 Referer,但蜘蛛经常不發送,所以不能只靠它判断来源。更可靠的做法是把日誌路径和站内结构、sitemap 内容做交叉比對。
頁面通常從哪几條路径被發現的
- 内鏈:最稳定的一條。前提是連結出現在可抓取的 a 标簽里,而不是靠点击事件触發。
- sitemap:适合补充收錄,不适合当成唯一入口。sitemap 里寫了,只代表“被知道”,不代表會被優先抓取。
- 外鏈:從別站带過来的入口,日誌里表現為路径突然出現,且站内没有指向它的連結。
- 重定向鏈:舊地址 301 到新地址,蜘蛛會顺着走,但如果鏈條太長,容易在中間断掉。
- 自動生成的 URL:篩選參數、排序參數、站内搜尋结果頁,這類地址常常自己繁殖出一大批。
把日誌和索引狀態對上
日誌只能說明“来過”,索引狀態只能說明“現在的结果”,两者要放一起看才有意义:
- 按周導出日誌,先筛出搜尋蜘蛛的請求。
- 按路径聚合,統計每個 URL 被請求的次數和首次出現時間。
- 区分首次抓取和重复抓取:同一個 URL 一周被請求几十次却没有内容變化,多半是抓取资源分配不合理。
- 抽样一批 URL,逐一核對目前的索引狀態。
- 把样本分成三组:抓取過且已索引、抓取過但未索引、從未被抓取。三组的問题解法完全不同。
几個容易被誤讀的現象
- 蜘蛛来過等于會收錄:两者中間還隔着内容判断這一步。
- 抓取频次高等于頁面重要:高频往往發生在老 URL 或频繁變動的列表頁上。
- 日誌里有路径就等于有内鏈:外鏈、歷史地址、甚至是別人抓取工具带過来的請求都會留下记錄。
- 狀態碼 200 就等于正常:返回一個“正在加载”的空頁面也是 200。
日誌的用途不是證明頁面被收錄,而是回答一個問题:蜘蛛是沿着哪條路走到這里的,這條路值不值得繼續走。
發現路径有問题时的調整顺序
- 先修内鏈:確認重要頁面從首頁出發能在少數几次跳轉内点到,且連結是可抓取的。
- 再收 URL 暴露面:把無检索價值的參數頁、站内搜尋结果頁做统一處理,减少蜘蛛在低價值地址上的消耗。
- 然後整理 sitemap:只放規范地址和确實希望被收錄的頁面,不要把所有生成的 URL 都塞進去。
- 最後观察:調整後留出两到四周,重新對比日誌中的路径分布和索引狀態样本,看變化是否出現在预期的那一類頁面上。
把這套對照做熟之後,收錄問题會從“猜原因”變成“查路径”。大多數卡住的頁面,答案就在日誌里那几行請求记錄上。