要判断一个页面为什么没有被百度索引,日志里最值得先核对的是五类字段:请求时间、请求URL、HTTP状态码、User-Agent、响应字节数。这五个字段能回答“百度蜘蛛有没有来”“来了抓的是不是目标页”“抓到了什么结果”“是不是被拦截或跳转”“返回内容是否为空”。如果日志里还记录了Referer、响应时间、百度蜘蛛IP,也可以作为辅助证据。核对顺序建议按“先看有没有抓取,再看抓取是否成功,最后看抓取内容是否可入库”推进,而不是一上来就翻遍所有列。
日志中的User-Agent字段是判断请求来源的第一依据。百度蜘蛛的UA通常包含Baiduspider字样,但UA可以被伪造,所以不能只看UA就下结论。更稳妥的做法是把UA与IP反查结果结合起来:如果UA显示为Baiduspider,但IP不属于百度官方公布的出口段,这次请求就不能当作百度抓取来统计。
核对时注意区分几种情况:
如果站点使用CDN或反向代理,源站日志里可能看不到真实客户端IP,需要先确认日志记录的是代理IP还是回源后的真实IP,否则后面的判断会整体偏移。
HTTP状态码决定百度蜘蛛这次抓取是否成功。常见的对应关系是:
200:正常返回,页面内容可被读取。301或302:发生跳转,需要继续核对跳转目标是否是期望的最终URL。404:页面不存在,若目标页本应存在,说明链接或路由配置有问题。403或503:被拒绝或服务不可用,蜘蛛可能暂时放弃抓取。429:请求过于频繁被限流,需要检查服务器防护策略是否误伤百度蜘蛛。响应字节数常被忽略,但它能暴露“状态码200但内容为空”的情况。如果某个URL反复返回200,而响应字节数始终只有几百字节,很可能返回的是验证页、空壳页或错误提示页,而不是真正的内容页。把状态码与响应字节数放在一起看,比单看状态码更可靠。
URL字段要核对三件事:协议是HTTP还是HTTPS、是否带www、参数和结尾斜杠是否与预期一致。同一个页面如果存在多个可访问地址,日志里会出现多条不同URL的记录,这时需要判断哪个是规范版本,其他版本是否做了跳转。
请求时间字段用于判断抓取频率和抓取时段。如果目标页在很长一段时间内只有零星几次抓取,说明抓取预算没有倾斜到该页面;如果抓取频繁但索引状态没有变化,问题更可能出在内容质量或页面结构,而不是抓取通道。把时间字段按天聚合,可以看出抓取是持续的还是突然中断的。
单项字段容易误判,组合判断才有意义。可以按下面的顺序做一次检查:
如果日志显示百度蜘蛛从未抓取目标页,优先检查robots.txt是否误屏蔽、内链是否可达、站点地图是否提交且格式正确。需要强调的是,robots.txt的抓取限制不等于可靠的索引移除,站点地图也不保证收录,它们只影响发现和抓取环节,不能替代对页面本身质量的判断。
一次合格的日志核对,应当能明确回答:百度蜘蛛是否抓取过目标页、抓取时返回了什么状态、返回内容是否为空、抓取是否持续。如果这四点都能给出证据,就可以把问题定位到抓取、渲染或内容质量中的某一环,而不是笼统地说“没有被收录”。
下一步建议先导出最近30天内包含Baiduspider且URL匹配目标页的日志记录,按状态码和响应字节数做一次分组统计。如果记录为空,转向检查robots.txt和内链入口;如果记录存在但状态码异常,按具体状态码逐项修复后,再持续观察后续抓取记录的变化。