搜尋抓取

蜘蛛發現了 URL 却不来抓:抓取队列里的等待卡在哪

URL 被發現和被抓取是两件事,中間隔着一個待抓取队列。本文說明新頁面顯示“已發現—尚未抓取”时常见的原因:低價值 URL 挤占抓取名額、服務器响應慢、缺少站内入口、内容與已有頁面過近,並给出從服務器日誌和抓取統計判断卡点的顺序。

搜尋抓取

蜘蛛發現了 URL 却不来抓:抓取队列里的等待卡在哪

在很多站点的服務器日誌里,经常出現這样的情况:某個 URL 明明已经上线,Search Console 里也顯示“已發現—尚未抓取”,但日誌里翻不到任何一次請求记錄。這說明蜘蛛已经知道這個地址,只是還没来。發現和抓取是两件分開的事。

發現和抓取,中間隔着一個队列

發現通常發生在蜘蛛抓取別的頁面时——它讀到一條連結,或者從 Sitemap、外鏈、提交接口拿到一個 URL。抓取則是它真的向服務器發起請求。两者之間隔着一個待抓取队列,URL 進去之後要排队,排队顺序不由你直接决定,而是由蜘蛛根據站点整体情况判断。

所以“被發現了”只代表進入候選名單,“還没抓”往往是在等一個更值得先抓的机會。

队列里的等待,通常卡在這几處

一、低價值 URL 占掉了抓取名額

參數组合頁、篩選排序頁、带會话 ID 的地址、内容近似的列表頁,這些 URL 數量可能比正文頁還多。蜘蛛每次来都優先處理它們,真正想被收錄的新頁面自然排在後面。

  • 把無意义的參數頁用 robots.txt 或 canonical 收口;
  • 篩選頁不要生成可無限组合的連結;
  • 分頁保留必要的几頁即可,不必全部放開。

二、服務器响應慢,或者不稳定

响應時間明顯偏長、频繁超时、偶發 5xx,都會让蜘蛛主動放慢节奏。它宁可少来几次,也不愿意把预算花在等待上。抓取频次下降之後,新 URL 的排队時間自然變長。

三、URL 没有真實入口

只在 Sitemap 里出現、站内没有任何連結指向的地址,優先級通常偏低。Sitemap 是“声明”,内鏈才是“路径”。蜘蛛沿着連結走,比對着清單找,成本低得多。

四、頁面内容太接近已有頁面

如果新 URL 的正文與站内某個已抓取頁面高度相似,蜘蛛可能把它归並過去,不再單獨抓取。典型情况是同一内容被套了多個模板地址,或者 canonical 指向了另一頁。

怎么判断卡在哪一步

  1. 在日誌里直接搜该 URL 的路径,確認是否出現過請求;
  2. 看抓取統計里站点總抓取量的變化趋势,是整体下降還是個別頁面没被抓;
  3. 检查 Sitemap 里的 URL 是否在站内都有可点击的入口;
  4. 統計服務器响應時間的分布,以及 5xx 的比例;
  5. 用 URL 检查工具看目前狀態是“已發現”還是“已抓取未编入索引”,两者含义不同。

想让新 URL 更快進入抓取,可以做的几件事

  • 從已经常被抓取的頁面,加一條真實的正文連結指向新 URL;
  • Sitemap 只放确實希望被抓取的地址,並保持與實际内容一致;
  • 减少重复頁和低價值頁的暴露面,让抓取名額留给正文;
  • 把服務器响應時間和错誤率稳定下来,避免高峰期抖動;
  • 不要靠批量提交或短期大量外鏈冲量,這類信号不持久。
抓取频次是结果,不是可以随手調高的開關。你能改變的是站点的结构、入口和响應质量,蜘蛛的回訪节奏跟着這些走。

小结

“已發現—尚未抓取”不是故障,而是排队狀態。多數时候它反映的是站点里有太多不值得抓的地址,或者入口太浅、响應太慢。把重复和低價值 URL 收掉,把新頁面接到已有的内鏈路径上,並让服務器稳定响應,往往比反复提交更管用。