排查内容加载差异,核心是判断“搜索引擎看到的页面内容”和“用户浏览器看到的内容”是否一致。做法是先用抓取工具或查看源代码确认初始HTML里有没有正文,再对比渲染后的页面,最后定位是服务端输出、前端渲染还是屏蔽规则造成的差异。第一次接触这个问题,起点就是固定一个URL,分别看三种视图:原始HTML、渲染后DOM、普通用户可见页面。
不要凭感觉判断。打开目标页面,右键查看网页源代码,用Ctrl+F搜索正文里的一句独特文字,比如第一段的小标题。如果源代码里搜不到,但页面上肉眼能看到,说明内容由JavaScript在浏览器端生成。
更稳妥的方式是用能执行脚本的抓取工具,分别保存“关闭JS”和“开启JS”两次结果。检查项:
如果初始HTML和渲染后都有正文,差异可能只是排版或广告位,不影响收录判断。
内容加载差异可能来自不同环节,需要分开看,不要一上来就断定是某个原因。
这三种现象可能同时出现。比如一个页面既用JS渲染,又对某些抓取请求返回简化版,这时要分别记录证据,不要只改一处就以为解决。
如果确认正文只在JS执行后出现,优先考虑服务端渲染或预渲染,让初始HTML里就包含核心文字。对多数内容页来说,标题、正文、主要链接放在初始HTML中最稳妥。
假设一个教程页的正文由前端框架在接口返回后插入,可以这样改:
<h2>等结构标签是否也在初始HTML中,避免渲染后才生成。适用条件是页面内容重要、需要被稳定抓取。如果页面本身就是登录后的应用界面,且不依赖搜索流量,则不必强求初始HTML完整。
每次调整后,用同一套方法重新对比:关闭JS抓一次,开启JS抓一次,再和用户可见页面比对。复查时注意:
如果复查发现初始HTML已有正文,但抓取结果仍不同,再回头检查请求头、屏蔽规则和缓存,而不是重复改渲染逻辑。
下一步:选一个你怀疑有加载差异的URL,先做“关闭JS”和“开启JS”两次抓取,把正文关键句是否出现记下来,再决定是改服务端输出还是调整渲染方式。