搜尋抓取

内鏈层級越深,蜘蛛走得越浅:抓取深度與頁面覆盖的關系

蜘蛛從首頁或 Sitemap 出發,只能顺着連結一层层往下走。层級越深,中轉頁消耗的抓取次數越多,能被訪問到的詳情頁就越少。本文說明抓取深度怎么計算、层級如何影响頁面覆盖,以及用日誌判断深度問题、用横向連結和分頁連結改善抓取路径的具体做法。

搜尋抓取

内鏈层級越深,蜘蛛走得越浅:抓取深度與頁面覆盖的關系

蜘蛛進入一個站点,起点通常只有几個:首頁、Sitemap、外鏈指向的落地頁,以及 robots 里声明的地址。從這些起点出發,它能走多遠,取决于頁面之間怎么互相連結。层級越深,蜘蛛到達该层頁面要消耗的抓取次數越多,最终被看到的頁面就越少。

抓取深度是怎么算出来的

把入口頁当作第一层,顺着 a 标簽往下点一次算一层。深度是按最短路径算的,如果同一頁面既有首頁直達連結,又藏在三級目錄里,蜘蛛走的是那條更短的路。所以真正决定覆盖范围的,是站内最短路径的分布,而不是某個頁面在目錄结构里看起来有多深。

  • 首頁直接出鏈的頁面,深度為 1
  • 经過一次分類頁中轉的,深度為 2
  • 需要经過列表頁、篩選頁、詳情頁多跳的,深度可能到 4 以上

每一层都在消耗抓取額度

站点每往下一层,頁面數量往往會成倍增加。列表頁翻頁、篩選參數、日歷归档這些會再制造出大量 URL。蜘蛛單轮抓取的請求數是有限的,它把請求花在中轉頁上,留给詳情頁的份額就少了。层級過深的站点,经常出現這種情况:列表頁被抓了很多次,詳情頁却長期只有一小部分被訪問過。

深度不只是结构美观問题,它直接决定蜘蛛在一轮抓取里能覆盖到多少终端頁面。

扁平化不等于把連結全堆在首頁

减少层級是有效方向,但把几百條連結塞進首頁,效果往往相反。首頁出鏈過多會稀释每條連結的注意力和可分配額度,也容易让重要頁面和临时頁面混在一起。更稳的做法是保留必要的中間层,让分類頁承担分發职责。

一個可參考的层級安排

  1. 首頁只指向主要栏目和少量高價值入口
  2. 栏目頁指向子分類與热门詳情頁
  3. 列表頁负责把新内容和長尾内容递出去,並保證分頁連結可抓取
  4. 詳情頁通過相關推荐、上一篇下一篇回指同類頁面,增加横向通路

横向連結的價值常被低估。同层頁面之間的互鏈,可以让蜘蛛不依赖首頁入口也能走到另一片区域,等于把一條深路径压成了两條浅路径。

怎么判断深度已经成了問题

比較直接的办法是看服務器日誌。把被抓取的 URL 按层級归類,如果某一层以下几乎没有訪問记錄,就說明蜘蛛没有走到那里。另一個信号是對比 Sitemap 與抓取记錄:Sitemap 里列了、内鏈却指不到的頁面,蜘蛛通常要更久才會處理,甚至長期搁置。

  • 被訪問的 URL 集中在首頁、栏目頁和少量热门詳情頁
  • 新增内容上线後長時間没有抓取记錄
  • 日誌里出現大量參數頁、篩選頁,而正文頁很少

几個容易踩的坑

  • 面包屑只做了样式,連結不可点或指向错誤地址
  • 列表分頁用按钮加 JS 触發,蜘蛛讀不到下一頁
  • 重要栏目藏在導航的下拉菜單里,展開前没有可抓取的連結
  • 内容全部靠接口异步加载,首屏只有骨架

服務器稳定性也參與這個過程。如果抓取過程中频繁超时或返回错誤,蜘蛛會降低訪問频率,原本能走到第五层的路径可能只走到第二层就停了。深度問题往往不是單獨出現的,它和响應质量、URL 總量一起决定最终的覆盖结果。

實际做法不需要太复杂:把重要頁面收敛到三次点击以内,给列表和分頁留出可抓取的連結,定期用日誌核對哪些层級被漏掉。层級理顺之後,剩下的事情交给時間。