一起用代码吸猫!本文正在参与【喵星人征文活动】。
使用Rust
获取可爱的猫咪表情包。
所需依赖
本文使用到的依赖有hyper
、hyper-tls
、scraper
和tokio
hyper
:HTTP
底层实现库hyper-tls
:HTTPS
实现库scraper
: 解析html
库tokio
: Rust编程语言的异步运行时,提供异步事件驱动平台,构建快速,可靠和轻量级网络应用
如果目标网站不是
HTTPS
类型的话,可以不用hyper-tls
依赖。创建client的时候使用Client::new()
即可
步骤
- 创建项目
在命令窗口中运行cargo new 项目名
命令创建一个rust
项目 - 加入依赖
在Cargo.toml
文件中加入上面所说的依赖。Cargo.toml如下:
1 | toml复制代码[package] |
- 分析目标网站
打开表情包网站搜索猫咪,按F12分析页面结构。使用定位按钮随便定位一张表情包元素,左键在出现的选项中负责该元素的选择器
将复制的选择器粘贴在文本中,如下:#post_container > li:nth-child(2) > div.thumbnail > a > img
结合页面元素分析可知,使用选择器div.thumbnail > a > img
可以获得所有的表情包元素
- 构造并发起
http/https
请求, 获取页面数据
1 | rs复制代码// 构建请求客户端 |
- 使用
scraper
解析响应数据
1 | rs复制代码// 获取响应数据 |
- 使用
CSS选择器
找出需要的元素
1 | rs复制代码let selector = Selector::parse("div.thumbnail > a > img").unwrap(); |
- 获取元素的
src
和alt
属性
src
:表情包的网络地址alt
:用于给表情包重命名
1 | rs复制代码// 获取img标签的src属性 |
- 创建存储目录及构建表情包的名称
1 | rs复制代码/** |
- 获取表情包并保存到本地
请求上面src
属性获取的地址,并使用fs::write
方法将表情包保存到本地
1 | rs复制代码 // 请求表情包的网络地址,获取表情包文件 |
完整代码
1 | rs复制代码use hyper::body; |
运行效果
本文转载自: 掘金