站点运营里常见的一种困惑是:新页面明明已经上线,也写进了 Sitemap,服务器日志里却迟迟看不到蜘蛛的请求。要回答这个问题,先要区分两个环节——URL 被发现和 URL 被抓取。只有先进入蜘蛛的待抓列表,才有后续排队抓取的可能。
一、蜘蛛通常从哪些入口认识一个新 URL
发现渠道不止一种,不同渠道的时效和覆盖面差别很大,通常也不是单独起作用。
- 站内链接:最稳定的发现方式。任何一个已被抓取的页面上新增了指向新 URL 的链接,蜘蛛再次访问该页面时就有机会顺带发现它。层级越浅、被访问越频繁的页面,带出的新地址越容易被注意到。
- Sitemap:适合批量登记和补齐。它能让蜘蛛知道站点里还有这些地址,但 Sitemap 本身并不保证被抓取,更多起到登记和补充的作用。
- 外部链接:来自其他站点的链接是历史上最早、也最自然的发现方式。外链所在页面的抓取频率越高,新 URL 被发现的窗口通常越短。
- 主动提交:搜索引擎提供的提交接口以及类似 IndexNow 的协议,可以缩短发现时间,但仍只是把地址交到了队伍里,不等于收录。
- 渲染后出现的链接:如果导航或列表是脚本执行后才生成的,蜘蛛需要先执行脚本才能看到这些地址,发现会晚一步,也可能被跳过。
- Feed 与结构化数据:RSS、Atom 以及部分结构化数据中的 URL 字段,有时也会成为发现来源,但覆盖面和稳定性一般不如前几种。
二、被发现之后,还有几道筛选
进入待抓列表只是开始,蜘蛛还会做一轮去重和排队。
- 去重:同一份内容对应多个 URL 时,带跟踪参数、大小写不同、路径写法不一致的版本通常会被合并或降权,蜘蛛往往只挑其中一个版本抓取。
- 排队:新 URL 的优先级受入口重要性、内容更新频率、站点评级等因素影响,不会按照提交顺序依次处理。
- 资源竞争:站点的抓取额度有限,抓一个页面要消耗响应时间、带宽和解析成本,队列里的 URL 会相互竞争。
所以,同一个站点里,从首页导航能点到的详情页,和只能靠 Sitemap 才能找到的地址,被发现的速度往往差出一大截。
三、怎么判断一个 URL 到底有没有被发现
与其反复猜测,不如看证据。
- 服务器日志:过滤蜘蛛 UA 后,看该路径是否出现过请求。日志里有请求,说明至少已经被抓取过;完全没有记录,则可能还停留在发现环节之外。
- 搜索后台的索引状态:如果后台显示为已发现但尚未编入索引,说明发现环节已完成,卡点在抓取或索引判断上。
- 提高入口密度:给新页面补内链,并在被频繁抓取的页面上暴露入口,通常比反复提交更有效。
四、让发现环节少掉链子的几个做法
- 内链优先。新页面发布时,同步在相关的旧页面加上指向它的链接,避免出现只能靠 Sitemap 才能找到的孤立地址。
- Sitemap 保持准确。只放可索引、正常返回的 URL,及时清理失效地址,避免蜘蛛把时间花在无效条目上。
- 控制 URL 参数。能用静态路径表达的筛选、排序,尽量不要堆积成大量参数组合,减少去重环节的消耗。
- 保证服务器可用。发现的前提是蜘蛛能顺利访问,长时间超时或大量错误响应,会让排队中的 URL 被不断延后。
- 别把发现当收录。提交、Sitemap、外链都只是把地址递过去,是否抓取、是否收录由蜘蛛自己的判断决定。
URL 发现解决的是蜘蛛知不知道,抓取解决的是蜘蛛来不来。两者之间还隔着去重、排队和资源竞争。站点能做的,是把入口做得清晰、地址保持干净、服务维持稳定。