直接回答:先确认百度蜘蛛拿到的是静态HTML还是执行脚本后的DOM,再把两种结果中的标题、正文、可索引链接分别对照。若缺少日志和抓取工具权限,最小动作是手动抓取页面源码与渲染后代码并逐项比较;这只能说明差异存在,不能证明百度已经按渲染结果建立索引。
假设某站点内容页在浏览器中能看到完整正文,但用查看源代码方式打开时,正文位置只有一段脚本占位符。此时不能直接判定页面没有被收录,也不能直接判定百度不执行脚本。正确的顺序是:先固定一个页面作为样本,再分别保存静态响应和渲染结果,最后比较两者在标题、正文、链接上的差异。
如果静态响应中标题已经存在,正文为空;渲染后标题和正文都出现,那么问题集中在正文的注入方式。下一步应检查正文是否由接口返回、是否依赖用户交互、是否在脚本报错后停止渲染。若静态响应里连标题都没有,则先处理服务端输出,而不是继续排查脚本。
缺少百度抓取工具权限时,仍可执行以下最小动作:
这些动作的结果会直接影响下一步:如果禁用JavaScript后核心内容仍在,说明差异来自增强脚本,优先检查脚本是否覆盖或替换了原有节点;如果禁用后核心内容消失,说明内容依赖脚本注入,应回到服务端输出或预渲染方案。
静态响应中的<title>和渲染后的document.title不一致时,先确认脚本是否在加载后改写标题。若改写发生在百度抓取之前,蜘蛛可能看到不同标题;若改写依赖用户点击或滚动,则通常不会影响初始抓取。这里不能仅凭一次手动访问就推断百度看到的是哪一个版本。
正文由脚本插入时,要区分两种情况:脚本从同源接口取回内容并插入,或脚本只在客户端拼接静态字符串。前者需要检查接口是否对百度蜘蛛可访问,后者需要检查脚本是否被robots.txt拦截。robots.txt的抓取限制不等于可靠的索引移除,它只影响抓取路径,不能替代内容层面的处理。
静态响应中链接为空、渲染后出现大量链接,并不自动意味着这些链接会被百度发现。站点地图不保证收录,链接能否被抓取还取决于链接是否在初始DOM中、是否可被解析。若链接只存在于点击后的DOM中,百度蜘蛛未必触发该交互。
假设没有服务器日志,只能看到静态响应与渲染结果不同。可以推出:页面存在两套内容输出路径,至少有一套可能不被蜘蛛执行。不能推出:百度一定执行了脚本、一定没有收录、或某个具体比例的内容被遗漏。请求量、抓取量或某项统计归零也不能单独证明处理正确,它还可能来自抓取频次变化、robots限制、服务器响应异常或样本选择偏差。
一个可执行的判断方法是:选三到五个结构相同的页面,分别记录静态响应中正文节点数量、渲染后正文节点数量、禁用JavaScript后正文节点数量。若多数页面呈现相同模式,说明问题来自模板而非单页;若只有个别页面不同,优先检查该页的数据接口或脚本错误。
若确认核心内容只在渲染后出现,且没有百度抓取调试权限,最小可行动作是先让服务端输出一份包含标题和正文首段的静态HTML,再用同一URL观察静态响应变化。这个动作的结果是:静态响应中出现了可读正文,脚本仍可继续增强页面。此时不能直接宣布收录会改善,只能说明蜘蛛在初始响应中已经能读到核心内容。
若服务端输出后静态响应与渲染结果仍然不同,下一步应检查脚本是否在加载后删除或替换了服务端节点。若脚本只是追加评论、推荐等次要模块,差异通常不影响核心内容判断;若脚本替换了标题或正文容器,则应调整注入顺序,让服务端内容保留在初始DOM中。
整个过程要分别核查百度与其他搜索引擎的支持情况,因为不同引擎对脚本执行和渲染时机的处理并不一致。HTTPS不保证安全无漏洞或排名,它只是传输层条件,不能用来解释静态与渲染差异。把差异定位到具体节点、具体输出路径和具体页面模板后,再决定是改服务端输出、改脚本注入方式,还是先补充可观察数据。