搜索抓取

发现不等于抓取:新 URL 进入蜘蛛视野的几条路

很多运营者困惑:页面已经上线、也写进了 Sitemap,日志里却迟迟不见蜘蛛。原因在于 URL 发现和抓取是两个环节。本文梳理蜘蛛认识新地址的常见入口、发现之后的去重与排队筛选,以及如何用日志和后台信息判断一个 URL 到底有没有被发现,并给出让发现环节更顺畅的实操建议。

搜索抓取

发现不等于抓取:新 URL 进入蜘蛛视野的几条路

站点运营里常见的一种困惑是:新页面明明已经上线,也写进了 Sitemap,服务器日志里却迟迟看不到蜘蛛的请求。要回答这个问题,先要区分两个环节——URL 被发现和 URL 被抓取。只有先进入蜘蛛的待抓列表,才有后续排队抓取的可能。

一、蜘蛛通常从哪些入口认识一个新 URL

发现渠道不止一种,不同渠道的时效和覆盖面差别很大,通常也不是单独起作用。

  • 站内链接:最稳定的发现方式。任何一个已被抓取的页面上新增了指向新 URL 的链接,蜘蛛再次访问该页面时就有机会顺带发现它。层级越浅、被访问越频繁的页面,带出的新地址越容易被注意到。
  • Sitemap:适合批量登记和补齐。它能让蜘蛛知道站点里还有这些地址,但 Sitemap 本身并不保证被抓取,更多起到登记和补充的作用。
  • 外部链接:来自其他站点的链接是历史上最早、也最自然的发现方式。外链所在页面的抓取频率越高,新 URL 被发现的窗口通常越短。
  • 主动提交:搜索引擎提供的提交接口以及类似 IndexNow 的协议,可以缩短发现时间,但仍只是把地址交到了队伍里,不等于收录。
  • 渲染后出现的链接:如果导航或列表是脚本执行后才生成的,蜘蛛需要先执行脚本才能看到这些地址,发现会晚一步,也可能被跳过。
  • Feed 与结构化数据:RSS、Atom 以及部分结构化数据中的 URL 字段,有时也会成为发现来源,但覆盖面和稳定性一般不如前几种。

二、被发现之后,还有几道筛选

进入待抓列表只是开始,蜘蛛还会做一轮去重和排队。

  1. 去重:同一份内容对应多个 URL 时,带跟踪参数、大小写不同、路径写法不一致的版本通常会被合并或降权,蜘蛛往往只挑其中一个版本抓取。
  2. 排队:新 URL 的优先级受入口重要性、内容更新频率、站点评级等因素影响,不会按照提交顺序依次处理。
  3. 资源竞争:站点的抓取额度有限,抓一个页面要消耗响应时间、带宽和解析成本,队列里的 URL 会相互竞争。

所以,同一个站点里,从首页导航能点到的详情页,和只能靠 Sitemap 才能找到的地址,被发现的速度往往差出一大截。

三、怎么判断一个 URL 到底有没有被发现

与其反复猜测,不如看证据。

  • 服务器日志:过滤蜘蛛 UA 后,看该路径是否出现过请求。日志里有请求,说明至少已经被抓取过;完全没有记录,则可能还停留在发现环节之外。
  • 搜索后台的索引状态:如果后台显示为已发现但尚未编入索引,说明发现环节已完成,卡点在抓取或索引判断上。
  • 提高入口密度:给新页面补内链,并在被频繁抓取的页面上暴露入口,通常比反复提交更有效。

四、让发现环节少掉链子的几个做法

  1. 内链优先。新页面发布时,同步在相关的旧页面加上指向它的链接,避免出现只能靠 Sitemap 才能找到的孤立地址。
  2. Sitemap 保持准确。只放可索引、正常返回的 URL,及时清理失效地址,避免蜘蛛把时间花在无效条目上。
  3. 控制 URL 参数。能用静态路径表达的筛选、排序,尽量不要堆积成大量参数组合,减少去重环节的消耗。
  4. 保证服务器可用。发现的前提是蜘蛛能顺利访问,长时间超时或大量错误响应,会让排队中的 URL 被不断延后。
  5. 别把发现当收录。提交、Sitemap、外链都只是把地址递过去,是否抓取、是否收录由蜘蛛自己的判断决定。
URL 发现解决的是蜘蛛知不知道,抓取解决的是蜘蛛来不来。两者之间还隔着去重、排队和资源竞争。站点能做的,是把入口做得清晰、地址保持干净、服务维持稳定。