|
|
@@ -0,0 +1,85 @@
|
|
|
+use reqwest;
|
|
|
+
|
|
|
+use select::document::Document;
|
|
|
+use select::predicate::Name;
|
|
|
+
|
|
|
+fn main() {
|
|
|
+ // let url = "http://www.egun.de/market/list_items.php?mode=qry&query=g36&plusdescr=off&plusdescr=on&wheremode=and&ewb=1&status=&minprice=&maxprice=&type=0&nick=&country_id=&zip=&int=0&order=ends&asdes=asc";
|
|
|
+ let url = "http://www.egun.de/market/list_items.php?mode=qry&plusdescr=off&wheremode=and&query=sniper&quick=1";
|
|
|
+ parse_url(url);
|
|
|
+}
|
|
|
+
|
|
|
+// fn parse_item
|
|
|
+
|
|
|
+fn parse_price(price: &str) -> Option<f64> {
|
|
|
+ price.to_string()
|
|
|
+ .replace(".", "")
|
|
|
+ .replace(",", ".")
|
|
|
+ .replace(" EUR", "")
|
|
|
+ .parse().ok()
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+fn parse_url(url: &str) {
|
|
|
+ let mut resp = reqwest::get(url).unwrap();
|
|
|
+ assert!(resp.status().is_success());
|
|
|
+ // dbg!(&resp.text());
|
|
|
+
|
|
|
+ let text = resp.text().unwrap();
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ for node in Document::from_read(text.as_bytes())
|
|
|
+ .unwrap()
|
|
|
+ .find(Name("a"))
|
|
|
+ .filter(|n| n.attr("href").is_some())
|
|
|
+ .filter(|n| n.attr("href").unwrap().contains("item.php?id="))
|
|
|
+ // .for_each(|x| println!("{}", x));
|
|
|
+ {
|
|
|
+ // dbg!(&node);
|
|
|
+ if let Some(parent_td) = &node.parent() {
|
|
|
+ if let Some(parent_tr) = &parent_td.parent() {
|
|
|
+ let price = parent_tr
|
|
|
+ .children()
|
|
|
+ .filter(|x| x.text().contains("EUR"))
|
|
|
+ .map(|x| parse_price(&x.text()))
|
|
|
+ .filter(|x| x.is_some())
|
|
|
+ .map(|x| x.unwrap())
|
|
|
+ .collect::<Vec<_>>();
|
|
|
+
|
|
|
+ if let Some(t_remaining) = parent_tr
|
|
|
+ .children()
|
|
|
+ .filter(|x| x.attr("align") == Some("center"))
|
|
|
+ .filter(|x| x.attr("nowrap").is_some())
|
|
|
+ .collect::<Vec<_>>().clone().get(0) {
|
|
|
+ // dbg!(&t_remaining.children());
|
|
|
+ }
|
|
|
+
|
|
|
+ let _a = parent_tr
|
|
|
+ .children()
|
|
|
+ .filter(|x| x.attr("align") == Some("center"))
|
|
|
+ .filter(|x| x.attr("nowrap").is_some())
|
|
|
+ .flat_map(|x| x.children())
|
|
|
+ // .map(|x| x.text())
|
|
|
+ // .filter(|x| !x.is_empty())
|
|
|
+ .collect::<Vec<_>>()
|
|
|
+ // .join(" ")
|
|
|
+ ;
|
|
|
+ dbg!(_a);
|
|
|
+
|
|
|
+ // let _r = t_remaining.get(0);
|
|
|
+
|
|
|
+ // let t_remaining = parent_tr
|
|
|
+ // .children()
|
|
|
+ // .filter(|x| x.attr("align") == Some("center"))
|
|
|
+ // .filter(|x| x.attr("nowrap").is_some())
|
|
|
+ // .collect::<Vec<_>>();
|
|
|
+
|
|
|
+ // dbg!(t_remaining);
|
|
|
+ // dbg!(price);
|
|
|
+
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|