网站收录

收录卡在“已抓取,尚未编入索引”:从内容与结构两端逐项排查

“已抓取,尚未编入索引”和“已发现但未抓取”卡的地方不一样,前者卡在判断,后者卡在排队。这篇文章把排查拆成内容与结构两端:先确认爬虫抓到的是不是正文,再看页面能否独立成立、URL 关系是否收敛,最后给出一份可以照着走的顺序和观察节奏。

网站收录

收录卡在“已抓取,尚未编入索引”:从内容与结构两端逐项排查

在收录工具里看到“已抓取,尚未编入索引”,说明爬虫已经把页面拿走了,但索引环节没有放行。这个状态和“已发现但未抓取”不是一回事:前者卡在判断,后者卡在排队。把这两件事分开,排查才有落点。

先确认不是抓取层面的问题

状态已经写明抓到了,所以 robots、抓取频次这些通常不是首要怀疑对象。但有两处仍然值得先看一眼:抓到的是不是真正的正文版本,以及返回给爬虫的内容和用户第一次看到的内容是不是同一份。

  • 响应的状态码是不是 200,中间有没有夹带跳转
  • 靠 JS 渲染的页面,抓到的 HTML 里有没有实质文字
  • 主要内容是不是放在需要点击、滚动或登录之后才加载的区域

如果这一步就发现差距明显,那么先解决抓取内容的问题,再谈其他。

内容层面:索引要的是一份能独立成立的页面

索引不是把 HTML 原样存下来,它要判断这一页能不能单独回答一个问题。以下几类内容会让这个判断变得困难。

  • 正文主要由其他页面拼凑或摘要组成,自己新增的信息很少
  • 页面上大部分文字是导航、筛选条件、参数表,真正说明问题的句子没几句
  • 同一批页面只改了几个词,其余完全一样
  • 内容依赖用户输入、地理位置或登录状态,爬虫拿到的是默认空态

这些情况不一定非要删页面,但需要给页面补上别的页面没有的信息,或者把它收敛到主页面上去。

结构层面:让页面之间的关系说得清楚

页面被索引时,系统还要判断它在站内处在什么位置、和哪些页面相似。这里的常见问题有几个。

  1. 同一内容有多个 URL 都能打开,规范指向没有明确收敛
  2. 内链都指向列表页,具体页面只有 sitemap 里一个入口
  3. 目录层级很深,中间没有可以点进去的路径
  4. 页面上的主要出口都是站外链接,站内没有承接
规范标签、内链、sitemap 这三者说的事情如果互相矛盾,索引环节更倾向于先放着不动。

一份可以照着走的排查顺序

  1. 拉出一份状态为“已抓取,尚未编入索引”的 URL 清单,按模板和目录分组
  2. 每组抽两三个页面,在无缓存、未登录的状态下看用户第一次看到的是什么
  3. 用抓取工具看爬虫实际拿到的 HTML,和上一步的结果对比
  4. 看这组页面在站内有没有独立入口,入口是不是正文里的链接
  5. 看这组页面之间、以及和主页面之间,内容重合到什么程度
  6. 记下改动时间,隔一段时间再回来看同一批 URL 的状态

分组的意义在于,同一个模板出问题,往往是几十上百个页面一起卡在同一个状态,逐个页面改既慢又容易漏。

改动之后不要急着下结论

索引状态的更新有自己的节奏。同一批页面改完,几天到几周内出现不同步很常见。与其每天刷新状态,不如先把同一模板的问题一次改完,再固定几个 URL 作为长期观察样本。

另外也要注意,这个状态并不等于页面被否定。搜索需求本身稀薄、同类页面已经足够多的时候,状态也可能长期停在这里。这种情况更值得考虑的是页面要不要合并,而不是继续往上面堆内容。