当前位置: 首页 > news >正文

没有jsoup,rust怎么解析html呢?

在 Rust 中,你可以使用各种库来解析网页内容。一个常用的库是 reqwest ,它提供了一个简单的方式来发送 HTTP 请求并获取网页内容。另外,你可以使用 scraperselect 等库来解析 HTML 或 XML 格式的网页内容。
下面是一个使用 reqwestscraper 库解析网页内容的示例:
首先,将以下内容添加到你的 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 解析 HTMLlet 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::<String>());// 打印提取的内容if let Some(text) = h1_text {println!("H1 Text: {}", text);} else {println!("No H1 element found");}
}

在这个示例中,我们使用 reqwest 库发送 HTTP GET 请求并获取网页内容。然后,我们使用 scraper 库解析 HTML 内容。在这个示例中,我们使用 Selector 来选择 <h1> 元素,并提取其文本内容。
下面我们再看下 Selector 的其他用法,下面是三个使用 scraper 库的 Selector 类的示例,分别用于解析出 <p> 标签、解析出指定 class 的元素以及解析出指定 id 的元素。

  1. 解析出 <p> 标签:
use scraper::{Html, Selector};fn main() {let html = r#"<html><body><div><p>Paragraph 1</p><p>Paragraph 2</p></div></body></html>"#;let document = Html::parse_document(html);let selector = Selector::parse("p").unwrap();for element in document.select(&selector) {let text = element.text().collect::<String>();println!("Text: {}", text);}
}
  1. 解析出指定 class 的元素:
use scraper::{Html, Selector};fn main() {let html = r#"<html><body><div><p class="highlight">Paragraph 1</p><p>Paragraph 2</p></div></body></html>"#;let document = Html::parse_document(html);let selector = Selector::parse("p.highlight").unwrap();for element in document.select(&selector) {let text = element.text().collect::<String>();println!("Text: {}", text);}
}
  1. 解析出指定 id 的元素:
use scraper::{Html, Selector};fn main() {let html = r#"<html><body><div><p id="my-paragraph">Paragraph 1</p><p>Paragraph 2</p></div></body></html>"#;let document = Html::parse_document(html);let selector = Selector::parse("#my-paragraph").unwrap();for element in document.select(&selector) {let text = element.text().collect::<String>();println!("Text: {}", text);}
}
http://www.lryc.cn/news/114991.html

相关文章:

  • 【C高级】Day4 shell脚本 排序
  • 大模型开发(十六):从0到1构建一个高度自动化的AI项目开发流程(中)
  • 【深入了解pytorch】PyTorch强化学习:强化学习的基本概念、马尔可夫决策过程(MDP)和常见的强化学习算法
  • 尚硅谷张天禹Vue2+Vue3笔记(待续)
  • 深度学习(35)—— StarGAN(2)
  • 连续四年入选!三项荣耀!博云科技强势上榜Gartner ICT技术成熟度曲线
  • Docker实战-操作Docker容器实战(一)
  • c#设计模式-行为型模式 之 观察者模式
  • 开窗积累之学习更新版
  • ffplay简介
  • mysql之limit语句详解
  • 4.while循环
  • 【雕爷学编程】 MicroPython动手做(35)——体验小游戏2
  • mouseover 和 mouseenter
  • [JavaScript游戏开发] 绘制Q版地图、键盘上下左右地图场景切换
  • CI/CD持续集成持续发布(jenkins)
  • Qt5.14.2+QtCreator+PDB 查看源码
  • DOM基础获取元素+事件基础+操作元素
  • MATLAB——感知神经网络学习程序
  • SpringBoot中事务失效的原因
  • Webstorm的一些常用快捷键
  • 系统集成项目成本管理
  • Spring Boot整合ES的两种方式
  • Ajax_3 Ajax原理+ (XMLHttpRequest + Promise )+ 封装一个axios插件库,实现功能。
  • 计算机网络(7) --- UDP协议和TCP协议
  • Jenkins 修改默认管理员帐号
  • FK-坦克大战制作(一)菜单制作
  • 39.利用matlab寻找素数(matlab程序)
  • 卡尔曼滤波算法demo
  • MySQL游标(二十九)