8个版本 (4个破坏性更新)
0.5.0 | 2020年9月2日 |
---|---|
0.4.1 | 2020年7月21日 |
0.3.1 | 2020年7月2日 |
0.2.2 | 2020年6月30日 |
0.1.0 | 2020年6月28日 |
#7 in #crawl
12KB
269 行
search_with_google
一个简单的库,可以抓取Google搜索结果页面
用法
注意
如果你是从V 0.2.x版本来的,将 use search_with_google::search;
替换为 use search_with_google::blocking::search;
将以下内容添加到 Cargo.toml
[dependencies]
search_with_google = "0.5"
用于常规 blocking
use search_with_google::blocking::search;
let results = search("rust", 3, None);
if let Ok(result_list) = results {
println!("Title : {}\nLink : {}", result_list[0].title, result_list[0].link);
}
用于 async
use search_with_google::search;
let results = search("rust", 3, None).await;
if let Ok(result_list) = results {
println!("Title : {}\nLink : {}", result_list[0].title, result_list[0].link);
}
如果你打算重复搜索,可以创建一个Client。
用于常规 blocking
use search_with_google::blocking::Client;
let client = Client::default();
let results = client.search("rust", 3, None);
if let Ok(result_list) = results {
println!("Title : {}\nLink : {}", result_list[0].title, result_list[0].link);
}
用于 async
use search_with_google::Client;
let client = Client::default();
let results = client.search("rust", 3, None).await;
if let Ok(result_list) = results {
println!("Title : {}\nLink : {}", result_list[0].title, result_list[0].link);
}
这里第二个和第三个参数是
- limit:
u32
-> 获取的最大搜索结果数量(默认:10) - agent:
String
-> 要使用的用户代理(默认: "Mozilla/5.0 (X11; Linux x86_64; rv:77.0) Gecko/20100101 Firefox/77.0".to_string())
你可以传递 None
任何一个以使用默认值
SearchResult
是一个具有 title
、link
、description
和 description_raw
的 struct
。 title
是搜索结果标题,link
是搜索结果的主要URL,description
是在Google搜索结果屏幕上显示的小描述,description_raw
是相同的描述,但它包含HTML标签,如 <em>
、<span>
、 
等,这些标签不包括在主要描述中
pub struct SearchResult {
pub link: String,
pub title: String,
pub description: String,
pub description_raw: String,
}
变更日志
0.1.0 -> 0.2.2
option
现在是limit
- 你现在可以指定用户代理
- 你现在可以直接传递可选参数,如 limit: u32、agent: String,而不是 Some(limit) 等。
- SearchError 现在是 Error
0.2.2 -> 0.3.1
- 有
async
选项可用,使用use search_with_google::search;
blocking
选项可用,与use search_with_google::blocking::search;
- 正确实现了
std::error::Error
0.3.1 -> 0.4.1
Client
用于重复搜索,Client::default()
和blocking::Client::default()
- 结果中的
description_raw
字段
0.4.1 -> 0.5.0
Error
现在是一个枚举,包含IoError
和ReqwestError
变体
致谢
依赖关系
~9–19MB
~279K SLoC