先看一下main.rs源碼
use std::fs;
fn main() -> Result<(), Box<dyn std::error::Error>> {
let args = std::env::args();
let mut url = "".to_string();
for arg in args {
url = arg;
}
let output = "rust.md";
println!("抓取網頁: {}", url);
let body = reqwest::blocking::get(url)?.text()?;
println!("從html轉成markdown...");
let md = html2md::parse_html(&body);
fs::write(output, md.as_bytes()).unwrap();
println!("轉完的文档已存進 {}.", output);
Ok(())
}上述代碼改了點東西, 注意是從std::env::args()方法中拿到命令行輸入, 所以如果不輸入網址會通過Result<T, E>類型返回錯誤。
通過cargo生成Cargo.toml之後補充一下依賴表
[package]
name = "scrape_url"
version = "0.1.0"
edition = "2021"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[dependencies]
reqwest = { version = "0.11", features = ["blocking"] }
html2md = "0.2"如果不能通過編譯, 檢查一下你的網路環境...