动态页面确认可见内容,不能只看浏览器里显示了什么。百度抓取和普通用户访问可能拿到不同结果:用户带着登录状态、Cookie、JavaScript 执行结果,而抓取端往往看到的是初始 HTML。要判断“删除百度缓存”后页面实际对百度可见的内容,核心是抓取未执行脚本前的源码、对比渲染后的 DOM,并用百度搜索资源平台提供的抓取诊断工具核对返回内容。
很多动态站点的正文由前端 JavaScript 请求接口后填充。运营者在浏览器里看到完整文章,就认为页面内容已经对百度可见。实际上,百度首次抓取时拿到的是服务器返回的原始 HTML。如果原始 HTML 里没有正文,只有一段加载脚本和一个空容器,那么百度索引到的正文可能为空,或者只索引到导航和页脚。
这里需要区分两种情况:一种是百度已经执行了 JavaScript 并拿到渲染后内容,另一种是百度只拿到初始 HTML。前者取决于百度对脚本渲染的处理能力,后者才是站点可以自己控制的部分。不能因为某次搜索结果里出现了正文,就推断所有动态页面都被正确渲染。
时间和人手有限时,按下面顺序处理,先做成本最低、判断最快的检查。
curl 请求页面,或者在浏览器中禁用 JavaScript 后刷新。如果正文、标题、关键数据都不在返回的 HTML 里,说明百度未执行脚本时看不到这些内容。检查项可以简化为一句判断:把 JavaScript 关掉后,页面还剩多少可读正文。如果答案接近零,这个动态页面就属于需要优先处理的对象。
删除百度缓存通常指通过百度搜索资源平台的快速删除或缓存更新入口,让旧快照或旧摘要不再展示。它解决的是“百度展示的版本过旧”问题,不解决“动态页面正文根本不在初始 HTML 里”的问题。如果页面正文依赖脚本渲染,即使旧缓存被删除,百度重新抓取时仍可能拿到空正文,最终展示的摘要依然不理想。
因此,动态页面的正确顺序是:先确认百度能抓到什么,再决定是否需要删除缓存。若原始 HTML 已包含正文,只是快照未更新,可以走缓存更新流程;若原始 HTML 不含正文,应先改服务端输出或做预渲染,再处理缓存。
如果确认百度抓取到的初始 HTML 缺少正文,可以选择以下方式,但适用条件不同:
robots.txt 的抓取限制不等于可靠的索引移除。用 robots.txt 屏蔽某个动态路径,只能阻止百度抓取,不能保证已索引的页面从搜索结果中消失。站点地图也不保证收录,它只是提交 URL 的渠道之一。HTTPS 同样不保证页面内容对百度可见,它解决的是传输加密,不解决正文是否在初始 HTML 中。
下一步:挑一个正文完全由脚本填充的动态页面,用抓取诊断跑一次,把返回 HTML 中是否包含正文作为判断依据,再决定是改服务端输出还是只更新缓存。