很多站点在排查抓取問题时,會把“蜘蛛没来”“收錄慢”“排名不動”混在一起看。實际上從 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,但實际是空頁、無结果列表或占位内容。
這些問题不會在抓取日誌里报错,只能通過對比抓取量和索引量、抽查頁面表現来發現。
排查顺序:先確認卡在哪一层
與其同时調整十几個地方,不如按顺序確認:
- 在服務器日誌里搜尋目标 URL,確認有没有被抓取過;
- 有抓取记錄但狀態碼異常,優先修服務器和跳轉鏈路;
- 抓取正常仍没有索引,检查 robots、canonical、渲染方式和内容本身;
- 完全没有抓取记錄,回头確認發現入口是否真的存在,内鏈和 Sitemap 是否可讀。
站点能稳定控制的部分
三個环节里,站点控制力最强的是發現入口和抓取的基础條件:稳定的服務器、清晰的目錄與内鏈、可直接讀取的 HTML、明确的規范 URL。這些不需要額外技巧,也很难被替代。
外部入口、蜘蛛池之類的手段,最多只能在前端推一把,让 URL 更早進入清單。一旦後端條件不成立,推来的抓取机會也會被浪費掉。
抓取和索引都不是站点單方面能决定的事,但把可控的部分做扎實,至少不會让問题卡在最容易解决的那一层。