在页面索引报告里,“已发现,尚未抓取”和“已抓取,尚未编入索引”经常被放在一起讨论,但它们卡住的位置并不相同。前者说明搜索引擎已经知道这个 URL 存在,但还没有去取内容;后者说明内容已经取回来了,正在决定要不要放进索引。把这两个状态混为一谈,很容易在错误的方向上花时间。
这个状态是怎么出现的
URL 被发现的途径通常有几条:站点地图提交、站内链接指向、外部链接,以及以往抓取过程中顺带发现的地址。被发现之后,URL 会进入待抓取队列等待调度。队列顺序并不是先来先到,而是取决于站点可用的抓取额度、页面自身的优先级判断,以及服务器响应是否顺畅。
所以看到“已发现,尚未抓取”,第一反应不应该是“页面质量太差”。质量信号主要在索引阶段起作用,抓取阶段更关心的是能不能抓、值不值得优先抓。
常见原因与对应检查
抓取额度被低价值地址占满
当站内存在大量不值得收录的地址时,爬虫的请求会大量消耗在这些路径上,重要页面只能排在后面。常见的消耗来源包括:
- 由筛选、排序、会话参数组合出的重复地址
- 翻页层级过深或近似无限的列表
- 可被抓取的站内搜索结果页
- 内容稀薄的标签页、归档页、作者页
检查方式是看抓取统计中的请求分布,如果请求集中在这类地址上,而重要内容页很少被抓,就要先收敛入口。
服务器响应慢或抓取时超时
抓取是有时间成本的。响应时间偏高的页面,被反复抓取的概率会下降。可以关注首字节时间、整页加载耗时,以及是否存在爬虫请求被限流、被防火墙拦截的情况。
站内链接深度不足
站点地图能帮助发现地址,但替代不了链接。一个页面如果只出现在站点地图里,没有任何站内链接指向它,被抓取的优先级通常偏低。可以从首页出发数一数需要几跳才能到达,看看栏目页、上一级列表页、相关内容区是否指向它。
站点层面的长期表现
新站、长期不更新、频繁返回 5xx 的站点,在抓取调度上会更保守。这不是某个页面能单独解决的问题,需要从站点整体持续改善。
服务端层面的限制
- robots.txt 中是否误封了需要抓取的路径
- 是否按 UA 或 IP 做了访问限制
- CDN 或安全策略是否把爬虫挡在外面
要注意,robots.txt 中的 Disallow 只影响抓取,不影响地址被发现,因此确实会出现“已发现但抓不到”的情况。
可以动手做的几件事
- 对个别重要页面使用 URL 检查工具发起一次抓取请求,确认能否正常返回。这只适合少量地址,不要当成批量手段。
- 检查站点地图:地址是否返回正常、是否混入了重定向、404 或 noindex 的地址,更新时间是否真实。
- 查看服务器日志:爬虫是否来过、返回了什么状态码、主要抓了哪些路径。日志往往比报告更接近事实。
- 优化站内链接:把重要页面放进导航、栏目或相关内容区,缩短点击深度。
- 收敛低价值地址:该设 noindex 的设 noindex,该在 robots 中屏蔽的屏蔽,减少无效消耗。
- 改善服务器:压缩响应时间,保证稳定返回,避免超时和 5xx。
手动抓取只是把 URL 放进队列,解决的是“能不能抓”。它不保证抓取一定发生,也不保证最终的收录结果。
什么时候该换思路
如果几个重要页面长期停在“已发现,尚未抓取”,同时站点整体抓取量也很低,说明问题多半在站点层面,而不是单个页面。反过来,如果抓取量正常,只是个别页面排队靠后,通常补上站内链接、给一点时间就能改善。真正需要留意的是长期不动、又没有内链和外链支撑的孤立页面。
把它和“已抓取,尚未编入索引”分开看:前者查能不能抓、值不值得抓,后者查内容值不值得进索引。两个状态对应两套动作,混在一起做只会来回折腾。