搜尋抓取

同一頁面被多條路径指向:蜘蛛的重复抓取與路径收敛

很多站点的抓取問题不是頁面太少,而是同一個頁面被導航、面包屑、相關推荐、标簽頁、Sitemap 等多條路径反复指向。蜘蛛會逐條走完這些路径,抓取预算被分摊,連結信号也被打散。這篇文章讲清多路径是怎么形成的、蜘蛛實际會怎么做,以及如何在不砍掉内鏈的前提下把主路径收敛下来。

搜尋抓取

同一頁面被多條路径指向:蜘蛛的重复抓取與路径收敛

對一個頁面来说,蜘蛛看到的往往不是"一個地址",而是"若干條通往它的路"。導航里有它,面包屑里有它,相關推荐里有它,标簽聚合頁里還有它。站内連結寫得越丰富,同一個 URL 被指向的次數就越多。

這本身不是坏事,問题在于很多人預設蜘蛛會自己挑一條最短路径,然後就按這條路径来安排抓取。實际情况並非如此。

多條入口路径是怎么形成的

常见的来源大致有這几類:

  • 全局導航與頁脚連結
  • 面包屑和栏目层級的上一級/下一級
  • 正文里的相關推荐、热门文章、猜你喜欢
  • 标簽頁、归档頁、专题頁
  • 列表頁翻頁
  • Sitemap 與站内搜尋頁
  • 外部站点導入的連結

每增加一處入口,就多一條蜘蛛可以排队走的路线。入口越多,發現越快,但队列里的重复項也越多。

蜘蛛面對多條路径时的實际行為

蜘蛛不會像人一样先比較哪條路更好再出發,它更接近"按發現顺序逐個入队":在導航里遇到就入队一次,在相關推荐里遇到又入队一次。如果地址完全一致,去重發生在 URL 归一化這一步;但如果路径不同,比如一個是栏目頁直连、一個是经過标簽頁两次跳轉,蜘蛛會先按遇到的顺序把連結走一遍。

寫 canonical 不會让蜘蛛跳過那條連結,它减少的是後續索引與抓取優先級上的分歧,而不是這一次的抓取動作。

所以你會看到一種典型現象:一批内容頁的抓取量看起来很高,但真正的新頁面發現速度並不快,因為预算被大量重复路径消耗掉了。

重复路径的三個成本

  • 抓取预算被切碎。同一批 URL 反复被抓,留给新 URL 的額度就少了。
  • 連結信号被打散。同一個目标被几十處連結指向,锚文本各不相同,蜘蛛對"這個頁面到底讲什么"的判断會更模糊。
  • 日誌难讀。排查問题时,同一頁面的請求散落在多個 referer 下,不容易看出哪條路径才是真實的進入方式。

把主路径定下来:路径收敛的几種做法

1. 導航和面包屑只保留一條主干

栏目頁、詳情頁在導航结构里應该层級清晰,面包屑嚴格對應目錄结构,不要在面包屑里塞入标簽、活動頁之類的临时入口。主干稳定,蜘蛛對站点结构的判断就稳定。

2. 列表、标簽與推荐位按需收敛

相關推荐不是越多越好。同一篇文章在不同标簽頁、不同专题里被反复連結,其實是在制造重复路径。可以限制推荐位數量,或者让标簽頁只在特定條件下輸出連結,而不是全站無差別铺開。

3. Sitemap 只报主路径

Sitemap 的作用是發現,不是把所有可能的入口都列一遍。把带參數、带跟踪字段、带排序過滤的地址放進去,只會让蜘蛛多走一遍無效路径。Sitemap 里的 URL 應当和站内主路径保持一致。

4. 參數頁與分頁的處理

篩選、排序、會话跟踪這類參數,能規范就規范,不能規范就用 robots 規則或 canonical 收口。分頁要保證上一頁/下一頁有真實連結,但归档层不必层层嵌套到很深的目錄。

怎么驗證收敛是否生效

  1. 按 referer 分组看日誌,观察同一批 URL 的主要進入路径是不是收敛到了少數几條。
  2. 看同一 URL 的抓取频次是否下降,而新 URL 的發現速度是否上升。
  3. 检查服務端返回與前端渲染是否一致,避免蜘蛛走的是另一套内容。

別走到另一個极端

路径收敛不等于砍内鏈。目标是让重要頁面既有若干條健康入口,又有一條清晰的主路径可循。如果為了减少重复抓取,把内鏈删得只剩導航,孤岛頁面反而會變多。

更實际的做法是:先確認哪些頁面真正需要被快速發現,再决定哪些入口保留、哪些收口。抓取路径的管理,本质上是在分配站点的注意力。