在 Rust 中,你可以使用各种库来解析网页内容。一个常用的库是 reqwest ,它提供了一个简单的方式来发送 HTTP 请求并获取网页内容。另外,你可以使用 scraper 或 select 等库来解析 HTML 或 XML 格式的网页内容。 下面是一个使用 reqwest 和 scraper 库解析网页内容的示例: 首先,将以下内容添加到你的 Cargo.toml 文件中:

[dependencies]

reqwest = "0.11"

scraper = "0.12"

然后,创建一个 Rust 文件,并添加以下代码:

use reqwest::blocking::get;

use scraper::{Html, Selector};

fn main() {

// 发送 HTTP GET 请求获取网页内容

let response = get("https://example.com").expect("Failed to send request");

let body = response.text().expect("Failed to get response body");

// 使用 scraper 解析 HTML

let document = Html::parse_document(&body);

let selector = Selector::parse("h1").expect("Failed to parse selector");

// 提取特定元素的内容

let h1_text = document.select(&selector).next().map(|element| element.text().collect::());

// 打印提取的内容

if let Some(text) = h1_text {

println!("H1 Text: {}", text);

} else {

println!("No H1 element found");

}

}

在这个示例中,我们使用 reqwest 库发送 HTTP GET 请求并获取网页内容。然后,我们使用 scraper 库解析 HTML 内容。在这个示例中,我们使用 Selector 来选择

元素,并提取其文本内容。 下面我们再看下 Selector 的其他用法,下面是三个使用 scraper 库的 Selector 类的示例,分别用于解析出

标签、解析出指定 class 的元素以及解析出指定 id 的元素。

解析出

标签:

use scraper::{Html, Selector};

fn main() {

let html = r#"

Paragraph 1

Paragraph 2

"#;

let document = Html::parse_document(html);

let selector = Selector::parse("p").unwrap();

for element in document.select(&selector) {

let text = element.text().collect::();

println!("Text: {}", text);

}

}

解析出指定 class 的元素:

use scraper::{Html, Selector};

fn main() {

let html = r#"

Paragraph 1

Paragraph 2

"#;

let document = Html::parse_document(html);

let selector = Selector::parse("p.highlight").unwrap();

for element in document.select(&selector) {

let text = element.text().collect::();

println!("Text: {}", text);

}

}

解析出指定 id 的元素:

use scraper::{Html, Selector};

fn main() {

let html = r#"

Paragraph 1

Paragraph 2

"#;

let document = Html::parse_document(html);

let selector = Selector::parse("#my-paragraph").unwrap();

for element in document.select(&selector) {

let text = element.text().collect::();

println!("Text: {}", text);

}

}

文章链接

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: