網站收錄

抓取、渲染、收錄:頁面進索引前要過的三道關

蜘蛛来過頁面却迟迟不進索引,往往是因為把抓取、渲染、收錄三件事混成了一件。本文把流水线上的三個环节拆開,說明每一關常见的卡点,並给出按顺序排查的方法,帮你判断頁面究竟停在哪一步。

網站收錄

抓取、渲染、收錄:頁面進索引前要過的三道關

「蜘蛛来過我的頁面,為什么還是没收錄?」這個問题之所以难回答,是因為它把三件不同的事压缩進了一句话。抓取、渲染、收錄是流水线上的三個环节,任何一环没通過,頁面都不會出現在索引里。把它們拆開看,排查會快很多。

三個环节,各管一段

简單说:抓取是蜘蛛把 URL 對應的响應取回去;渲染是它把頁面跑成最终形態,看到用戶真正看到的内容;收錄是把處理後的结果寫進索引。前者是搬运,中者是理解,後者是判断要不要留下。

很多「蜘蛛天天来却没收錄」的情况,其實卡在第一關或第二關,只是日誌里都是 200,看起来一切正常。

第一關:抓取

日誌里能看出什么

  • 200 只說明响應正常,不說明内容被理解。返回 200 但正文為空、完全靠脚本撑起来的頁面,一样可能是空壳。
  • 同一個 URL 反复被抓,通常意味着它被判定為重要但還没定论,或者站内入口太多。
  • robots.txt 拦截、5xx、超时属于這一關的失敗,後面的环节根本轮不到。

常见卡点

URL 參數過多、同一内容存在多個地址、服務器响應過慢、頁面依赖登入或表單,都會让抓取這一關走不完整。

第二關:渲染

現在很多頁面靠 JavaScript 拼出正文。蜘蛛拿到 HTML 时看到的可能只是一個空容器,正文要等脚本执行完才出現。渲染這一步不通過,收錄环节看到的就是一個几乎没有内容的頁面。

  • 正文和主要連結尽量出現在初始 HTML 里;
  • 不要让 JS 動態决定 canonical、robots meta 這類關键指令,它們最好在源碼里就是确定值;
  • 内容如果必须异步加载,至少保證首屏核心信息不依赖它。

判断方法很直接:在浏览器里禁用 JavaScript 打開頁面,如果只剩下導航和頁脚,那渲染就是風險点。

第三關:收錄

到這一步,頁面内容已经被理解,搜尋引擎要决定它值不值得放進索引。判断标准不是「有没有被抓到」,而是「跟已有内容比,它是否提供了不一样的東西」。

  • 與站内其他頁面高度相似,可能被归並;
  • 内容過薄,或主要由模板、列表、聚合生成;
  • 同一主题存在多個近似版本,最後只保留一個。

這也是為什么批量生成的頁面抓取率很高、收錄率却很低——它們顺利過了前两關,倒在第三關。

抓取是事實,收錄是判断。日誌能告诉你前者,索引狀態才會告诉你後者,两者不能互相替代。

怎么按顺序排查

  1. 先看服務器日誌,確認目标 URL 有没有被抓過、返回什么狀態;
  2. 没被抓過,問题在發現和入口:内鏈、sitemap、点击深度;
  3. 抓過但内容是空壳,問题在渲染;
  4. 渲染正常却仍不收錄,轉向内容质量與重复度;
  5. 内容和结构都没問题,再检查是否被指令挡住,比如 noindex 或 canonical 指向了別處。

几個容易混淆的点

  • 「已發現」不等于「已抓取」:URL 進了待抓队列,跟真正被訪問是两件事。
  • 「已抓取」不等于「已收錄」:抓取只是把材料拿回来。
  • 「不在索引里」不等于「被惩罚」:多數情况只是没通過质量篩選,改内容比猜原因有用。

實操上能做什么

與其盯着收錄總量,不如按目錄、按模板分组看通過率,異常往往集中在某一類頁面上。發現某類模板大面积卡在同一關,先解决這一類,比逐個頁面調優效率高得多。

另外,重要頁面尽量少依赖動態渲染,關键指令寫死在 HTML 里,站内入口保持清晰。這些做法不會保證收錄,但能减少在流水线上無谓的损耗。