搜索抓取

「已发现,尚未抓取」:URL 积压时先减负还是先催抓

「已发现,尚未抓取」只说明蜘蛛知道这个地址,不代表它马上会来。本文解释这个状态背后的排队逻辑,梳理 URL 积压的常见原因,并给出先减负、再谈催抓的处理顺序,以及那些看着像催抓、实际没用的操作。

搜索抓取

「已发现,尚未抓取」:URL 积压时先减负还是先催抓

在抓取报告里,「已发现,尚未抓取」是一个容易被误读的状态。它说明蜘蛛已经知道这个 URL 存在,只是还没安排去下载它。知道不等于会抓,更不等于抓不到——多数情况下,它只代表排队。

这个状态到底在说什么

把抓取流程拆开看,一个 URL 大致会经历两段:先是发现,再是抓取。

  • 发现:蜘蛛从内链、Sitemap、外链或者历史记录里看到了这个地址,把它记进待抓列表。
  • 抓取:蜘蛛真的发请求把页面下载回来。这一步要花时间、占连接、消耗服务器资源。

「已发现,尚未抓取」正好卡在两步之间。地址在名单里,但还没轮到它。名单越长,等的时间越久,这和页面质量好坏不一定直接相关。

为什么会积压

待抓名单比抓取能力大得多

站点如果在短时间内产出大量新 URL——筛选参数、排序参数、日历页、标签组合——名单会迅速膨胀。蜘蛛每天能抓的数量有限,多出来的部分只能往后排。

一部分 URL 本身不值得抓

低价值地址不只是浪费自己的机会,还会占住排队位置。内容重复的列表页、只差一个参数的结果页、空标签页,都会拉长真正重要页面的等待时间。

单次抓取耗时被拉长

响应慢、首字节时间长、频繁超时,都会让蜘蛛在一次抓取上耗掉更多时间。同样的抓取窗口里,能完成的请求数就变少了,积压自然更明显。

先减负,再谈催抓

看到积压就想办法让蜘蛛「快点来」,往往效果有限。更稳的顺序是先把名单压小,再推动重点地址。

  1. 列出积压里的地址类型,按参数页、分页、标签页、筛选页分类,看哪一类占比最大。
  2. 砍掉不该被抓的地址:能用 robots.txt 屏蔽的批量参数路径先屏蔽,能合并的重复列表合并,能从内链里撤掉的低价值入口撤掉。
  3. 收拢内链,让重要页面从首页出发的点击层级更浅,减少蜘蛛在无关页面之间来回走。
  4. Sitemap 只放你确实希望被抓的地址,不要把所有生成的 URL 一股脑塞进去。
  5. 改善响应速度,尤其是服务器稳定性和高峰期表现。
  6. 做完以上再看积压变化,给至少几周时间,别当天看当天判断。

那些看着像催抓、其实没用的操作

  • 反复提交 Sitemap:提交只是告诉蜘蛛地址存在,不能改变排队顺序。
  • 批量修改 lastmod:时间戳和实际内容对不上,只会削弱这个信号的可信度。
  • 到处发外链指向同一个地址:发现路径已经够了,再多也只是重复「发现」。
  • 短时间内大量新建页面:在积压没缓解前,这等于继续往名单里加人。
抓取是有限资源的分发问题。让蜘蛛少走一趟弯路,通常比让它多来一趟更有效。

怎么判断减负有没有效果

把服务器日志按时间段切片,比较减负前后蜘蛛请求的总量、落在重点目录上的比例,以及「已发现,尚未抓取」数量的走向。如果总请求没涨,但重点页面的被抓次数上升了,说明路由在往好的方向走。反过来,如果总请求涨了、重点页面却没变化,多半是低价值地址又多了。

这个状态更像体检指标,而不是故障报警。它提示的是分发效率,而不是某个页面出了问题。处理它,从名单里减东西比从外面加推力更实际。