在抓取统计里,经常能看到一个状态:URL 已经被发现,但一直没有被抓取。页面本身没问题,robots 也没拦,就是排队排不上。这不是蜘蛛忘了你,而是队列在按自己的规则决定先后。
“已发现未抓取”到底是什么意思
它表示蜘蛛已经从某个入口拿到了这条 URL,可能来自 Sitemap、内链或者站外链接,但还没有真正发起请求。这和抓取失败不一样:失败至少说明请求发出去了,未抓取是这个 URL 还站在队伍里等。
排队的顺序不由你决定,但队伍的长度和你有关。
常见的排队原因
- 站内可抓 URL 太多:列表页翻页、筛选参数、日历归档会生成大量低差异地址,把队列撑得很长。
- 抓取速率上不去:服务器响应慢或频繁波动,蜘蛛会主动降速,队列消化得更慢。
- 入口质量偏低:URL 只出现在页脚深层或某个孤立聚合页,蜘蛛对它的优先级判断自然靠后。
- Sitemap 与内链脱节:Sitemap 里有,站内却没有链接指向它,蜘蛛很难判断这条地址有多重要。
- 站点近期不稳定:5xx 和超时集中出现后,蜘蛛会收缩抓取范围,新 URL 往往排在更后面。
- 结构重复:同一内容存在多个 URL 形态,抓取额度被重复地址消耗掉。
建议的排查顺序
- 确认这条 URL 是否真的能从站内到达,找一条从首页出发的点击路径,看层级是否过深。
- 检查 Sitemap 是否包含它,分片是否过大,lastmod 是否有虚标。
- 翻服务器日志里同目录、同类页面的响应时间和状态码,看是否存在整体抖动。
- 统计同类型 URL 的总量,判断队列是不是被参数页、分页撑爆了。
- 看这条 URL 是否有独特的标题、正文和可索引内容,而不是模板空壳。
能做的和不能做的
能做的:减少无意义 URL,把重要页面放回清晰的内链位置,稳定服务器,让 Sitemap 与真实结构保持一致。这些动作会缩短队列,也会让优先级判断更准确。
不能做的:反复提交、频繁改动 URL、堆叠大量低质页面指望撞运气。提交只是一次提醒,并不改变排队规则。
“已发现未抓取”多数时候是容量问题,不是故障。先看总量和速度,再看单条 URL。
观察周期
处理完结构问题后,不要指望立刻见效。抓取队列的消化是渐进的,通常需要几周时间才能从统计里看出拐点。这段时间里,保持结构稳定比继续折腾结构更有价值。