搜索抓取

URL 被发现、被抓取、被索引:三个阶段各自卡在哪里

把“蜘蛛没来”和“收录慢”分开看,问题往往卡在三个环节之一:URL 是否被发现、是否真的被抓取、是否进入索引。本文按这三层梳理各自的判断依据、常见堵点,以及站点在实际运营中能稳定控制的部分。

搜索抓取

URL 被发现、被抓取、被索引:三个阶段各自卡在哪里

很多站点在排查抓取问题时,会把“蜘蛛没来”“收录慢”“排名不动”混在一起看。实际上从 URL 生成到出现在搜索结果里,中间至少隔着三个动作:被发现、被抓取、被索引。任何一个环节卡住,后面的环节都不会发生,而每个环节的判断依据和排查手段都不一样。

第一阶段:URL 被发现

被发现的意思是,蜘蛛的待抓取清单里出现了这个 URL。它不需要蜘蛛访问页面就能完成——一次外链、一条 Sitemap 记录、一个站内链接,都可能让 URL 进入清单。常见的入口有几类:

  • 内链:从已有页面指向新页面,是最稳定可控的入口,尤其是导航、列表页、相关推荐这类被抓取频率较高的页面。
  • Sitemap:适合批量提交,但它是建议而非命令,蜘蛛仍会按自己的节奏处理,提交之后不会立刻抓取。
  • 外部链接和其他站点入口:包括各类第三方入口。蜘蛛池这类手段的作用基本停留在“让 URL 出现”这一步,不能替代站内结构,也不适合当成长期方案。
  • 站内搜索、RSS、分类索引页:对内容量大的站点,可以作为补充入口,但同样需要保证页面本身可被直接访问。

判断方法很简单:先看服务器日志里是否出现过该 URL 的请求。如果完全没有访问记录,问题大概率在发现环节;如果访问过,就继续往后看。

第二阶段:URL 被抓取

被抓取意味着蜘蛛真的向服务器发了请求。这一步的变量主要不在页面内容,而在下面几个方面:

  • 服务器可用性:5xx、连接超时、频繁断连都会让蜘蛛降低抓取频率,恢复往往需要一段时间。
  • 状态码:200 才是正常获取;3xx 会消耗一次跳转,4xx、5xx 会让 URL 被反复回访或直接放弃。
  • robots 与 noindex:robots 阻止的是抓取,noindex 阻止的是索引,两者作用不同,配错会导致 URL 长期停在清单外,或者抓了也不入库。
  • 抓取预算:站点体量越大,低价值 URL 越多,真正需要的页面分到的抓取机会就越少。

第三阶段:URL 被索引

抓取成功不等于有索引。蜘蛛拿到 HTML 之后,还要解析、渲染、去重、判断内容质量,最终才决定是否入库。常见的拦路情况包括:

  • 页面主要靠 JS 渲染,链接和正文在初始 HTML 里都不存在;
  • 同一份内容对应多个 URL,规范版本没有明确;
  • 页面内容过薄,或者与站内已有页面高度相似;
  • 返回的是 200,但实际是空页、无结果列表或占位内容。

这些问题不会在抓取日志里报错,只能通过对比抓取量和索引量、抽查页面表现来发现。

排查顺序:先确认卡在哪一层

与其同时调整十几个地方,不如按顺序确认:

  1. 在服务器日志里搜索目标 URL,确认有没有被抓取过;
  2. 有抓取记录但状态码异常,优先修服务器和跳转链路;
  3. 抓取正常仍没有索引,检查 robots、canonical、渲染方式和内容本身;
  4. 完全没有抓取记录,回头确认发现入口是否真的存在,内链和 Sitemap 是否可读。

站点能稳定控制的部分

三个环节里,站点控制力最强的是发现入口和抓取的基础条件:稳定的服务器、清晰的目录与内链、可直接读取的 HTML、明确的规范 URL。这些不需要额外技巧,也很难被替代。

外部入口、蜘蛛池之类的手段,最多只能在前端推一把,让 URL 更早进入清单。一旦后端条件不成立,推来的抓取机会也会被浪费掉。

抓取和索引都不是站点单方面能决定的事,但把可控的部分做扎实,至少不会让问题卡在最容易解决的那一层。