很多站点运营者把 URL 發現理解成两件事:首頁上有連結、Sitemap 里有地址。實际抓取中,蜘蛛發現連結的通道要杂得多,而且每條通道的優先級、延迟和稳定性都不一样。搞清楚蜘蛛可能從哪里捡到連結,才能判断「這個 URL 一直没被抓」到底卡在哪一环。
蜘蛛發現 URL 的几條主要通道
- 首頁與主導航:多數站点的第一批 URL 来自這里,路径短、位置固定,通常也是抓取優先級最高的区域。
- 站内正文内鏈:文章、商品詳情、专题頁之間的互相連結,是内頁被持續發現的主要来源。連結出現的位置、上下文和數量,都會影响它被走到的概率。
- Sitemap:适合把數量大、层級深、内鏈触達弱的 URL 集中交出去。它不是抢抓取的工具,更像一份补漏清單。
- 站外連結:別人頁面上的連結會把你带進蜘蛛的视野,但出現時間、連結位置以及是否被跟随,都不由你决定。
- 订阅源:内容站保留可訪問的 RSS 或 Atom 輸出,等于给新發布的 URL 多留一個發現口子,對更新频繁的栏目尤其明顯。
- 站内搜尋與篩選结果:這類頁面能被爬到,但容易批量生成高度相似的 URL,通常更该考虑收口,而不是主動往外放。
- 主動提交接口:部分搜尋引擎提供提交或 IndexNow 一類的接口,能加快「我知道有這個地址」這一步,但對是否抓取、是否收錄没有承诺。
通道之間並不等價
同样一個 URL,從首頁導航被發現的,和只能在很深的分頁鏈路里被發現的,進入抓取队列的時間可能差出很多。结构位置、被連結的次數、周围頁面的更新频率,都會影响蜘蛛回訪的节奏。
把 URL 交出去只完成了一半;另一半是让蜘蛛走這條路时不費力——連結可達、頁面能正常返回、服務器不频繁超时。
服務器這一层常被忽略
通道再多,如果站点在蜘蛛来訪时频繁返回 5xx、连接超时,或者响應時間明顯拉長,抓取节奏就會被压下来。URL 發現和抓取执行是两段獨立的過程:前者决定蜘蛛有没有见過這個地址,後者才决定能不能把内容拿到。排查时不要只盯着 Sitemap 條數和内鏈數量,也要核對服務器日誌里蜘蛛請求的狀態碼與耗时。
几個容易踩的誤区
- 把提交当成收錄:提交只解决發現,抓取和入選是後面的环节。
- 只加連結不看位置:埋在頁脚深處的連結,作用和正文里的連結差別明顯。
- 為了「多给入口」反复堆同一地址:重复入口不會带来額外收益,反而让頁面顯得杂乱。
- 忽略被跳轉的 URL:Sitemap 里留着會 301 的地址,等于让蜘蛛多走一步。
可以按這几步核對
- 用日誌統計蜘蛛請求,按狀態碼和响應時間分组,先確認没有大面积的 5xx 或超时。
- 抽查若干内頁,確認從首頁出發沿内鏈能在少量跳數内到達。
- 比對 Sitemap 中的 URL 與實际可訪問的地址,去掉已下线或會跳轉的條目。
- 观察新發布内容的首次被抓時間,判断問题是「發現慢」還是「抓取慢」。
- 某個栏目長期抓取不足时,先看它的入口位置和被連結情况,再考虑調整结构。
把這些通道分開看待,比單纯增加連結或反复提交更有用。發現通道决定 URL 是否進入视野,内鏈和站点结构决定它排在队列的什么位置,服務器狀態則决定蜘蛛愿不愿意持續来。