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

如何用Rust将内存中的HTML加载到Headless Chrome?

如何用headless_chrome加载内存中的HTML字符串?

我通过Handlebars生成了一段HTML文本,相关代码如下:

let mut handlebars = Handlebars::new();
let source = fs::read_to_string("receipt-template.html").unwrap();
handlebars.register_template_string("t1", source).unwrap();
let mut data = BTreeMap::new();
data.insert("name".to_string(), "世界!".to_string());

// 此变量包含需加载到Headless Chrome的<html>....</html>内容
let html = handlebars.render("t1", &data).unwrap();

但查看headless_chrome库的文档,目前只看到加载外部URL的示例:

let browser = Browser::default()?;
let tab = browser.new_tab()?;

/// 导航至维基百科
tab.navigate_to("https://www.wikipedia.org")?;

我想知道是否可以直接加载存储在变量/内存中的HTML字符串,就像Node.js里Puppeteer的setContent方法那样:

/// NODE.JS
const launchOptions = { executablePath }
const browser = await puppeteer.launch(launchOptions)
const page = await browser.newPage()
await page.setContent(html) // 直接将浏览器内容设为html变量,无需文件

可以的,headless_chrome的Tab结构体提供了set_content方法,能够直接将内存中的HTML字符串加载到页面中,无需先写入文件或部署到服务器。

完整的示例代码如下:

use handlebars::Handlebars;
use std::collections::BTreeMap;
use std::fs;
use headless_chrome::{Browser, LaunchOptions};

fn main() -> Result<(), Box<dyn std::error::Error>> {
    // 1. 用Handlebars生成HTML
    let mut handlebars = Handlebars::new();
    let source = fs::read_to_string("receipt-template.html").unwrap();
    handlebars.register_template_string("t1", source).unwrap();
    let mut data = BTreeMap::new();
    data.insert("name".to_string(), "世界!".to_string());
    let html = handlebars.render("t1", &data).unwrap();

    // 2. 启动Headless Chrome并加载HTML
    let browser = Browser::default()?;
    let tab = browser.new_tab()?;
    
    // 直接加载内存中的HTML字符串
    tab.set_content(&html)?;

    // 后续可执行截图、JS操作等
    tab.capture_screenshot(headless_chrome::protocol::cdp::Page::CaptureScreenshotFormatOption::Png, None, None, true)?;

    Ok(())
}

默认情况下set_content会等待页面所有资源加载完成,若需调整等待策略,可传入额外参数控制加载行为。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 23:43:13