You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何Splash返回的HTML与浏览器检查网站时得到的HTML不一致?

问题原因
  • 固定等待时长不足:你当前仅设置了1秒的等待时间,该站点基于React构建,目标虚拟表格ReactVirtualized__Table__row需要等待接口数据返回、前端JS逻辑执行完成后才会动态渲染,1秒通常不足以完成整个渲染流程。
  • 虚拟列表触发条件不满足:ReactVirtualized是虚拟滚动组件,仅会渲染当前视口范围内的行元素,Splash默认视口尺寸较小,可能表格区域未进入可视范围,组件不会生成对应的行元素。
  • 动态资源未加载完成:互联网档案馆的存档站点静态资源加载速度偏慢,默认配置下Splash可能未等所有JS资源执行完毕就返回了HTML。
修复方案

最简单的调整方案是延长等待时间、设置合理视口,修改后的Lua脚本如下:

function main(splash, args)
    -- 设置足够大的视口,确保表格区域落在可视范围内
    splash:set_viewport_size(1920, 1080)
    url = args.url
    assert(splash:go(url))
    -- 延长等待时间到5秒,可根据实际网络情况上下调整
    assert(splash:wait(5))
    return splash:html()
end

如果上述调整后还是无法获取到目标元素,可以增加滚动触发和元素等待逻辑,稳定性更高:

function main(splash, args)
    splash:set_viewport_size(1920, 1080)
    url = args.url
    assert(splash:go(url))
    -- 最多等待10秒,直到目标行元素出现
    splash:wait_for_resume([[
        function check() {
            document.querySelector('.ReactVirtualized__Table__Grid')?.scrollIntoView()
            if (document.querySelector('.ReactVirtualized__Table__row')) {
                window.splashRes(true)
            } else {
                setTimeout(check, 300)
            }
        }
        check()
    ]], 10)
    return splash:html()
end

内容的提问来源于stack exchange,提问作者cach dies

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 13:48:02