2 个版本
0.1.1 | 2024 年 7 月 13 日 |
---|---|
0.1.0 | 2024 年 7 月 6 日 |
在 网页开发 中排名第 1041
每月下载 242 次
14KB
172 行代码(不包括注释)
Stream crawler
stream-scraper
是一个 Rust crate,它提供了一个异步网页爬虫工具。它处理 URL,提取内容和孩子 URL,并处理失败的请求的重试尝试。它使用 tokio
运行时进行异步操作,并使用 reqwest
库进行 HTTP 请求。
功能
- 使用
tokio
进行异步爬取 - 从 HTML 中的
<a>
标签中提取 URL - 重试失败请求,直到达到指定的尝试次数
- 使用信号量限制并发请求数量
安装
将以下内容添加到您的 Cargo.toml
[dependencies]
stream_crawler = "0.1.0"
tokio = { version = "1", features = ["full"] }
reqwest = { version = "0.11", features = ["json"] }
scraper = "0.12"
用法
use stream_crawler::scrape;
use tokio_stream::StreamExt;
#[tokio::main]
async fn main() {
let urls = vec![
String::from("https://www.google.com"),
String::from("https://www.twitter.com"),
];
let mut result_stream = scrape(urls, 3, 5, 10).await;
while let Some(data) = result_stream.next().await {
println!("Processed URL: {:?}", data);
}
}
功能
scrape
函数 :
- 接受一个 URL 向量、重试尝试限制和最大并发进程数。
- 返回一个
ProcessedUrl
结构的流。
ProcessedUrl
结构 :
- 包含原始 URL、父 URL(如果有)、页面 HTML 内容和从
<a>
标签中提取的孩子 URL 列表。
示例
此示例演示了如何使用 scrape
函数处理 URL 列表。
use stream_crawler::scrape;
use tokio_stream::StreamExt;
#[tokio::main]
async fn main() {
let urls = vec![
String::from("https://www.google.com"),
String::from("https://www.twitter.com"),
];
let mut result_stream = scrape(urls, 3, 5, 10).await;
while let Some(data) = result_stream.next().await {
println!("Processed URL: {:?}", data);
}
}
文档
请参考内联文档以获取详细用法和示例。
ProcessedUrl
#[derive(Debug, PartialEq)]
pub struct ProcessedUrl {
pub parent: Option<String>,
pub url: String,
pub content: String,
pub children: Vec<String>,
}
贡献
欢迎贡献!请打开一个问题或提交一个 pull 请求。
许可证
此项目采用 MIT 许可证。
此 README.md
为 crate 提供了概述,包括其功能、安装说明和用法示例。您可以根据特定需求进一步自定义它。
依赖项
~9–20MB
~298K SLoC