做收录核对时经常会遇到这样一种情况:日志里明明有蜘蛛访问记录,状态码也是 200,但过一两周去查索引,这个 URL 依然不在。抓取和收录本来就是两件事,抓取只说明蜘蛛把内容取走了,是否建索引还要看内容质量、重复程度、站点整体信号。把两者混为一谈,很容易得出“蜘蛛已经来了,收录只是时间问题”的错误结论。
为什么要做交叉核对
日志记录的是蜘蛛来过几次、拿到了什么响应;索引数据记录的是最终留下了哪些地址。这两份数据的口径、时间、粒度都不一样,直接对比很容易得出错误结论。交叉核对的目的不是找出一个“正确数字”,而是找出那些抓了多次却始终没进索引的 URL,把它们当成一批样本来分析。
第一步:先把两份数据的口径对齐
时间窗要对齐
索引有延迟,今天的抓取不可能反映在今天的索引数据里。核对时通常要留出缓冲期,或者只分析那些在抓取后经过较长时间仍未出现的 URL。
URL 要对齐
日志里的地址往往带着参数、大小写、结尾斜杠的差异,索引数据里是归一化之后的版本。核对前先做一轮 URL 归一,否则会把同一个页面当成两个,得出“抓了很多却没收录”的假象。
第二步:给“未被收录”的 URL 分组
- 内容偏薄,或与其他页面高度相似的模板页;
- 被 noindex、robots、canonical 外指的地址;
- 正文依赖 JS 渲染,蜘蛛拿到的是空壳;
- 参数、排序、筛选生成的地址;
- CDN 或缓存返回了旧版本甚至错误版本。
分组之后往往会发现,问题通常集中在少数几类模板上,而不是均匀散落在全站。
第三步:抽查响应内容,别只看状态码
状态码 200 不代表蜘蛛拿到的是你预期的内容。抽查几个未收录的 URL,看看蜘蛛视角下返回的 HTML 里到底有什么:正文是否存在、标题是否是模板化的、有没有大段的导航和广告。可以结合抓取工具的渲染结果,和浏览器里看到的内容做对比。
抓取是入场券,收录是评审结果。日志只能证明“来过”,不能证明“留下了”。
一个可执行的核对顺序
- 选定时间窗,导出该窗口内被抓取的 URL 列表;
- 做 URL 归一,去重;
- 与当前索引数据取差集,得到“抓了未收录”的样本;
- 按页面模板分组,统计各类占比;
- 对占比最高的一类做内容抽查,确认是质量问题、信号冲突还是抓取版本问题;
- 改完之后不要只看数字变化,继续用同一套流程复测。
这套流程不会立刻提高收录量,但它能帮你把“为什么没收录”从一个模糊的感觉,变成几类可以分别处理的具体原因。