搜尋抓取

抓取通道的分工:Sitemap、内鏈與外鏈各自解决什么問题

蜘蛛進入站内通常不止一條通道:Sitemap负责覆盖,内鏈负责發現和路径,外鏈與主動提交负责從站外触發。它們解决的問题不同,配置不一致时反而會互相抵消。本文拆解三條通道各自的作用、常见的信号冲突,以及為什么服務器响應表現是所有通道的共同前提。

搜尋抓取

抓取通道的分工:Sitemap、内鏈與外鏈各自解决什么問题

很多站点把"让蜘蛛發現URL"简化成提交一份Sitemap,然後等着看收錄。實际操作中,蜘蛛進入站内通常有多條通道:外鏈、内鏈、Sitemap、主動提交。它們各自解决的問题不一样,混在一起看容易得出错誤结论——比如Sitemap提交了却没收錄,就断定蜘蛛没来,實际上它可能来了,只是抓的是内鏈里那些更"值钱"的頁面。

Sitemap:解决覆盖,不解决優先級

Sitemap的核心作用是给出一份URL清單,让蜘蛛不必靠猜来發現頁面。它回答的是"站里有哪些URL",而不是"這些URL谁更重要"。因此Sitemap里堆积大量參數頁、篩選頁、重复内容頁,通常不會带来更多抓取,只會让清單本身變得不可信。

Sitemap常见問题

  • 包含被robots.txt屏蔽或带noindex的URL,信号互相矛盾;
  • 包含301、302跳轉的舊地址,蜘蛛要額外花一次跳轉成本;
  • lastmod長期不變,或每次生成都刷新,時間戳失去參考意义;
  • 單個文件過大、分片索引缺失,導致部分文件抓取失敗。

内鏈:解决發現,也影响抓取路径

内鏈是蜘蛛在站内行走的主要方式。一條内鏈存在,意味着蜘蛛有机會從已知頁面走到未知頁面;連結所在頁面的抓取频率越高、連結位置越靠前,目标頁面被發現的概率越大。内鏈還决定了抓取路径的長度:從首頁到目标頁面需要跨几层,直接關系到蜘蛛愿不愿意繼續往下走。

實践中更需要注意的是"节点頁"——列表頁、聚合頁、标簽頁。它們往往承担了大部分URL發現任務,一旦這類頁面被誤屏蔽、被設定成不可抓取,深层内容就會同时失去入口。

外鏈與主動提交:從站外触發

外鏈是蜘蛛認识一個新域名、新栏目的起点。對于刚上线的站点,来自站外的連結往往比站内Sitemap更早触發抓取。主動提交(提交接口、推送)的作用是缩短等待時間,它属于加速手段,並不构成被抓取、被收錄的承诺。把它当作"通知"而不是"保證",预期會平稳很多。

三條通道之間容易出現的冲突

  • Sitemap里列出的URL,在站内没有任何内鏈指向,蜘蛛抓一次之後很难再回来;
  • 内鏈指向的地址與Sitemap中的地址不一致(带不带斜杠、www與不带www、大小寫不同),被当成两個URL;
  • robots.txt屏蔽了某個目錄,却仍在Sitemap中提交该目錄下的頁面;
  • 頁面設定了canonical指向另一個URL,但Sitemap提交的是自身地址。

這些問题單獨看都不嚴重,叠加起来會让日誌里出現大量"抓了但没進入索引"的记錄,排查时容易誤判成抓取预算不足。

服務器稳定性是共同前提

不管蜘蛛從哪條通道進来,它最终都要發一次HTTP請求。响應時間長期偏慢、偶發5xx、连接被中断,都會让蜘蛛在下一轮降低訪問频次,通道再多也走不通。检查顺序通常是:先確認服務器在蜘蛛常用时段的响應表現,再看抓取通道的配置。前者是基础,後者是優化。

怎么判断哪條通道在起作用

抓取日誌里,蜘蛛的入口路径和Referer能提供线索:從站外直接進入的,多半是外鏈或提交触發;從一個站内頁面跳到另一個頁面的,走的是内鏈路径;没有来源、直接請求Sitemap中URL的,通常来自Sitemap或提交接口。把日誌按入口分類統計一段時間,就能看出哪條通道贡献了最多新URL,哪條通道只是在重复抓取老頁面。

URL發現不是一次性動作,而是几條通道持續协作的结果。與其反复提交,不如先保證每條通道给出的信号是一致的。