搜索抓取

内链是主干,Sitemap 是清单:两条 URL 发现通道怎么配合

蜘蛛发现 URL 主要靠内链和 Sitemap 两条通道:前者带上下文但受抓取深度限制,后者能批量提交却缺少页面之间的关系。文章说清两者的分工与各自的适用场景,以及服务器稳定性这个共同前提,并给出可以定期执行的检查清单。

搜索抓取

内链是主干,Sitemap 是清单:两条 URL 发现通道怎么配合

蜘蛛发现一个 URL,主要靠两条通道:一条是顺着页面里的链接走,也就是内链;另一条是直接读你提交的清单,也就是 Sitemap。这两条通道经常被当成互相替代的方案,实际上它们解决的是不同问题。

内链通道:有上下文,也有边界

蜘蛛抓到一个页面,解析 HTML,把里面的链接放进待抓队列。这个过程带有明显的上下文:链接出现在什么位置、锚文本写了什么、周围是导航还是正文,都会影响蜘蛛对目标页面的判断。首页导航里的一条链接,和页脚深处的一条链接,被处理的顺序通常不一样。

内链的另一个特点是会受抓取路径深度的影响。蜘蛛从一个入口出发,一层一层往外走,层级越深,能分到的抓取机会越少。所以栏目页、聚合页、面包屑这些中间层如果断掉,后面的内容即使存在,也很难被稳定发现。

内链适合什么

  • 需要持续更新的栏目和文章,靠列表页、相关推荐保持链接的新鲜度;
  • 希望被反复抓取的核心页面,放在导航或首页可直达的位置;
  • 需要传递上下文关系的页面,用锚文本说明它是什么。

Sitemap 通道:批量,但没有页面关系

Sitemap 是一份 URL 清单。蜘蛛读它的时候不经过任何页面,所以拿不到链接位置、锚文本这些信息。它的价值在于批量:站点有几千上万个 URL,靠内链一层层爬效率低,Sitemap 可以一次性把地址交出去。

清单里的 lastmod、changefreq、priority 这些字段,蜘蛛大多只作参考,部分字段甚至完全忽略。指望改一下 priority 就让某个页面优先被抓,通常不现实。Sitemap 更强的作用是让 URL 进入待抓队列,而不是决定谁先被抓。

Sitemap 适合什么

  • 新上线、内链还没铺开的页面,先用清单告诉蜘蛛这里存在;
  • 分页很深、历史归档这类内链不易触达的地址;
  • 图片、视频等独立资源清单,用对应类型的 Sitemap 单独提交。

两条通道怎么配合

比较稳妥的做法是:内链负责主干,Sitemap 负责兜底。

  1. 核心栏目和内容,尽量保证从首页出发三到四次点击可达,且链接位置长期稳定;
  2. 新页面发布后,先通过列表页或相关推荐加上内链,再同步进 Sitemap;
  3. Sitemap 里只放返回 200、可索引的规范 URL,不要塞重定向和参数组合页;
  4. 定期用访问日志检查 Sitemap 里的 URL 是否真的被抓过,长期不抓的去排查原因。

如果只依赖 Sitemap,站点会变成清单驱动,页面之间的关联很弱,蜘蛛抓完一轮后缺少再次回访的理由;如果只依赖内链,深层页面和历史归档又容易长期沉底,迟迟等不到第一次抓取。

共同前提:服务器得稳定

不管走哪条通道,前提都是服务器能正常响应。Sitemap 取不到、页面频繁返回 5xx,蜘蛛都会降低对站点的抓取意愿,恢复起来往往比想象中慢。值得注意的是,间歇性抽风有时比持续慢一点更麻烦:蜘蛛拿到的结果忽好忽坏,抓取节奏会变得保守。

可以定期检查的几件事

  • 访问日志里蜘蛛的抓取量和状态码分布,5xx 比例是否偏高;
  • Sitemap 文件的抓取频率和返回状态;
  • 重要页面距首页的点击深度是否变深;
  • 是否存在只能从 Sitemap 发现、内链完全没有入口的页面。
内链决定蜘蛛走得多顺,Sitemap 决定蜘蛛知道多少。两者都做好,URL 发现的效率才稳定,而不是靠某一次提交或某一次调整。