服務器日誌里每天都有 200 的抓取记錄,索引查询里却找不到這些地址,這是很常见的一幕。抓取和收錄是两件事:抓取只說明蜘蛛把頁面取回了一次,收錄則是搜尋引擎判断這個地址值得放進索引、並在需要时拿出来展示。中間隔着若干道判断,任何一道没過,頁面都可能停在“被抓過但没被收錄”的狀態。
抓取解决的是“拿到”,收錄解决的是“要不要留”
抓取這個動作很机械:给一個 URL,取回响應。收錄要复杂得多,需要處理内容、判断重复、评估质量、决定代表地址,最後才寫進索引。所以日誌里的抓取次數只能說明蜘蛛愿意来,不能說明頁面會被收。把這两件事混在一起,排查时就容易在错誤的方向上反复。
從抓取到收錄,頁面要過這几關
- 能不能抓:robots.txt 是否放行,服務器是否稳定返回 200,有没有 403、429、503 之類的阻挡,抓取是否在限流中被放弃。
- 抓到的是不是正文:返回的 HTML 里有没有标题和主体内容。内容靠 JavaScript 渲染、而蜘蛛没有执行或执行失敗时,拿到的可能只是一個空壳。
- 允不允许索引:頁面是否带 noindex,canonical 是否指向了別的地址,meta 标簽與响應头是否互相打架。
- 是不是重复内容:同一内容存在多個地址(參數、大小寫、分頁、打印頁)时,搜尋引擎通常只保留一個代表地址,其余可能不收錄。
- 值不值得留:正文很少、主要是模板與广告、内容由別的頁面拼接而来的頁面,即使被抓也可能不進索引。
判断卡在哪一步,先看三個地方
- 服務器日誌:看返回碼與抓取次數。只有返回 200 才有内容可判断;長期 5xx 或 429,說明還没進到内容评估阶段。
- 抓取结果:用站長工具或 URL 检查類功能,看蜘蛛實际拿到的 HTML 與頁面声明的規范地址,而不是看浏览器里渲染之後的画面。
- 索引狀態:索引查询只能当參考,數量本身有誤差;關键是看具体的目标地址在不在,以及搜尋结果里出現的是哪個地址。
几個容易誤判的结论
- 日誌里出現抓取记錄,就以為頁面已经收錄。
- sitemap 里提交了地址,就以為一定會被收錄,其實 sitemap 只提供發現入口。
- 抓取频繁就等于收錄好,抓取频率高也可能只是蜘蛛在反复確認一個不會被收錄的地址。
抓取是入口,收錄是结果,中間還要经過内容、重复與质量的判断。
一份最小自查顺序
- 確認目标地址返回 200,且没有跳轉到別的地址。
- 查看返回的 HTML 源碼,確認标题與正文都在里面,而不是靠前端补上。
- 检查 noindex、canonical、robots meta 與响應头是否一致。
- 確認這個地址有獨立價值,不是篩選、排序或同一内容的另一種寫法。
- 確認它有入口:内鏈、sitemap 或外鏈至少有一處。
- 记錄時間,隔一段時間再查一次,不要用一次查询下结论。
把顺序理清,排查會快很多
分開看抓取和收錄之後,排查就有了一條固定路线:先確認蜘蛛能拿到正确内容,再確認頁面本身的規范與质量,最後才是等索引更新。多數“抓取了却不收錄”的問题,答案都能在前两步里找到,而不需要反复猜测搜尋引擎的偏好。