动态页面做百度收录批量查询时,不能只看URL是否返回200,而要确认“百度实际能看到的可见内容”是否与用户看到的一致。最直接的做法是:先关闭JavaScript抓取一个页面,再用支持渲染的方式抓取同一个页面,对比两次得到的正文、链接和标题;如果关键内容只在渲染后出现,就要把它纳入可抓取范围,或为动态内容提供静态化、预渲染等服务端输出方案。
动态页面通常依赖JavaScript从接口取数据,再把内容插入页面。用户打开浏览器时看到的是渲染后的结果;百度抓取时可能先拿到原始HTML,也可能执行部分脚本后再取内容。两种情况得到的正文可能完全不同。
判断时不要只看“页面能不能打开”,要看以下三项:
结果说明:原始HTML没有核心正文、渲染后才有,说明该内容对百度属于“可能不可见”;原始HTML已有正文,渲染只是增强交互,则收录风险较低。
用 curl -A "Baiduspider" URL 获取页面源码。要查的是核心正文、主要内链、标题标签是否出现在返回内容中。如果返回的是空壳、加载提示或“请开启JavaScript”,说明百度在未渲染时看不到实质内容。
在浏览器中打开同一URL,按F12查看Elements面板,搜索核心句子。要查的是渲染后正文是否完整、链接是否可点击、标题是否被脚本改写。结果说明:渲染后才出现的内容,需要评估百度是否会执行对应脚本;不能默认一定被抓到。
检查 robots.txt 是否屏蔽了JS、CSS或接口路径,检查页面是否有 noindex。要查的是这些资源是否被禁止抓取。结果说明:robots.txt限制抓取不等于页面会被移除索引,也不等于百度一定看不到内容;它只影响抓取路径,不能当作可靠的索引控制手段。
查看动态URL是否出现在站点地图中,以及是否有静态链接指向它。要查的是URL是否可被发现。结果说明:站点地图不保证收录,但缺少入口会降低被发现的机会;动态URL如果只靠脚本跳转,发现难度更高。
确认页面返回200,而不是302跳转到登录页或404。检查 canonical 是否指向自身或正确版本。要查的是状态码和规范信号是否一致。结果说明:状态异常或规范混乱会让百度难以确认哪个URL应被收录。
确认动态内容不可见后,常见处理方案有两类:服务端输出(SSR、静态化、预渲染)和前端渲染后等待抓取。选择依据不是哪个更流行,而是内容更新频率、技术成本和可核查性。
假设一个商品列表页,价格和库存由接口返回。如果原始HTML只有“加载中”,而百度抓取不执行该接口,那么该页面对百度可见的内容就接近于零。此时更稳妥的是让服务端先输出商品名称、分类和主要链接,前端再负责筛选和排序。这个例子只说明判断逻辑,不代表具体项目效果。
批量查询不是只看“收录/未收录”两个状态,而应给每个URL记录四项:原始HTML是否含正文、渲染后是否含正文、是否有抓取限制、是否有可发现入口。四项都通过,才可判断该动态页面的可见内容基本可靠;只要“原始HTML无正文”且“渲染结果无法确认”,就应优先处理,而不是继续扩大查询数量。
另外,HTTPS只代表传输加密,不保证页面安全无漏洞,也不保证排名。不同搜索引擎对JavaScript渲染的支持情况不同,百度语境下应单独核查,不要用其他引擎的结果直接替代。
下一步:选取一个动态模板页,分别保存原始HTML和渲染后DOM,对比核心正文与内链差异;若差异明显,先改一个模板做服务端输出,再用同一套清单复测,确认百度可见内容稳定后再批量推广到同类页面。