对动态页面来说,确认“可见内容”不能只看浏览器里看到了什么,而要看搜索引擎蜘蛛在抓取时实际拿到了什么。核心判断方法是:用抓取工具请求该动态 URL,查看返回的 HTML 源码,确认目标文字是否出现在源码中,而不是由 JavaScript 在浏览器端临时生成。如果源码里没有内容,蜘蛛即使抓取了页面,也可能看不到这些文字。
动态页面常见三种内容呈现方式,确认难度依次上升:
判断属于哪一种,不需要猜,直接查看源码即可。
可执行步骤如下:
curl -A "Mozilla/5.0" "https://example.com/page" -o page.html 请求目标动态 URL,把返回内容保存为文件。page.html,搜索页面上的关键文字,比如标题、正文首句、商品名。这个方法的适用条件是:页面无需登录即可访问。如果页面需要登录或带验证,抓取工具拿到的内容不能代表普通蜘蛛所见,需要另设可公开访问的测试路径。
蜘蛛抓取频率指搜索引擎在一段时间内对站点或某个 URL 发起抓取的次数。频率高低影响内容被重新读取的快慢,但不改变“源码里有没有内容”这个事实。即使抓取频率很高,如果每次抓到的都是空壳 HTML,可见内容依然无法确认。
因此,当动态页面内容更新后长期未被识别,应先排查可见内容,再考虑抓取频率。判断顺序是:
把顺序颠倒,容易把渲染问题误判为抓取频率不足,从而做无效调整。
按以下检查项逐条确认,可以得到明确结论:
curl -I 返回 200 表示页面可访问;返回 3xx、4xx、5xx 需先解决访问问题,再谈内容可见性。若确认内容依赖 JavaScript 渲染,可选的处理方向包括:改为服务端渲染、预渲染静态 HTML、或确保关键内容在无脚本时仍有基础版本。选择时比较代价:服务端渲染改动最大但最稳定;预渲染适合内容更新不频繁的页面;保留脚本渲染则需接受不同搜索引擎支持情况不一致的风险,应分别核查目标引擎的实际表现。
假设一个动态商品页,源码中只有 <div id="app"></div>,商品名和价格由脚本写入。用抓取工具请求后搜不到商品名,即可判断该内容对蜘蛛不可见。这不是假设的抓取频率问题,而是渲染方式问题。
挑一个你关心的动态页面,用 curl 保存源码并搜索页面上的核心文字。根据搜索结果决定是先调整渲染方式,还是先检查抓取与索引状态。这个动作能在几分钟内给出明确起点。