搜尋抓取

给蜘蛛留几條路:URL 發現的冗余设計怎么做

同一批頁面只有一條抓取路径时,中間环节一出問题就容易集体失联。本文讲 URL 發現的冗余设計:内鏈、Sitemap、外鏈各自负责什么,枢纽頁與翻頁路径要怎么维護,以及如何用日誌確認多條路径是否真的走通。

搜尋抓取

给蜘蛛留几條路:URL 發現的冗余设計怎么做

單一入口的問题

很多站点的 URL 發現路径其實只有一條:首頁 → 栏目頁 → 列表頁 → 詳情頁。看起来清晰,但只要中間任意一环出問题,比如栏目頁改版没保留舊連結、翻頁參數被挡、某個中間頁抓取失敗,後面整串 URL 就會集体失联。蜘蛛不會绕路,它只會沿着能走通的連結繼續往下。

還有一種常见情况:新内容只出現在首頁最新区块,几天後被顶下去就不再有任何入口。這條路径的生命周期太短,URL 一旦没在第一轮被抓走,後面再被發現的概率就很低。

三種發現来源各管什么

  • 内鏈:负责持續、稳定地暴露 URL,是日常發現的主力,也是權重传递的通道。
  • Sitemap:负责兜底和补充,把内鏈覆盖不到的 URL 交给蜘蛛,尤其是新發布、层級較深的頁面。
  • 外鏈:负责把蜘蛛带到站内,通常指向首頁或少數重点頁,不要指望它来發現所有詳情頁。

三者不是替代關系。只靠 Sitemap,蜘蛛拿到了清單,但仍需要站内路径来確認頁面在结构中的位置;只靠内鏈,深层頁面可能永遠等不到机會。

冗余不等于堆連結

给同一批 URL 留多條路径,重点是路径的類型不同,而不是數量多。比較有效的冗余通常長這样:

  • 栏目頁列表里出現一次;
  • 正文里的相關阅讀、上下篇指向一次;
  • 标簽頁或聚合頁再出現一次;
  • Sitemap 中登记一次。

這几條路径從不同位置出發,其中一條断了,其他几條還能把蜘蛛送到目标頁。反過来,如果只是在頁脚堆几百個連結,本质仍是同一個入口,一旦頁脚被降權或改版,冗余就归零。

枢纽頁要定期体检

枢纽頁指的是那些被大量連結指向、同时向外輸出很多連結的頁面,例如分類首頁、专题頁、标簽聚合頁。它們决定了蜘蛛能走多宽。体检时重点看三点:

  1. 翻頁是否可抓取。用參數實現的翻頁如果被 robots.txt 挡掉,或者靠 JS 点击才加载,後續頁面的入口就断了。
  2. 連結是否直出。用 href 輸出真實 URL,不要只给 onclick,蜘蛛讀不出目标地址。
  3. 列表是否長期不變。固定不動的列表會反复暴露老 URL,新 URL 却始终排不上队。

怎么確認冗余真的生效

可以從日誌入手,挑几個目标 URL,看它們最近一次被抓取时,前一步請求来自哪個頁面。如果每次都只有同一個来源,說明其他路径蜘蛛並没有走通,需要检查那條路径上是否有断鏈、跳轉或屏蔽。

另一個動作是抽样检查内鏈是否可点击、可爬取:把某條内鏈在測試环境临时改错,看蜘蛛是否還能從別的入口到達该頁面。這只是驗證手段,正式环境不要故意留错誤連結让蜘蛛踩。

冗余的目标不是让蜘蛛多抓几次,而是让每條 URL 至少有一條稳定、可走通的到達路径。