Johann Woelper vor 7 Jahren
Commit
3c5bf0b395
4 geänderte Dateien mit 1791 neuen und 0 gelöschten Zeilen
  1. 3 0
      .gitignore
  2. 1694 0
      Cargo.lock
  3. 9 0
      Cargo.toml
  4. 85 0
      src/main.rs

+ 3 - 0
.gitignore

@@ -0,0 +1,3 @@
+/target
+**/*.rs.bk
+.history

Datei-Diff unterdrückt, da er zu groß ist
+ 1694 - 0
Cargo.lock


+ 9 - 0
Cargo.toml

@@ -0,0 +1,9 @@
+[package]
+name = "guntrader"
+version = "0.1.0"
+authors = ["Johann Woelper <woelper@gmail.com>"]
+edition = "2018"
+
+[dependencies]
+reqwest = "*"
+select = "*"

+ 85 - 0
src/main.rs

@@ -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);
+
+                }
+            }
+        }
+}