搜尋抓取

URL 從哪来:Sitemap、内鏈與外鏈各自的發現邊界

蜘蛛發現 URL 主要靠三條通道:Sitemap、站内連結和外部連結。它們覆盖的范围、生效的速度和可控程度都不一样。這篇文章把三者拆開看,說明各自的邊界、常见誤用,以及發現之後還需要跨過哪些环节才能進入索引。

搜尋抓取

URL 從哪来:Sitemap、内鏈與外鏈各自的發現邊界

蜘蛛能不能抓到一個頁面,前提是它先知道這個 URL 存在。站点的 URL 被發現,通常来自三條通道:Sitemap、站内連結、外部連結。三條通道並行工作,但覆盖面、生效速度和可控程度都不一样。把它們混在一起谈,容易得出错誤结论,比如 Sitemap 提交了却没什么變化,就判断“蜘蛛根本没来”。

三條通道解决的不是同一個問题

Sitemap:覆盖面最广,但只是一份候選清單

Sitemap 的價值在于一次性给出大量 URL,尤其是那些藏在深處、站内連結很少指向的頁面。它不依赖层級结构,也不要求頁面之間互相连通,所以對缺乏入口的頁面最有用。

但 Sitemap 只负责“告诉”,不负责“要求”。里面的 URL 會被放進待抓取队列,什么时候抓、抓不抓,仍取决于服務器响應、頁面质量和抓取预算。清單里混入大量低质或重复 URL,反而會稀释真正重要頁面的机會。

内鏈:發現效率通常更高,但受结构限制

蜘蛛沿着連結走,是發現 URL 最自然的方式。一個頁面只要從首頁出發经過少數几次点击就能到達,被發現的速度往往更快,重新訪問的频率也更高。

局限也很明顯:它只能發現被連結到的頁面。導航、列表頁、相關推荐没有覆盖到的地方,連結一断,路径就断了。另外,同一個 URL 從多個入口被反复連結,並不會让抓取量线性增長,只會让這條路径顯得更重。

外鏈:不可控,但能带来站外入口

外部連結的價值在于提供一個站外入口。對新建站点,或者站内结构還没理顺的站点,外鏈有时是蜘蛛第一次到達的途径。

但它並不由站点控制:連結可能在,也可能被删;可能带 nofollow,也可能出現在蜘蛛很少訪問的頁面上。把 URL 發現完全押在外鏈上,稳定性很差。

常见的三類誤用

  • 把 Sitemap 当成推向索引的工具。它能提高被發現的概率,但替代不了頁面本身的可抓取性和内容质量。
  • 只看内鏈,不做清單核對。内鏈會产生大量重复路径,日誌里看起来抓取很活跃,實际覆盖的 URL 集合可能相当有限。
  • Sitemap 與站内連結長期不一致。清單里是舊地址,站内已经指向新地址,两邊對不上时,抓取會分散在两條並行路径上。

一個可执行的排查顺序

  1. 先取出一段時間的抓取日誌,整理出被訪問過的 URL 集合,再和 Sitemap 里的 URL 集合做對比。
  2. 找出只出現在 Sitemap、日誌里從没出現過的 URL,逐一检查是否被 robots.txt 拦截、是否返回異常狀態碼、是否响應過慢。
  3. 找出日誌里有、Sitemap 里没有的 URL,判断是參數、分頁還是歷史遗留地址,再决定归一化還是补充進清單。
  4. 抽查重要頁面從首頁出發的最短点击路径,確認没有断鏈,也没有深到难以到達的层級。

被發現之後,還有几道關

URL 被發現只是第一步。它還要经過抓取、渲染、内容判断几個环节,才可能進入索引。發現量增加,不代表抓取量同步增加;抓取量增加,也不代表索引量立刻跟上。這几者之間既有时差,也有篩選。

所以观察站点抓取狀態时,與其盯着單一指标,不如把三件事放在一起看:Sitemap 覆盖了多少 URL、日誌里實际抓了多少、站内還有多少可抓但没被抓。三者之間的差,往往才是下一步要處理的地方。

三條發現通道是互补關系,不是替代關系。清單负责广度,内鏈负责速度與深度,外鏈负责补充入口。任何一條長期失效,站点對 URL 發現的掌控力都會下降。