rust写个简单爬虫
新人,随便发个贴看看目前还是半成品,还没用到多线程
包
scraper = "0.12.0"
reqwest = { version = "0.11.10", features = ["blocking", "json"] }
surf = "2.3.2"
tokio = { version = "1.17.0", features = ["full"] }
futures = "0.3.21"
主要逻辑
use futures::future::join_all;
use std::env;
use scraper::{Html, Selector};
async fn fetch_path(path:String) -> surf::Result<String>{
let mut back_string = String::new();
match surf::get(&path).await {
Ok(mut response) => {
match response.body_string().await{
Ok(text) =>{
back_string = format!("{}",text)
}
Err(_) => {
println!("Read response text Error!")
}
};
}
Err(_) => {
println!("reqwest get Error!")
}
}
Ok(back_string)
}
#
async fn main() -> surf::Result<()>{
let stdin = env::args().nth(1).take().unwrap();
let paths = vec!;
let result_list = join_all(paths.into_iter().map(|path|{
fetch_path(path)
})).await;
let mut list_string:Vec<String> = vec![];
for ele in result_list.into_iter(){
if ele.is_ok(){
list_string.push(ele.unwrap())
}else {
return Err(ele.unwrap_err())
}
}
let v = list_string.get(0).take().unwrap();
//println!("{}",v);
let fragment = Html::parse_fragment(v);
let ul_selector = Selector::parse("script").unwrap();
for element in fragment.select(&ul_selector) {
println!("{}",element.inner_html());
}
// println!("请求输出:{:?}",list_string);
Ok(())
}
运行
cargo run -- https://www.baidu.com/ huanglaoshi 发表于 2022-5-5 18:08
楼主我有一个软件 RUST 语言编写的想更换logo 包含打开软件之后的LOGO名称,全替换,请大神帮忙愿意 ...
软件发个看看 huanglaoshi 发表于 2022-5-6 11:34
链接:https://pan.baidu.com/s/1K4-TZ8wScf8WH2KqgIjWOA
提取码:8888
感谢楼主热心帮忙
只能改外面的图片,里面改不了,你有源码可以重新编译一下 向新人学习,比我强多了。惭愧 我感觉还是Warp更好用(可能是因为我用惯了){:1_918:} yuechaomax 发表于 2022-3-16 16:54
向新人学习,比我强多了。惭愧
还好,我也才学几个星期 感谢分享,学习 3M多,有点大了,编译了很久,运行速度嗖嗖。。 楼主我有一个软件 RUST 语言编写的想更换logo 包含打开软件之后的LOGO名称,全替换,请大神帮忙愿意奉上所有CB fz12 发表于 2022-5-5 18:38
软件发个看看
链接:https://pan.baidu.com/s/1K4-TZ8wScf8WH2KqgIjWOA
提取码:8888
感谢楼主热心帮忙 LOOK LOOK
页:
[1]
2