#![allow(dead_code, unused_must_use, unused_imports, non_snake_case)]
use http::{
header::{COOKIE, USER_AGENT},
HeaderMap, HeaderValue,
};
use reqwest;
use jsonpath;
use scraper::{Html, Selector};
use std::thread::{sleep, spawn};
use std::time::Duration;
extern crate futures;
use tokio::runtime::Runtime;
pub fn main2() {
let RUNTIME = Runtime::new().unwrap();
futures::executor::block_on(async move{
RUNTIME.spawn(async move {web_request().await})
.await.unwrap()
});
futures::executor::block_on(sleepus());
}
pub async fn web_request() -> Result<(), reqwest::Error> {
let url = "https://ssrl.scrape.center/";
let resp = reqwest::get(url).await?;
println!("Resp:{:?},{}", resp.version(), resp.status());
println!("Header: {:#?}\n", resp.headers());
parse_html(resp).await;
let url = "https://spa1.scrape.center/api/movie/?limit=10&offset=0";
let resp = reqwest::get(url).await?;
let json_body: serde_json::Value = resp.json().await?;
println!("Json:{:#?}", json_body);
let json_sel = jsonpath::Selector::new("$.results.*.name").unwrap();
for json_ele in json_sel.find(&json_body) {
println!("json title:{}", json_ele.as_str().unwrap());
}
let _resp = reqwest::Client::new()
.post(url)
.form(&[("name", "value")])
.send()
.await;
let _resp = reqwest::Client::new()
.post(url)
.header("Auth", "xxx")
.send()
.await;
let client = reqwest::Client::builder()
.cookie_store(true)
.build()
.unwrap();
let mut headers = HeaderMap::new();
headers.insert(COOKIE, HeaderValue::from_str("key=value").unwrap());
headers.insert(USER_AGENT, HeaderValue::from_str("my user-agent").unwrap());
let _reps = client.get(url).headers(headers).send().await?;
println!("{_reps:#?}");
Ok(())
}
async fn sleepus() {
for i in 1..=6 {
println!("Sleepus {}", i);
sleep(Duration::from_millis(500));
}
}
async fn parse_html(resp:reqwest::Response) {
let body = resp.text().await.unwrap();
let doc = Html::parse_fragment(&body);
let selector = Selector::parse(".m-b-sm").unwrap();
for elem in doc.select(&selector) {
println!("title: {}", elem.inner_html());
}
}