经常有人問:日誌里明明看到蜘蛛抓了几百個 URL,索引报表却只多出几十條;或者反過来,报表顯示已收錄,日誌里却找不到對應的抓取记錄。這两種情况本身都不算故障,多數时候是口径和時間差造成的错觉。真正需要排查的,是排除這两個因素之後仍然對不上的那一部分。
一、先分清抓取、索引和“能被搜到”
這三件事经常被当成一件事,但對不上号的根源往往就在這里:
- 抓取:從服務器日誌或抓取日誌里看到的一次請求。它只說明這個 URL 被訪問過,不說明任何後續结果。
- 索引:URL 進入了索引库,报表里會体現為“已收錄”或“已發現但未编入索引”等狀態。
- 能被搜到:取决于查询词、排序和其他頁面的竞争,属于展示层面,不能直接当成收錄狀態来讀。
把這三层分開之後,很多“抓了却不收錄”“收錄了却搜不到”的疑問會先消掉一半。
二、時間差是最大的干扰項
抓取和索引不是同步動作。蜘蛛訪問完之後,頁面要经過解析、去重、质量判断,才可能進入索引库;报表本身也有更新周期。所以同一時間点截取的日誌和报表,本来就不该完全一致。
常见的几段延迟
- 抓取發生,到该 URL 首次出現在索引报表里,中間可能隔几天到几周,取决于站点整体抓取节奏和頁面權重。
- 索引狀態在报表里的更新,通常滞後于實际狀態變化,短期内以小时或天為單位跳動很正常。
- 已收錄頁面被重新抓取後,索引里的版本替換也需要時間,日誌里看到了新抓取,不等于索引里已经是新版本。
因此核對时第一步不是找差异,而是把两邊的資料限定在同一個時間窗口内。用今天的日誌去比對上周的报表,结论必然是错的。
三、抽样口径與覆盖范围不一致
索引报表大多是抽样或估算结果,展示的是某個時間点系統認為的狀態;而日誌是逐條记錄的全量請求。拿全量样本去比對抽样样本,差异天然存在。另外還要注意:
- 报表里看不到某個 URL,不代表它没被抓過,可能只是没被列進你查看的那一列。
- 日誌里也没有的 URL,通常說明它還没被發現,這时才轮到 URL 發現入口的問题。
- 同一頁面的多個變体(带參數、大小寫不同、结尾斜杠不同)會在核對时被算成不同條目,先把變体归並再對比。
四、建议的核對顺序
- 固定時間窗口:日誌和报表取同一段日期,避免跨周期比對。
- 固定样本:挑一批有代表性的 URL,比如栏目頁、詳情頁、過滤頁各取一部分,而不是全站混着看。
- 归並 URL 變体:把參數、大小寫、斜杠差异统一成規范形式,再統計數量。
- 排查訪問限制:robots.txt、noindex、canonical 是否與预期一致,返回碼是否稳定在 200。
- 检查頁面本身:正文是否能被抓到、是否存在大量模板化内容、同一内容是否有多個版本。
- 记錄差异並隔周复查:一次對不上說明不了什么,连續两三次都對不上同一批 URL,才值得深入處理。
五、几個容易踩的坑
日誌里有抓取,不代表頁面一定會被索引;报表里没顯示,也不代表頁面一定没被索引。两條資料流本来就不是一一對應的。
另外两点提醒:推送類工具只能提高 URL 被發現的概率,不會改變索引层面的判断,把它当成“保證收錄”的手段容易誤判問题所在;站点地图提交了 URL,也仍然要走同样的篩選流程。
把抓取和收錄分開看,把時間差和抽样口径先排除掉,剩下的差异通常就指向具体問题了:要么是頁面本身不适合進入索引,要么是訪問限制或 URL 規范没理清。先缩小范围,再動手改,比一次性調整一堆設定更靠谱。