检查百度抓取的前后环节依赖,核心是沿着“链接发现→robots规则→抓取请求→服务器响应→内容入库”这条链逐段验证:先确认上一环是否真的把URL交给了下一环,再确认下一环是否接受了它。任何一环断开,后面环节都不会有结果。下面是一份可执行清单,每项都说明查什么、怎么查、结果说明什么。
要查什么:目标URL有没有出现在能被百度发现的入口里,比如站内链接、站点地图、外链。
怎么查:用site:指令查该URL是否已被收录;在百度搜索资源平台查看“普通收录”的提交记录;检查站点地图文件里是否包含该URL,并确认站点地图本身可正常访问。
结果说明什么:如果站点地图里没有这个URL,说明发现环节就断了,后面抓取无从谈起。如果站点地图有但从未被抓取,问题可能出在robots规则或服务器响应,而不是链接发现。注意站点地图不保证收录,它只提供发现线索。
要查什么:robots.txt里有没有针对百度爬虫的禁止规则,以及这些规则是否误伤了目标路径。
怎么查:直接访问https://你的域名/robots.txt,找到User-agent: Baiduspider段落,看Disallow是否覆盖了目标目录。再用百度搜索资源平台的robots检测工具验证具体URL。
结果说明什么:如果目标路径被Disallow,百度不会抓取它,这是明确的阻断。需要提醒的是,robots.txt的抓取限制不等于可靠的索引移除:它只阻止抓取,已收录的页面仍可能留在索引里。要真正移除,需要配合其他手段,但那属于另一个问题。
要查什么:百度爬虫请求该URL时,服务器返回的状态码和响应时间。
怎么查:在搜索资源平台的“抓取诊断”里对目标URL发起抓取,查看返回的HTTP状态码、响应头和抓取时间。同时用curl -I在本地核对同一URL的状态码。
结果说明什么:返回200表示服务器正常交付内容;返回403或503通常意味着服务器拒绝了爬虫或临时不可用;返回301/302要确认跳转目标是否可达。响应时间过长也可能导致抓取失败。这里要区分“可能原因”和“已经定位的原因”:一次抓取失败可能是超时、也可能是封禁,需要多看几次诊断结果才能判断,不要凭单次现象下结论。
要查什么:返回的HTML里,正文和关键信息是否真的存在,而不是依赖客户端脚本渲染后才出现。
怎么查:在抓取诊断里查看“抓取返回内容”,搜索正文中的一段独特文字,看它是否出现在原始HTML中。如果正文只存在于JavaScript渲染后的DOM里,原始HTML中可能找不到。
结果说明什么:如果原始HTML里没有正文,百度可能抓到了页面但拿不到有效内容,后续索引环节就会缺料。此时需要检查渲染方式,确认内容是否以服务端输出或可被爬虫获取的形式呈现。
把上面四步串成一条判断链,按顺序排除:
每一步的检查结果都决定下一步该查什么。如果跳过前面的环节直接怀疑索引,很容易在错误的方向上花时间。
下一步:选定一个具体URL,按上面五步依次记录结果,找出第一个断开的环节,再针对那一环深入排查。