搜尋抓取

已發現未抓取:蜘蛛知道 URL 却没来取,卡在哪一环

很多 URL 被提交、被内鏈指向,却迟迟等不到蜘蛛来取。本文把「發現」和「抓取」分開看,梳理 URL 的几條發現通道、抓取被推迟的常见原因,並给出一套從抓取統計报告到服務器日誌的排查顺序,帮助站長把問题定位到具体环节。

搜尋抓取

已發現未抓取:蜘蛛知道 URL 却没来取,卡在哪一环

做站点运营时经常遇到一種情况:某個頁面已经寫進 Sitemap,站内也有連結指向它,可等了几周,服務器日誌里就是没有蜘蛛的訪問记錄。要弄清問题出在哪,先要把两件事分開:URL 被發現,和 URL 被抓取,是两個獨立环节,卡点往往不在同一個地方。

先分清三種狀態

把「蜘蛛没来」笼统当成一個問题,排查方向很容易跑偏。實际至少有三類狀態:

  • 已發現、未抓取:蜘蛛知道這個地址存在,但還没排到它,或者不打算優先排它。
  • 已抓取、未收錄:頁面已经被取走,只是後續判断不适合展示。這一环的問题要到内容质量和重复度上找。
  • 抓取失敗:蜘蛛来過,但拿到的是超时、5xx 或反复重定向,取頁没有完成。

三者的處理方式完全不同。判断时優先看日誌里有没有訪問记錄,有记錄就說明問题不在發現环节。

URL 通常是被谁發現的

常见的發現通道有几條,节奏差別不小:

  • Sitemap:属于主動告知,但告知不等于立刻排队,它更多是给蜘蛛一份可對照的清單。
  • 站内連結:持續、可重复的發現方式。放在首頁或栏目近期列表里的連結,通常會被反复走到。
  • 外鏈與轉载:不由自己控制,速度快慢看對方站点的抓取频率。
  • 重定向與已抓頁面的解析:蜘蛛在取一個頁面时,會顺便解析其中的連結,相当于沿着已有路径向外扩展。

如果一條 URL 只出現在 Sitemap 里,站内没有任何入口指向它,它的發現時間就會明顯拉長,抓取優先級也偏低。

發現之後為什么迟迟不来

抓取资源有限,站点之間也在排队

蜘蛛每次到訪能取多少頁面是有上限的,站点整体被信任的程度、歷史抓取的顺利程度都會影响這個上限。新站或者長期响應不稳定的站,排队會更靠後。

抓取額度被低價值 URL 占用

參數组合頁、篩選结果頁、内容几乎相同的分頁副本,這些地址如果可以被自由抓取,會消耗掉相当一部分抓取次數。留在队列里的真正需要抓取的 URL,就要往後排。

服務器响應拖慢整批抓取

單次响應時間過長、間歇性 5xx、连接超时,都會让蜘蛛提前結束這一轮抓取。表面看是「没来」,實际是来過但没取完。

一套可执行的排查顺序

  1. 在搜尋後台的抓取統計里,按狀態把待處理的 URL 分類,先確認它們属于「已發現未抓取」還是「抓取異常」。
  2. 翻服務器日誌,看這些地址有没有被訪問過,返回碼是什么。這一步能快速排除一半的猜测。
  3. 對照 Sitemap:地址是否在其中、狀態碼是否為 200、lastmod 是否與頁面實际更新時間一致。
  4. 從首頁出發數一數到目标頁需要几跳。跳數太深、只靠邊栏深處的連結抵達,抓取频率會明顯降低。
  5. 統計目标頁所在目錄的平均响應時間和错誤率,確認是否有整段時間的異常。

日常维護里的几個习惯

  • 新頁面除了寫進 Sitemap,也给一個稳定的站内入口,例如栏目近期列表或相關推荐。
  • 定期检查 Sitemap,把已刪除、已合並的地址清理掉,避免清單里長期挂着無效 URL。
  • 對篩選、排序、會话類參數做規范化處理,减少同一内容产生多個地址。
  • 關注服務器错誤率的趋势,而非某一次波動,異常持續存在才值得動手。
抓取覆盖情况的改善是渐進的。調整结构、清理無效地址、優化响應速度之後,通常要观察一段時間才能看出趋势變化,不必因為一两天没有動静就反复改動。

把「發現」和「抓取」分開看之後,大部分困惑會變得可定位:是入口不够,是队列太長,還是服務器没接住。先確認卡在哪一环,再决定改什么,比反复提交地址更有效。