URL 被发现和被抓取,是两段路
新页面上线后,蜘蛛要先知道这个 URL 存在,才会把它放进抓取队列。让它知道的方式主要有三种:站内链接(导航、列表页、正文里的相关链接)、sitemap,以及站外引用。其中站内链接通常见效最快,因为蜘蛛本来就在爬你的站;sitemap 更像一份清单,用来补漏,不代表提交后就会立刻被读取;站外引用则取决于对方页面的抓取频率。
被发现了,也只是排进队列。什么时候真正来抓,取决于站点的抓取配额、对 URL 重要性的判断,以及同一时间排队的 URL 有多少。所以「提交了几百个 URL」和「这几百个 URL 都被抓了」,中间隔着一段排队时间。
一次放出大量 URL,容易出现四个现象
- 抓取配额被摊薄。假设站点每天能被抓取 1000 次,平时靠几百个老页面消化。突然多出 5000 个新 URL,每个 URL 分到的抓取机会就很少,抓取周期被拉长。
- 同批页面互相竞争。同一批 URL 之间没有明显的主次,蜘蛛难以判断先抓哪个,往往先抓结构位置好、入口多的那几个,其余继续排队。
- 老页面的更新被挤到后面。抓取资源被新 URL 占用后,旧页面内容更新后重新抓取的时间也会变长,影响的是整站的索引新鲜度。
- 大量 URL 长期停在「已发现,尚未编入索引」。这个状态本身不是错误,但如果一批 URL 长时间停在这里,说明抓取优先级和页面本身的质量都没能推动它往前走。
分批上线怎么切、怎么排
按栏目或主题切批
与其按时间随便切,不如按栏目、主题或业务模块切。同一批页面主题集中,彼此之间的内链关系更自然,蜘蛛抓到其中一个时,更容易顺着链接发现同批的其他页面。
每一批都要有真实入口
给每一批页面准备至少一个能被抓到的入口:栏目列表页、聚合页、上一篇/下一篇,或者正文里的相关推荐。只有 sitemap 记录的 URL,发现速度往往慢于有站内入口的 URL。
sitemap 当补充,不当唯一入口
sitemap 适合用来覆盖那些确实没有合适站内入口的页面,比如深层分页、历史存档。但它不能替代内链结构。把几百个 URL 只塞进 sitemap,然后等收录,通常是最慢的一条路。
已收录的旧链接不要因为改版被删掉
分批上线时如果同时调整了站内链接,注意别把已被收录页面的入口全部撤掉。失去入口的页面,后续更新更不容易被重新抓取。
看什么指标判断有没有在推进
- 抓取日志里该批 URL 的命中次数有没有变化,是持续为零还是逐渐出现。
- 「已发现,尚未编入索引」的数量是在继续堆积,还是在慢慢消化。
- 索引状态是否随批次推进缓慢上升,而不是长时间横盘。
- 已抓取页面的响应是否正常,状态码和内容完整度有没有异常。
观察周期按周看比按天看更靠谱。新站或者抓取配额本来就小的站点,几周走完一批很常见。如果连续两三周某一批 URL 在抓取日志里都没有出现,再回头检查入口链接是否生效、robots 和 noindex 是否挡住了这批页面。
几个常见误区
- 反复提交 sitemap 或手动提交 URL,认为次数越多越快。提交不等于抓取,重复提交一般不会改变排队顺序。
- 把「没被收录」当成被惩罚。多数情况下只是还没轮到,或者页面本身的内容质量不足以支撑它进入索引。
- 为了让新页面尽快被看到,把首页和导航的入口全部堆到新页面,结果打乱了原有的站内结构,反而影响老页面的抓取。
判断推进是否正常,看的是抓取日志和索引状态的变化趋势,而不是某一天收录了多少条。
分批上线不是技巧,而是承认抓取资源有限之后的取舍:把入口做扎实,把批次切开,让每一批页面都有机会被完整抓取一次,再决定下一批什么时候放。这样即使收录推进得慢一些,过程也是可控、可观察的。