網站收錄

收錄卡在“已抓取,尚未编入索引”:從内容與结构两端逐項排查

“已抓取,尚未编入索引”和“已發現但未抓取”卡的地方不一样,前者卡在判断,後者卡在排队。這篇文章把排查拆成内容與结构两端:先確認爬虫抓到的是不是正文,再看頁面能否獨立成立、URL 關系是否收敛,最後给出一份可以照着走的顺序和观察节奏。

網站收錄

收錄卡在“已抓取,尚未编入索引”:從内容與结构两端逐項排查

在收錄工具里看到“已抓取,尚未编入索引”,說明爬虫已经把頁面拿走了,但索引环节没有放行。這個狀態和“已發現但未抓取”不是一回事:前者卡在判断,後者卡在排队。把這两件事分開,排查才有落点。

先確認不是抓取层面的問题

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

  • 响應的狀態碼是不是 200,中間有没有夹带跳轉
  • 靠 JS 渲染的頁面,抓到的 HTML 里有没有實质文字
  • 主要内容是不是放在需要点击、滚動或登入之後才加载的区域

如果這一步就發現差距明顯,那么先解决抓取内容的問题,再谈其他。

内容层面:索引要的是一份能獨立成立的頁面

索引不是把 HTML 原样存下来,它要判断這一頁能不能單獨回答一個問题。以下几類内容會让這個判断變得困难。

  • 正文主要由其他頁面拼凑或摘要组成,自己新增的信息很少
  • 頁面上大部分文字是導航、篩選條件、參數表,真正說明問题的句子没几句
  • 同一批頁面只改了几個词,其余完全一样
  • 内容依赖用戶輸入、地理位置或登入狀態,爬虫拿到的是預設空態

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

结构层面:让頁面之間的關系说得清楚

頁面被索引时,系統還要判断它在站内處在什么位置、和哪些頁面相似。這里的常见問题有几個。

  1. 同一内容有多個 URL 都能打開,規范指向没有明确收敛
  2. 内鏈都指向列表頁,具体頁面只有 sitemap 里一個入口
  3. 目錄层級很深,中間没有可以点進去的路径
  4. 頁面上的主要出口都是站外連結,站内没有承接
規范标簽、内鏈、sitemap 這三者说的事情如果互相矛盾,索引环节更倾向于先放着不動。

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

  1. 拉出一份狀態為“已抓取,尚未编入索引”的 URL 清單,按模板和目錄分组
  2. 每组抽两三個頁面,在無缓存、未登入的狀態下看用戶第一次看到的是什么
  3. 用抓取工具看爬虫實际拿到的 HTML,和上一步的结果對比
  4. 看這组頁面在站内有没有獨立入口,入口是不是正文里的連結
  5. 看這组頁面之間、以及和主頁面之間,内容重合到什么程度
  6. 记下改動時間,隔一段時間再回来看同一批 URL 的狀態

分组的意义在于,同一個模板出問题,往往是几十上百個頁面一起卡在同一個狀態,逐個頁面改既慢又容易漏。

改動之後不要急着下结论

索引狀態的更新有自己的节奏。同一批頁面改完,几天到几周内出現不同步很常见。與其每天刷新狀態,不如先把同一模板的問题一次改完,再固定几個 URL 作為長期观察样本。

另外也要注意,這個狀態並不等于頁面被否定。搜尋需求本身稀薄、同類頁面已经足够多的时候,狀態也可能長期停在這里。這種情况更值得考虑的是頁面要不要合並,而不是繼續往上面堆内容。