1 个不稳定版本
0.1.16 | 2022 年 8 月 25 日 |
---|---|
0.1.15 |
|
#10 在 #crawl
21KB
447 行(不含注释)
gar-crawl
具有简洁构建器的高级 HTML 捕获器。
本库的目标是使用最少的模板代码完成爬取和抓取任务。提供了默认的传播器,或者你可以创建自己的传播器,并且你可以在构建爬取器之前修改使用的 Reqwest 客户端。
示例
使用默认选项的基本用法(爬取深度:2,工作线程:40,重访:否)
Crawler::builder()
.add_default_propagators() // crawl to href and src links
.add_handler("*[href]", |args| { // add handler
if let Some(href) = args.element.unwrap().value().attr("href") {
println!("{href}");
}
})
.build()? // construct crawler
.crawl("https://example.org") // begin crawl
.await?;
使用更多功能的示例
Crawler::builder()
.add_default_propagators() // crawl to href and src links
.revisit(true) // default false
.whitelist("https://example.org") // stay on this site
.user_agent("Mozilla/5.0 (X11; Linux x86_64)...") // set user agent
.proxy("127.0.0.1:8080", "/path/to/cacert.der")? // set up https proxy
.add_handler("*[href]", |args| { // add handler
if let Some(href) = args.element.unwrap().value().attr("href") {
println!("{href}");
}
})
.on_page(|args| {
// do stuff with page
})
.depth(3) // default 2
.workers(100) // default 40
.timeout(5, 0) // timeout requests after 5 seconds
.build()? // construct crawler
.crawl("https://example.org") // begin crawl
.await?;
查看 examples/
或 gar-crawl-cli/
以获取更多示例
依赖项
~9–24MB
~342K SLoC