搜尋抓取

抓取深度與跳數:蜘蛛愿意往下走几层,取决于路径好不好走

抓取深度是很多站点忽略的维度:目錄浅不代表跳數少,跳數多才是頁面被冷落的真正原因。本文梳理深度是怎么被導航、分頁和缺失的内鏈消耗掉的,Sitemap 能补什么、补不了什么,以及服務器稳定性為什么會優先拖累深层頁面。

搜尋抓取

抓取深度與跳數:蜘蛛愿意往下走几层,取决于路径好不好走

很多人看抓取資料只看總量,忽略了另一個维度:蜘蛛抓到的頁面,大多停在离入口几跳的位置。抓取深度决定了站点里哪些部分長期處于阴影中——不是被禁止,而是根本没被走到。

跳數是什么,為什么它比“层級”更贴近現實

目錄层級是文件系統的概念,跳數是從入口頁出發,经過几次連結点击才到達。两者经常不一致:一個 /a/b/c/d/ 形式的 URL 可能首頁直接鏈過去,只有一跳;一個浅目錄頁面可能藏在三級導航里,要四跳才摸到。

蜘蛛對每個站点的抓取額度有限,越往深處走,單位收益越低,所以它會優先把額度花在容易回訪、更新频繁、入口多的頁面上。

深度是怎么被消耗掉的

  • 導航和面包屑只覆盖到中間层,最底层頁面只能靠列表頁往下带;
  • 列表分頁到某個位置断了連結,後面的内容自然没人走;
  • 重要頁面只出現在某個交互展開後才生成的連結里;
  • 深层頁面之間没有横向互鏈,彼此都是死胡同。

Sitemap 能补深度,但补不了全部

Sitemap 提供的是“這個 URL 存在”這條信息,可以缩短發現時間,但它不改變蜘蛛對頁面重要性的判断。把一個孤立的深层頁塞進 Sitemap,蜘蛛可能来一次,之後因為没有任何内鏈指向它,回訪频率會很低。

把 Sitemap 当成兜底,而不是主干。主干仍然是可点击、可延續的内鏈路径。

服務器在深度抓取里扮演的角色

深层頁面的抓取往往排在队列後面,這意味着它們更容易撞上服務器狀態不佳的时段。間歇性的 5xx、响應時間忽長忽短,會让蜘蛛在下一次調度时更保守:先抓浅层、高频更新的頁面,深层頁面被推後甚至暂时搁置。

所以服務器稳定性對抓取的影响並不均匀,浅层頁面容忍度高,深层頁面最吃亏。如果你發現日誌里深层 URL 的抓取間隔越来越長,先看看那段時間的响應碼分布。

怎么判断深度出了問题

  1. 按跳數给日誌里的 URL 分组,看每個深度段的抓取量占比;
  2. 找出“有 Sitemap 记錄、有内容更新、但没有内鏈指向”的頁面;
  3. 检查深层頁面的抓取狀態碼,是否集中在 5xx 或超时;
  4. 观察同一深度的頁面之間,抓取次數差异有多大。

几個不費力的調整

  • 把重要但深的内容,在上一层頁面上给一個固定的文字入口;
  • 同類深层頁面互相連結,形成一條可延續的路径,而不是各自孤岛;
  • 列表翻頁保留可抓取的連結,別只留“加载更多”按钮;
  • Sitemap 里保留這些頁面,但不要把它的存在当成唯一入口;
  • 服務器告警別只看首頁可用性,深层路径的响應時間也要盯。

深度不是越低越好,而是不要让重要的東西掉在没有路的地方。蜘蛛走的路,本质上是用戶点得到的路。