要确认动态页面在百度眼中的可见内容,最直接的办法是查看“百度抓取到的原始HTML”,而不是你在浏览器里看到的渲染结果。浏览器会执行JavaScript、填充数据、显示弹窗,但百度蜘蛛拿到的可能只是初始HTML。如果关键内容只靠脚本异步写入,蜘蛛未必能看到。因此,“页面能打开”不等于“内容被收录”,这是动态页面最常见的误解。
动态页面通常有两种内容来源:一种是服务器直接返回的HTML,另一种是页面加载后由JavaScript请求接口再插入DOM。百度蜘蛛抓取时,会先拿到服务器响应,再决定是否执行脚本。即使执行,也可能受资源加载、超时、渲染预算限制。结果就是:用户看到完整列表,蜘蛛只看到空容器或“加载中”。
这里要区分“可能原因”和“已经定位的原因”。页面不收录,可能是内容不可见,也可能是质量、重复、抓取频次、robots限制等问题。不要一看到动态页面就断定是渲染问题,必须先取证。
百度搜索资源平台提供抓取诊断工具,可以模拟蜘蛛请求并查看返回的HTML。操作步骤:
检查项:返回状态码是否为200;返回内容是否被重定向到登录页或验证页;正文是否为空;是否只有脚本标签和容器。判断结果:若返回内容包含目标文字,可见性基本没问题;若只有<div id="app"></div>,则内容依赖前端渲染,需要进一步处理。
不依赖平台工具也能做初步判断。在浏览器中右键“查看网页源代码”,注意不是“检查”面板。源代码是服务器返回的原始HTML。按Ctrl+F搜索页面核心文字。如果源代码里没有,而“检查”面板里有,说明文字是脚本后插入的。
另一个办法是禁用JavaScript后刷新页面。如果核心内容消失或只剩占位符,说明可见内容依赖脚本。适用条件:适用于内容型动态页、商品详情页、文章列表页。判断结果:禁用后仍能看到核心文字,说明服务端已输出;禁用后看不到,则百度也可能看不到。
确认内容不可见后,处理方式有几种:
选择依据:如果页面内容对收录和流量重要,优先服务端渲染;如果只是交互增强,可保留前端渲染。不要为了“加速收录”而堆砌站点地图或外链,那不能替代内容可见性。
每次修改动态页面后,按以下顺序复核:
下一步:挑一个未收录的动态页面,用抓取诊断导出返回HTML,搜索页面标题和正文首句,根据结果决定是改服务端渲染还是调整抓取配置。