搜索抓取

抓取通道的分工: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发现不是一次性动作,而是几条通道持续协作的结果。与其反复提交,不如先保证每条通道给出的信号是一致的。