很多人看日誌时會遇到一種情况:某個 URL 明明有蜘蛛来訪记錄,狀態碼也是 200,但在搜尋引擎里搜标题、搜 URL 都找不到。于是很自然地判断“蜘蛛来過就该收錄”,接着開始怀疑是不是被降權。其實抓取和收錄是两件獨立的事,中間隔着好几道處理环节,任何一道没過,頁面都進不了索引。
抓取:蜘蛛只是把内容取回去
抓取的本质是一次 HTTP 請求。蜘蛛拿到 HTML,這一步的任務就算完成了。它並不會在這個环节判断頁面好不好、要不要收錄,只是把字节带回資料中心排队。所以日誌里有訪問记錄,只能說明這個地址被發現了、能正常訪問、返回内容没問题,僅此而已。
從抓取到索引,中間要過几關
渲染
如果頁面主要靠 JS 輸出内容,返回的原始 HTML 里可能只有骨架。蜘蛛要么排队等渲染,要么先讀到一份空壳。渲染资源紧張时,這個队列會拉得很長,表現就是抓了却迟迟没有下文。
主内容提取與解析
引擎需要從 HTML 里判断哪部分是正文,哪部分是導航、广告、评论区。模板占比太大、正文被埋在深层 DOM 里、關键信息直接寫在图片上,都會让提取结果變得很差,頁面在後續环节自然吃亏。
規范化與去重
同一份内容對應多個 URL 时,引擎要選出一個代表。參數版本、大小寫、带斜杠與不带斜杠、http 與 https,如果都返回相同内容又没有 canonical 指向,選谁就由引擎自己决定。落選的那些地址,被抓了也未必單獨收錄。
质量與價值判断
這一關最难量化。内容是否原创、能否回答某個具体問题、站点整体是否可信,都會影响结果。同一批质量接近的頁面里,可能只收一部分;新站和新栏目進入一段观察期,也是常见現象。
抓了却没收錄,先排查這几項
- 頁面是否被 noindex 或 X-Robots-Tag 标记,這類頁面會被抓取,但主動排除在索引之外。
- canonical 是否指向了別的 URL,指向別處等于把收錄资格让了出去。
- 返回的 HTML 里有没有真正的正文,用“查看網頁源代碼”確認,而不是看渲染後的頁面效果。
- 该 URL 是否與其他頁面高度重复,只是參數或路径不同。
- 頁面本身是否存在搜尋需求,一個没人會搜的頁面,收錄了也未必产生價值。
区分“没抓”和“抓了没收”
這两種情况的處理方向完全不同。没抓,問题在發現和可訪問性:内鏈是否指得到、robots 是否挡住、服務器是否稳定、sitemap 是否准确。抓了没收,問题更可能出在渲染、規范化和质量层面。先看日誌里的狀態碼和抓取频率,再看服務端返回的 HTML,最後才讨论内容质量,顺序別反。
抓取解决的是“能不能拿到”,收錄解决的是“值不值得放”。前者靠技術,後者靠内容和结构。把两件事混在一起排查,很容易在错誤的方向上反复改動。
可以主動做的事
- 保證服務器返回的 HTML 里就带有正文,不要把關键内容全部交给 JS。
- 用 canonical 明确每個内容的代表地址,减少引擎自己猜的空間。
- 让重要頁面從首頁几跳之内可達,孤岛頁面很难被稳定發現。
- 提交 sitemap 並保持准确,它不保證收錄,但能减少發現环节的损耗。
- 观察一段時間再下结论,新頁面進入索引本来就有延迟。
把抓取和收錄拆開看,排查思路會清楚很多:先確認蜘蛛来没来,再確認它拿走的是什么,最後才判断這份内容值不值得被留下来。