不少人在做 URL 发现时都会遇到这种情况:日志里能看到搜索蜘蛛抓了入口页,但页面上挂着的目标 URL 过了很久还是没人来。很多时候不是入口页出了问题,而是“发现”和“抓取”本来就是两个不同阶段的事情。
发现不等于抓取,中间隔着一条队列
搜索蜘蛛处理一个入口页时,大致分三步:先把页面抓下来,再解析出里面的链接,最后把这些链接放进待抓队列。前两步做完,链接算是“被发现”了,但什么时候真正去抓,取决于搜索引擎自己的调度。目标 URL 迟迟不来,通常就是卡在第三步。
入口页被抓取,只能说明里面的链接有机会进入待抓队列,并不代表它一定会被尽快抓取。
抓取配额:站点级别的总量限制
搜索引擎不会无限制地抓某个站点或域名,它会根据历史表现给出一个大致合理的抓取量,也就是常说的抓取配额。配额不是固定的,会随站点状态上下浮动。
- 响应速度与稳定性:入口页域名长期响应慢、频繁返回 5xx,蜘蛛会主动降低抓取频率。
- 内容价值与更新频率:页面长期重复、内容稀薄,抓取优先级会被压低。
- 抓取出错率:大量 404、跳转链、超时,会消耗掉本就不多的配额。
- 域名历史:新域名或历史表现较差的域名,初始配额通常更小。
优先级:同一页里的链接并不平等
同一页里的链接进入队列后,处理顺序也有差别。下面这些位置通常更容易被优先安排:
- 出现在首屏正文区域、离主内容较近的链接;
- 有实际锚文本、语义清晰的链接;
- 在站点结构里层级较浅、点击次数少的链接;
- 在多个页面重复出现的链接。
反过来,页脚里堆上百条链接、正文之外生硬拼出来的链接块,被处理的顺序往往会靠后很多。
目标 URL 自身的条件也会拖后腿
- 响应时间过长,蜘蛛抓取中途可能放弃;
- 跳转层级过多,链路越长越容易被降级;
- URL 参数繁杂、与站内其他 URL 高度相似,可能被当作重复内容合并;
- 返回非 200 状态码,或需要登录、携带 Cookie 才能访问;
- 被 robots.txt 或页面级指令限制抓取。
实际能做的事情
- 先修稳定性:让入口页和目标页的响应时间可控,减少 5xx 和超时。
- 控制单页链接数量:一个入口页放几十条相关度高的链接,比硬塞上千条更容易被有效处理。
- 分散来源:把同一个目标 URL 分布到不同入口页、不同域名,而不是全部集中在一页。
- 用 sitemap 做辅助:站点地图能帮助搜索引擎更快知道 URL 的存在,但替代不了链接发现。
- 看日志而不是凭感觉:对比蜘蛛抓取入口页和目标 URL 的时间差,判断瓶颈落在哪一环。
- 给足时间:新链接从被发现到被抓取,间隔从几小时到数周都出现过,属于正常波动。
小结
入口页被抓、目标 URL 没被抓好,绝大多数时候是配额和优先级的问题,而不是某一行代码写错了。把服务器稳定性、入口页的链接结构、链接本身的质量这几件事做好,URL 被发现并进入抓取流程的概率才会稳步提升。这个过程没有捷径,也不存在一提交就会被收录的保证。