Rust爬取网页上的所有链接

要在Rust中爬取网页上的所有链接,可以使用一些Rust的库,例如reqwestscraper

添加依赖

要在rust中使用reqwestscraper,需先在Cargo.toml文件中添加依赖:

[dependencies]
reqwest = { version = "0.11", features = ["blocking","json"] }
scraper = { version = "0.14" }

代码实现

首先,使用reqwest库来获取网页的HTML内容,然后使用scraper库来解析HTML并获取所有链接;

use reqwest::blocking::Client;
use scraper::{Html, Selector};

fn main() {

let client = Client::new();
let response = client.get("https://www.baidu.com").send().unwrap();
let html = response.text().unwrap();
    let document = Html::parse_document(&html);
    let selector = Selector::parse("a").unwrap();

    for element in document.select(&selector) {
        if let Some(link) = element.value().attr("href") {
            println!("{}", link);
        }
    }
}

这个示例中,我们首先使用Html::parse_document函数将HTML文本解析为一个scraper::Html类型的文档。然后,我们使用Selector::parse函数创建一个选择器来选择所有<a>元素。最后,我们使用for循环遍历所有匹配的元素,并使用element.value().attr("href")方法获取链接。

原创内容,如需转载,请注明出处;

本文地址: https://www.perfcode.com/p/scrape-all-links-on-a-webpage-using-rust.html

分类: 计算机技术
推荐阅读:
编程中foo、bar、baz的含义 在编程中,foo、bar和baz通常被用作示例变量名。它们是一种惯用的命名习惯,通常被用于示例代码或临时代码片段中,表示没有特定含义的变量名或函数名。
Windows10禁用系统更新 Windows10禁用系统自动更新方法如下:
Python实现插入排序(insertion sort) 插入排序(insertion sort)是一种比较简单的排序算法;其原理类似于对一手扑克牌进行排序;
Golang生成一个整数范围内的随机整数 在Golang中,可以通过math/rand包的Intn(n)函数生成一个0~n之间的随机整数,碰到100~200、-10~10这样的整数段却无能为力了;
Rust serde详细教程 当你需要在 Rust 代码中序列化和反序列化数据时,serde 库是一个强大而灵活的工具;它支持多种数据格式,并且可以轻松地将 Rust 数据结构转换为这些格式的文本或二进制表示。
Socket error Event: 32 Error: 10053.解决方法 在使用Xshell连接服务器时,偶尔会发生这类错误:Socket error Event: 32 Error: 10053.Connection closing...Socket close.