搜索抓取

URL 从哪来:Sitemap、内链与外链各自的发现边界

蜘蛛发现 URL 主要靠三条通道:Sitemap、站内链接和外部链接。它们覆盖的范围、生效的速度和可控程度都不一样。这篇文章把三者拆开看,说明各自的边界、常见误用,以及发现之后还需要跨过哪些环节才能进入索引。

搜索抓取

URL 从哪来:Sitemap、内链与外链各自的发现边界

蜘蛛能不能抓到一个页面,前提是它先知道这个 URL 存在。站点的 URL 被发现,通常来自三条通道:Sitemap、站内链接、外部链接。三条通道并行工作,但覆盖面、生效速度和可控程度都不一样。把它们混在一起谈,容易得出错误结论,比如 Sitemap 提交了却没什么变化,就判断“蜘蛛根本没来”。

三条通道解决的不是同一个问题

Sitemap:覆盖面最广,但只是一份候选清单

Sitemap 的价值在于一次性给出大量 URL,尤其是那些藏在深处、站内链接很少指向的页面。它不依赖层级结构,也不要求页面之间互相连通,所以对缺乏入口的页面最有用。

但 Sitemap 只负责“告诉”,不负责“要求”。里面的 URL 会被放进待抓取队列,什么时候抓、抓不抓,仍取决于服务器响应、页面质量和抓取预算。清单里混入大量低质或重复 URL,反而会稀释真正重要页面的机会。

内链:发现效率通常更高,但受结构限制

蜘蛛沿着链接走,是发现 URL 最自然的方式。一个页面只要从首页出发经过少数几次点击就能到达,被发现的速度往往更快,重新访问的频率也更高。

局限也很明显:它只能发现被链接到的页面。导航、列表页、相关推荐没有覆盖到的地方,链接一断,路径就断了。另外,同一个 URL 从多个入口被反复链接,并不会让抓取量线性增长,只会让这条路径显得更重。

外链:不可控,但能带来站外入口

外部链接的价值在于提供一个站外入口。对新建站点,或者站内结构还没理顺的站点,外链有时是蜘蛛第一次到达的途径。

但它并不由站点控制:链接可能在,也可能被删;可能带 nofollow,也可能出现在蜘蛛很少访问的页面上。把 URL 发现完全押在外链上,稳定性很差。

常见的三类误用

  • 把 Sitemap 当成推向索引的工具。它能提高被发现的概率,但替代不了页面本身的可抓取性和内容质量。
  • 只看内链,不做清单核对。内链会产生大量重复路径,日志里看起来抓取很活跃,实际覆盖的 URL 集合可能相当有限。
  • Sitemap 与站内链接长期不一致。清单里是旧地址,站内已经指向新地址,两边对不上时,抓取会分散在两条并行路径上。

一个可执行的排查顺序

  1. 先取出一段时间的抓取日志,整理出被访问过的 URL 集合,再和 Sitemap 里的 URL 集合做对比。
  2. 找出只出现在 Sitemap、日志里从没出现过的 URL,逐一检查是否被 robots.txt 拦截、是否返回异常状态码、是否响应过慢。
  3. 找出日志里有、Sitemap 里没有的 URL,判断是参数、分页还是历史遗留地址,再决定归一化还是补充进清单。
  4. 抽查重要页面从首页出发的最短点击路径,确认没有断链,也没有深到难以到达的层级。

被发现之后,还有几道关

URL 被发现只是第一步。它还要经过抓取、渲染、内容判断几个环节,才可能进入索引。发现量增加,不代表抓取量同步增加;抓取量增加,也不代表索引量立刻跟上。这几者之间既有时差,也有筛选。

所以观察站点抓取状态时,与其盯着单一指标,不如把三件事放在一起看:Sitemap 覆盖了多少 URL、日志里实际抓了多少、站内还有多少可抓但没被抓。三者之间的差,往往才是下一步要处理的地方。

三条发现通道是互补关系,不是替代关系。清单负责广度,内链负责速度与深度,外链负责补充入口。任何一条长期失效,站点对 URL 发现的掌控力都会下降。