搜尋抓取

URL 被發現、被抓取、被索引:三個阶段各自卡在哪里

把“蜘蛛没来”和“收錄慢”分開看,問题往往卡在三個环节之一:URL 是否被發現、是否真的被抓取、是否進入索引。本文按這三层梳理各自的判断依據、常见堵点,以及站点在實际运营中能稳定控制的部分。

搜尋抓取

URL 被發現、被抓取、被索引:三個阶段各自卡在哪里

很多站点在排查抓取問题时,會把“蜘蛛没来”“收錄慢”“排名不動”混在一起看。實际上從 URL 生成到出現在搜尋结果里,中間至少隔着三個動作:被發現、被抓取、被索引。任何一個环节卡住,後面的环节都不會發生,而每個环节的判断依據和排查手段都不一样。

第一阶段:URL 被發現

被發現的意思是,蜘蛛的待抓取清單里出現了這個 URL。它不需要蜘蛛訪問頁面就能完成——一次外鏈、一條 Sitemap 记錄、一個站内連結,都可能让 URL 進入清單。常见的入口有几類:

  • 内鏈:從已有頁面指向新頁面,是最稳定可控的入口,尤其是導航、列表頁、相關推荐這類被抓取频率較高的頁面。
  • Sitemap:适合批量提交,但它是建议而非命令,蜘蛛仍會按自己的节奏處理,提交之後不會立刻抓取。
  • 外部連結和其他站点入口:包括各類第三方入口。蜘蛛池這類手段的作用基本停留在“让 URL 出現”這一步,不能替代站内结构,也不适合当成長期方案。
  • 站内搜尋、RSS、分類索引頁:對内容量大的站点,可以作為补充入口,但同样需要保證頁面本身可被直接訪問。

判断方法很简單:先看服務器日誌里是否出現過该 URL 的請求。如果完全没有訪問记錄,問题大概率在發現环节;如果訪問過,就繼續往後看。

第二阶段:URL 被抓取

被抓取意味着蜘蛛真的向服務器發了請求。這一步的變量主要不在頁面内容,而在下面几個方面:

  • 服務器可用性:5xx、连接超时、频繁断连都會让蜘蛛降低抓取频率,恢复往往需要一段時間。
  • 狀態碼:200 才是正常获取;3xx 會消耗一次跳轉,4xx、5xx 會让 URL 被反复回訪或直接放弃。
  • robots 與 noindex:robots 阻止的是抓取,noindex 阻止的是索引,两者作用不同,配错會導致 URL 長期停在清單外,或者抓了也不入库。
  • 抓取预算:站点体量越大,低價值 URL 越多,真正需要的頁面分到的抓取机會就越少。

第三阶段:URL 被索引

抓取成功不等于有索引。蜘蛛拿到 HTML 之後,還要解析、渲染、去重、判断内容质量,最终才决定是否入库。常见的拦路情况包括:

  • 頁面主要靠 JS 渲染,連結和正文在初始 HTML 里都不存在;
  • 同一份内容對應多個 URL,規范版本没有明确;
  • 頁面内容過薄,或者與站内已有頁面高度相似;
  • 返回的是 200,但實际是空頁、無结果列表或占位内容。

這些問题不會在抓取日誌里报错,只能通過對比抓取量和索引量、抽查頁面表現来發現。

排查顺序:先確認卡在哪一层

與其同时調整十几個地方,不如按顺序確認:

  1. 在服務器日誌里搜尋目标 URL,確認有没有被抓取過;
  2. 有抓取记錄但狀態碼異常,優先修服務器和跳轉鏈路;
  3. 抓取正常仍没有索引,检查 robots、canonical、渲染方式和内容本身;
  4. 完全没有抓取记錄,回头確認發現入口是否真的存在,内鏈和 Sitemap 是否可讀。

站点能稳定控制的部分

三個环节里,站点控制力最强的是發現入口和抓取的基础條件:稳定的服務器、清晰的目錄與内鏈、可直接讀取的 HTML、明确的規范 URL。這些不需要額外技巧,也很难被替代。

外部入口、蜘蛛池之類的手段,最多只能在前端推一把,让 URL 更早進入清單。一旦後端條件不成立,推来的抓取机會也會被浪費掉。

抓取和索引都不是站点單方面能决定的事,但把可控的部分做扎實,至少不會让問题卡在最容易解决的那一层。