搜尋抓取

内鏈是主干,Sitemap 是清單:两條 URL 發現通道怎么配合

蜘蛛發現 URL 主要靠内鏈和 Sitemap 两條通道:前者带上下文但受抓取深度限制,後者能批量提交却缺少頁面之間的關系。文章说清两者的分工與各自的适用场景,以及服務器稳定性這個共同前提,並给出可以定期执行的检查清單。

搜尋抓取

内鏈是主干,Sitemap 是清單:两條 URL 發現通道怎么配合

蜘蛛發現一個 URL,主要靠两條通道:一條是顺着頁面里的連結走,也就是内鏈;另一條是直接讀你提交的清單,也就是 Sitemap。這两條通道经常被当成互相替代的方案,實际上它們解决的是不同問题。

内鏈通道:有上下文,也有邊界

蜘蛛抓到一個頁面,解析 HTML,把里面的連結放進待抓队列。這個過程带有明顯的上下文:連結出現在什么位置、锚文本寫了什么、周围是導航還是正文,都會影响蜘蛛對目标頁面的判断。首頁導航里的一條連結,和頁脚深處的一條連結,被處理的顺序通常不一样。

内鏈的另一個特点是會受抓取路径深度的影响。蜘蛛從一個入口出發,一层一层往外走,层級越深,能分到的抓取机會越少。所以栏目頁、聚合頁、面包屑這些中間层如果断掉,後面的内容即使存在,也很难被稳定發現。

内鏈适合什么

  • 需要持續更新的栏目和文章,靠列表頁、相關推荐保持連結的新鲜度;
  • 希望被反复抓取的核心頁面,放在導航或首頁可直達的位置;
  • 需要传递上下文關系的頁面,用锚文本說明它是什么。

Sitemap 通道:批量,但没有頁面關系

Sitemap 是一份 URL 清單。蜘蛛讀它的时候不经過任何頁面,所以拿不到連結位置、锚文本這些信息。它的價值在于批量:站点有几千上萬個 URL,靠内鏈一层层爬效率低,Sitemap 可以一次性把地址交出去。

清單里的 lastmod、changefreq、priority 這些字段,蜘蛛大多只作參考,部分字段甚至完全忽略。指望改一下 priority 就让某個頁面優先被抓,通常不現實。Sitemap 更强的作用是让 URL 進入待抓队列,而不是决定谁先被抓。

Sitemap 适合什么

  • 新上线、内鏈還没铺開的頁面,先用清單告诉蜘蛛這里存在;
  • 分頁很深、歷史归档這類内鏈不易触達的地址;
  • 图片、视频等獨立资源清單,用對應類型的 Sitemap 單獨提交。

两條通道怎么配合

比較稳妥的做法是:内鏈负责主干,Sitemap 负责兜底。

  1. 核心栏目和内容,尽量保證從首頁出發三到四次点击可達,且連結位置長期稳定;
  2. 新頁面發布後,先通過列表頁或相關推荐加上内鏈,再同步進 Sitemap;
  3. Sitemap 里只放返回 200、可索引的規范 URL,不要塞重定向和參數组合頁;
  4. 定期用訪問日誌检查 Sitemap 里的 URL 是否真的被抓過,長期不抓的去排查原因。

如果只依赖 Sitemap,站点會變成清單驱動,頁面之間的關联很弱,蜘蛛抓完一轮後缺少再次回訪的理由;如果只依赖内鏈,深层頁面和歷史归档又容易長期沉底,迟迟等不到第一次抓取。

共同前提:服務器得稳定

不管走哪條通道,前提都是服務器能正常响應。Sitemap 取不到、頁面频繁返回 5xx,蜘蛛都會降低對站点的抓取意愿,恢复起来往往比想象中慢。值得注意的是,間歇性抽風有时比持續慢一点更麻烦:蜘蛛拿到的结果忽好忽坏,抓取节奏會變得保守。

可以定期检查的几件事

  • 訪問日誌里蜘蛛的抓取量和狀態碼分布,5xx 比例是否偏高;
  • Sitemap 文件的抓取频率和返回狀態;
  • 重要頁面距首頁的点击深度是否變深;
  • 是否存在只能從 Sitemap 發現、内鏈完全没有入口的頁面。
内鏈决定蜘蛛走得多顺,Sitemap 决定蜘蛛知道多少。两者都做好,URL 發現的效率才稳定,而不是靠某一次提交或某一次調整。