很多站点把"让蜘蛛發現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發現不是一次性動作,而是几條通道持續协作的结果。與其反复提交,不如先保證每條通道给出的信号是一致的。