在抓取报告里看到一批 URL 的狀態是「已發現 - 目前尚未编入索引」,很多人的第一反應是内容出了問题。其實這個狀態說明的是:蜘蛛已经知道這些 URL 存在,但還没去抓,或者抓了還没處理完。發現和抓取是两件不同的事,中間隔着一個排队與處理的過程。
發現與抓取之間,隔着一個队列
URL 被發現的通路很多:Sitemap、站内連結、外部連結、主動提交、重定向等。只要其中一條被蜘蛛讀到,這個 URL 就會進入它的待抓取队列。但進入队列不等于马上被抓,蜘蛛會根據自己的抓取能力和站点實际情况,给队列里的 URL 排先後顺序。
所以「已發現未抓取」本质上是一個等待狀態。等待時間的長短,取决于蜘蛛愿意在你的站点上花多少時間,以及它判断這些 URL 值不值得優先處理。
常见卡点有哪些
低價值 URL 占住了抓取份額
如果一個站点里存在大量參數頁、篩選结果頁、重复内容頁,蜘蛛每次来訪都可能被這些 URL 消耗掉大部分時間,真正想被抓的新頁面反而排在後面。用 robots.txt 屏蔽無意义的參數组合、给重复頁面做好規范化,能把浪費掉的那部分份額收回来。
服務器响應慢或不稳定
蜘蛛在抓取過程中會记錄响應時間和错誤率。如果经常出現超时、5xx 错誤,它會主動降低對你站点的抓取频率,而且這個調整往往需要一段時間才會恢复。抓取量下降时,先去看服務器日誌里的 5xx 比例,通常比反复提交 URL 更有效。
内鏈太少,頁面位置太深
只寫在 Sitemap 里、站内没有任何連結指向的頁面,即使被發現,也很容易被放到队列末尾。内鏈是蜘蛛判断頁面重要程度的直接依據:從首頁点几次能到、有多少相關頁面指向它,都會影响它的處理優先級。
提交量超過了處理节奏
一次性提交几萬個新 URL,和分批、持續地提交,效果差別很大。蜘蛛的抓取能力有上限,堆积的队列只會让每個 URL 等得更久。新内容按實际發布节奏提交,比集中推送更容易被及时處理。
重定向與規范化带来的額外消耗
如果一個 URL 要经過多跳重定向才能到達最终頁面,蜘蛛需要多次請求才能完成一次抓取,成本更高。把重定向鏈压到一跳,並確認最终地址就是你想被抓取的那個,可以减少這類無谓消耗。
怎么判断卡在哪一步
- 看服務器日誌:蜘蛛最近来過哪些 URL,返回了什么狀態碼,响應時間是多少。
- 看抓取統計:抓取總請求量是在上升還是下降,明顯下降通常和服務器狀態或站点结构有關。
- 看内鏈:随机抽几個未抓取的 URL,數一數站内到底有多少連結指向它。
- 看是否有屏蔽規則:robots.txt、meta robots、X-Robots-Tag 是否誤伤了這些頁面。
可以做的几件事
- 清理低價值 URL:屏蔽參數頁、空结果頁、重复列表頁,把抓取份額留给真正的内容。
- 补内鏈:從相關文章、栏目頁、面包屑给目标頁加入口,让它在站内不再孤立。
- 稳定服務器:控制 5xx 比例,避免蜘蛛来訪时频繁超时。
- 维護 Sitemap:只放值得抓取的 URL,lastmod 如實更新,別把它当成堆放地址的清單。
- 分批提交:跟着内容發布节奏走,而不是攒一批一次性推上去。
「已發現未抓取」不是必须立刻處理的错誤狀態,它更像是蜘蛛给出的一條排队提示。把站内低價值 URL 收干净、把内鏈补上、让服務器保持稳定,队列前進的速度通常會變快。
需要提醒的是,以上做法都只是提高被及时抓取的可能性,没有哪種手段能保證某個 URL 一定被抓取或收錄。抓取决策最终由蜘蛛自己完成,运营能做的是减少阻碍、降低它抓取你站点的成本。