很多人排查“目标 URL 没有被抓取”时,会先去看入口页的 meta robots、链接写法、响应状态,却忽略了一个更基础的问题:这个目标 URL 离入口页到底隔了几层。层级深度不会让目标 URL 彻底消失,但它会实实在在影响被发现的顺序和等待时间。
搜索蜘蛛是怎么一层层往下走的
搜索蜘蛛抓到入口页后,会解析出页面里的链接,把这些 URL 放进待抓取队列,再按调度策略逐个抓取。每多一层,就多一次“抓取—解析—再排队”的循环。也就是说:
- 第一层:入口页直接指向的目标 URL,通常有机会在入口页被抓取后的下一轮进入队列;
- 第二层:需要先抓一个中间页,再从中间页解析出目标 URL;
- 第三层及更深:每加一层就多一次排队,目标 URL 排到队首附近的时间随之拉长。
在抓取预算有限、站点整体抓取频次不高的情况下,深链路上的 URL 往往要等更久,甚至长期停在“已发现未抓取”。
深层链接最常卡在哪
真正的问题通常不是“太深”,而是链路中间某一环断掉了。常见情况有:
- 中间页本身返回 404、500 或超时,蜘蛛拿不到链接;
- 中间页链接加了 rel="nofollow",蜘蛛不再跟进;
- 中间页链接由 JavaScript 动态插入,抓取时没渲染出来;
- 中间页被 robots.txt 屏蔽,蜘蛛无法抓取,链路在此终止;
- 中间页是一串跳转,跳转次数过多导致后续链接难以被稳定解析。
判断是不是层级问题,可以按日志分段核对:如果入口页有蜘蛛访问、中间页完全没有记录,说明断在第一层;如果中间页有记录、目标页没有,就重点看中间页的链接写法和响应状态。
层级和抓取预算的关系
同一站点在一定时间内可被分配的抓取次数大致是有限的。链接层级越浅、重要页面越集中,蜘蛛把预算花在核心 URL 上的比例就越高。反过来,如果大量低价值页面层层嵌套,重要的目标 URL 就会被稀释在后面。
缩短链路可以做的事
- 让入口页尽量直接指向核心目标 URL,减少不必要的中间跳板页;
- 站点内部做扁平化,主要页面从首页出发 2~3 次点击内可达;
- 把 sitemap 当作补充发现渠道,而不是唯一依赖;
- 控制单页链接数量,避免把抓取预算摊在大量低价值链接上;
- 按周对比中间页与目标页的抓取次数,观察调整后是否有改善。
层级浅不代表一定会被抓,层级深也不代表抓不到。它影响的是优先级和等待时间,而不是一个开关。
实操上,把“入口页 → 中间页 → 目标 URL”这条链路画出来,逐段确认每一段是否返回正常、是否可解析、是否允许跟进,通常比反复调整入口页的 meta 标签更有效率。