网站收录

抓取成功不等于被收录:从响应码到入索引的排查顺序

服务器日志里能看到抓取记录,索引里却找不到页面,问题往往不在抓取本身。本文把抓取和收录拆成几道判断:内容是否真的取到、指令是否允许索引、canonical 指向哪里、页面是否具备独立价值,并给出一条可执行的排查顺序,帮你把两类问题分开处理。

网站收录

抓取成功不等于被收录:从响应码到入索引的排查顺序

很多人判断一个页面有没有被收录,习惯直接看索引报告或者搜索 site: 的结果。但如果换个角度,先去服务器日志里看抓取记录,往往会遇到另一种情况:爬虫明明来过,返回码也是 200,索引里却找不到这个地址。这时候需要先分清两件事:抓取(crawl)和收录(index)。

抓取和收录是两道不同的关

抓取指的是爬虫把 URL 对应的内容取回去,只说明它发现了这个地址并且能访问。收录则是搜索引擎在抓取之后,对内容做解析、去重、质量判断,最后决定是否写入索引并允许被检索。从抓取到入索引之间还有若干道判断,任何一道没过,日志里都会留下抓取记录,但索引里看不到结果。

第一关:抓取本身是否真的成功

日志里的 200 不等于内容被完整取到。常见的干扰有:

  • 返回 200 但正文是空壳,内容依赖 JS 渲染,而渲染阶段没有跑起来;
  • 返回 200 的其实是软 404 页面,内容与错误页高度相似;
  • robots.txt 屏蔽了 CSS 与 JS,爬虫拿到的是残缺页面;
  • 页面被登录墙、验证码或 CDN 的频控拦在门外。

这一关要确认的是:返回码正常、正文能被取到、渲染后的内容与用户看到的基本一致。

第二关:可索引性判断

抓取成功之后,搜索引擎会先看这个页面允不允许被索引。meta robots 里的 noindex、HTTP 头里的 X-Robots-Tag,以及 canonical 指向了别的地址,都会让页面即使被抓取也不进入索引,或者索引里挂的是另一个 URL。此外,如果同一批内容存在多个近似版本,搜索引擎通常只会挑一个作为代表,其余的以替代页面的形式存在,在报告里往往表现为已抓取但尚未编入索引。

第三关:是否被选中

指令上允许索引,也不代表一定会被收录。这一层更多是价值判断:页面是否有独立信息、主体内容占比是否够、与站内其他页面的差异是否明显。批量生成的列表页、内容高度相似的地域页,容易出现抓取正常但收录很少的情况。

建议的排查顺序

  1. 用日志或 URL 检查工具确认最近一次抓取时间、返回码,以及抓取的是哪一个 URL 版本;
  2. 检查 robots.txt 是否放行该目录,以及页面是否带有 noindex;
  3. 查看 canonical 指向的是自己还是别的地址;
  4. 对比站内是否存在内容近似的多个版本,确认谁是首选;
  5. 检查正文主体是否完整,是否被导航和推荐模块淹没;
  6. 确认该 URL 有内链可达,并且出现在 sitemap 中。

按这个顺序走,可以把抓取问题和收录问题分开,避免在一个点上反复改动。

日志能说明什么,不能说明什么

有抓取记录,只能说明发现和访问发生过,不能作为收录的证据;反过来,某段时间日志里没有某个地址,也不代表它没进索引,可能只是已有缓存、暂时不需要重抓。判断收录,最终还是要回到索引状态本身,把日志当作抓取侧的补充信息。

抓取是过程,收录是结果。先把过程里的异常排掉,再去解释结果。

实操中比较省事的做法是:为一批重点页面单独建个小清单,记录抓取时间、返回码、canonical、是否 noindex、索引状态这几项,定期回看。这比事后集中排查更容易定位到变化发生的节点。