要确认 Yahoo 收录的动态页面里到底有哪些可见内容,不能只看浏览器里渲染出来的画面,而要把“用户看到的”“HTML 源码里有的”“Yahoo 抓取到的”三件事分开核对。动态页面常见的做法是用 JavaScript 在浏览器端填充内容,而抓取工具拿到的初始 HTML 可能只有空容器。判断起点是:先确认正文是否出现在原始 HTML 中,再确认 Yahoo 的抓取结果是否包含这些文字。
假设有一个商品详情页,地址形如 /product?id=123,页面打开后能看到商品名、价格和库存状态。这些信息由页面加载后的脚本请求接口再写入 <div id="detail"></div>。此时存在三种不同状态:
如果只验证了第一种,就以为页面内容已经可被收录,这是最常见的错误。动态页面的“可见内容”必须以抓取端实际获得的结果为准。
打开页面后查看网页源代码,而不是审查元素。在源代码中搜索正文里的独特文字,比如商品名或一段描述。如果能直接搜到,说明这部分是服务端输出或预渲染的,抓取端通常能读到。如果搜不到,只在审查元素里能看到,说明它是客户端渲染的。
对客户端渲染的页面,可以进一步判断:
curl -s "页面地址",再搜索正文关键词。若结果中没有,说明初始响应不含该内容。<noscript> 回退内容或结构化数据,这些可能提供替代信息。这一步的结论只有两类:正文在初始 HTML 中,或正文不在初始 HTML 中。判断结果直接决定后续要不要做预渲染或服务端渲染。
确认页面在原始 HTML 中的状态后,还要单独核对 Yahoo 的抓取情况。不同搜索引擎对 JavaScript 的执行支持不同,不能因为某个搜索引擎能渲染,就推断 Yahoo 也一定能。可以执行的检查包括:
site: 查询该页面地址,确认页面是否至少被收录;但收录不等于正文被抓到。如果 Yahoo 抓取记录显示它只拿到了空容器,而正文在脚本执行后才出现,那么当前可见内容对 Yahoo 来说就是不完整的。
确认问题后,常见处理方向有三种,适用条件不同:
无论选哪种,判断标准是一致的:用原始响应或抓取日志验证正文是否出现。站点地图可以提交页面地址,但不保证收录,也不能替代对正文可见性的验证。HTTPS 只解决传输加密,不保证页面内容被抓取,也不保证排名。
第一次处理这个问题时,容易把以下几件事混在一起:
site: 有结果就认为动态内容已被完整收录。可以按这个顺序执行:查看源代码搜索正文 → 禁用 JavaScript 复查 → 用 curl 获取原始响应 → 在 Yahoo 搜索独特正文 → 查服务器日志确认抓取工具拿到了什么。每一步只回答一个问题,避免把“可能原因”当成“已经定位的原因”。
下一步,挑一个正文依赖脚本加载的代表性页面,按上面的顺序做一次完整核对,记录原始响应中是否包含正文,再决定是否需要服务端渲染或预渲染。