Skip to main content

scrape_to_markdown/
scrape_to_markdown.rs

1use anyhow::Result;
2use headless_engine::browser::tab::BrowserTab;
3use headless_engine::network::fingerprint::DeviceProfile;
4
5#[tokio::main]
6async fn main() -> Result<()> {
7    println!(">>> Launching Headless Engine Tab with Windows Chrome profile...");
8    let mut tab = BrowserTab::with_profile(DeviceProfile::ChromeWindows)?;
9
10    let url = "https://en.wikipedia.org/wiki/Rust_(programming_language)";
11    println!(">>> Navigating to: {}", url);
12    let report = tab.navigate(url).await?;
13
14    println!(">>> Page Title: {}", report.page_title);
15    println!(">>> Raw HTML Size: {} bytes", report.html_bytes);
16
17    let markdown = tab.extract_markdown(None).unwrap_or_default();
18    println!(
19        ">>> Markdown Size: {} bytes (~{:.1}% compression)",
20        markdown.len(),
21        (1.0 - (markdown.len() as f64 / report.html_bytes as f64)) * 100.0
22    );
23
24    println!("\n--- MARKDOWN PREVIEW (First 600 chars) ---\n");
25    let preview: String = markdown.chars().take(600).collect();
26    println!("{}", preview);
27    println!("\n-------------------------------------------");
28
29    Ok(())
30}