没有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.mzph.cn/news/30238.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C语言函数详解(1)

目录 函数是什么 C语言中函数的分类 库函数 自定义函数 函数的参数 实际参数&#xff08;实参&#xff09; 形式参数&#xff08;形参&#xff09; 函数的调用 传值调用 传址调用 练习 函数的嵌套调用和链式访问 嵌套调用 链式访问 函数是什么 数学中我们常见到函…

揭秘浏览器键入URI到页面显示的过程: 浏览器键入URI,到页面显示,中间发生什么?

&#x1f337;&#x1f341; 博主猫头虎 带您 Go to New World.✨&#x1f341; &#x1f984; 博客首页——猫头虎的博客&#x1f390; &#x1f433;《面试题大全专栏》 文章图文并茂&#x1f995;生动形象&#x1f996;简单易学&#xff01;欢迎大家来踩踩~&#x1f33a; &a…

TypeScript学习笔记

1.ts和js的区别 2. ts的优势 3. ts下载后报错解决方法 报错: PS C:\Users\\Desktop> tsc -v tsc : 无法加载文件 C:\Users\32173\AppData\Roaming\npm\tsc.ps1&#xff0c;因为在此系统上禁止运行脚本。有关详细信息&#xff0c;请参阅 https:/ go.microsoft.com/fwlink/?…

【软件工程 | 模块耦合】什么是模块耦合及分类

概念 耦合(coupling)是对两个模块之间联接程度的一种度量。模块间的依赖程度越大&#xff0c;则其耦合程度也就越大&#xff1b; 反之&#xff0c;模块间的依赖程度越小&#xff0c;则其耦合程度也就越小。 很显然&#xff0c;为了使软件具有较好的可维护性和可修改性&#xf…

【LeetCode每日一题】——205.同构字符串

文章目录 一【题目类别】二【题目难度】三【题目编号】四【题目描述】五【题目示例】六【题目提示】七【解题思路】八【时间频度】九【代码实现】十【提交结果】 一【题目类别】 哈希表 二【题目难度】 简单 三【题目编号】 205.同构字符串 四【题目描述】 给定两个字符…

nginx组件location匹配的规则和优先级

注意&#xff1a; location匹配的规则和优先级——重点 nginx常用的变量——要求掌握 rewrite重定向功能——掌握&#xff0c;理解 location 匹配的规则和和优先级 location匹配 常见的nginx正则表达式&#xff08;匹配的文件内容&#xff09; “.” &#xff1a; 任意单…

资深媒体人宋繁银加入《数据猿》任总编辑,全面负责公司整体内容工作

大数据产业创新服务媒体 ——聚焦数据 改变商业 2023年7月北京&#xff0c;《数据猿》宣布正式任命宋繁银为总编辑&#xff0c;全面负责公司整体内容工作。此次重要的人事任命标志着《数据猿》的发展迈上了一个新的台阶&#xff0c;对于《数据猿》团队而言&#xff0c;不仅是一…

Nginx反向代理出现错误 502 bad gateway 案例解析

场景描述 Nginx uwsgi flask Flask框架写的程序&#xff0c;使用uwsgi启动&#xff0c;Nginx作为反向代理调用Flask应用。 Flask应用有些操作时间比较长&#xff0c;会超过1分钟&#xff0c;在网页端访问会出现错误: 502 bad gateway。 Nginx的错误日志中会出现错误&#xf…

Python中的*args, **kwargs

在Python中&#xff0c;*args 和 **kwargs 是两种传递变量数量的参数到一个函数的方法。它们分别用于处理位置参数和关键字参数。 *args: *args 允许在函数定义中传入一个非固定数量的位置参数。这些参数在函数内部作为一个元组 (tuple) 访问。可以使用任何名称而不仅仅是args&…

最强Python自动化神器Playwright

相信玩过爬虫的朋友都知道selenium&#xff0c;一个自动化测试的神器工具。写个Python自动化脚本解放双手基本上是常规的操作了&#xff0c;爬虫爬不了的&#xff0c;就用自动化测试凑一凑。 虽然selenium有完备的文档&#xff0c;但也需要一定的学习成本&#xff0c;对于一个纯…

redis的事务和watch机制

这里写目录标题 第一章、redis事务和watch机制1.1&#xff09;redis事务&#xff0c;事务的三大命令语法&#xff1a;开启事务 multi语法&#xff1a;执行事务 exec语法&#xff1a;取消事务 discard 1.2&#xff09;redis事务的错误和回滚的情况1.3&#xff09;watch机制语法&…

VS Code安装使用教程

目录 1. VS Code是什么&#xff1f; 2. VS Code的下载和安装 下载&#xff1a; 安装&#xff1a; 2.2 环境的介绍 3. VS Code配置C/C开发环境 3.1 下载和配置MinGW-w64编译器套件 下载&#xff1a; 配置&#xff1a; 3.2 安装C/C插件 3.3 重启VSCode 4. 在VSCode上编…

06-3_Qt 5.9 C++开发指南_多窗体应用程序的设计(主要的窗体类及其用途;窗体类重要特性设置;多窗口应用程序设计)

文章目录 1. 主要的窗体类及其用途2. 窗体类重要特性的设置2.1 setAttribute()函数2.2 setWindowFlags()函数2.3 setWindowState()函数2.4 setWindowModality()函数2.5 setWindowOpacity()函数 3. 多窗口应用程序设计3.1 主窗口设计3.2 QFormDoc类的设计3.3 QFormDoc类的使用3.…

linux自定义网络访问规则

1.更改防火墙默认区域为trusted firewall-cmd --set-default-zonetrusted 2.新建一个zone&#xff0c;将想要访问本机80端口的ip&#xff0c;如&#xff1a;192.168.3.99 &#xff0c;添加的这个zone中&#xff0c;同时在这个zone中放行80端口。 firewall-cmd --permanent --ne…

【Unity实战100例】用户头像圆形遮罩使用Shader不用Mask组件

目录 一.创建材质 二.创建Shader文件编写Shader代码 三.Image材质设置 源码:https://download.csdn.net/download/qq_37310110/88196529 前言:我们在使用Unity的自带组件Mask的时候会出现毛边现象很难处理掉,这里我们使用着色器shader来进行处理就不会出现毛边现象。

通过redis进行缓存分页,通过SCAN扫描进行缓存更新

问题&#xff1a;当我们要添加缓存时&#xff0c;如果我们用了PageHelper时&#xff0c;PageHelper只会对查询语句有效&#xff08;使用到sql的查询&#xff09;&#xff0c;那么如果我们把查询到的数据都添加到缓存时&#xff0c;就会无法进行分页&#xff1b; 此时我们选择将…

node配置Web 服务器

1、什么是 Web 服务器 Web服务器一般指网站服务器&#xff0c;是指驻留于因特网上某种类型计算机的程序&#xff0c;Web服务器的基本功能就是提供Web信息浏览服务。 它只需支持HTTP协议、HTML文档格式及URL&#xff0c;与客户端的网络浏览器配合。 大多数 web 服务器都支持服…

Javascript 正则

基本语法 定义 JavaScript种正则表达式有两种定义方式 构造函数 var regnew RegExp(<%[^%>]%>,g);字面量 var reg/<%[^%>]%>/g;g&#xff1a; global&#xff0c;全文搜索&#xff0c;默认搜索到第一个结果接停止i&#xff1a;ingore case&#xff0c;忽略…

接口自动化测试框架及接口测试自动化主要知识点

接口自动化测试框架&#xff1a; 接口测试框架&#xff1a;使用最流行的Requests进行接口测试接口请求构造&#xff1a;常见的GET/POST/PUT/HEAD等HTTP请求构造 接口测试断言&#xff1a;状态码、返回内容等断言JSON/XML请求&#xff1a;发送json\xml请求JSON/XML响应断言&…

绝了!工业配电柜看这篇就够了!

随着工业自动化的不断发展&#xff0c;电力作为生产的重要支撑&#xff0c;其稳定性、安全性和高效性变得尤为重要。 配电柜作为电力系统的核心组成部分&#xff0c;其监控不仅关乎生产的连续性&#xff0c;也涉及员工和设备的安全。通过实时监测、数据采集和分析&#xff0c;工…