extern crate reqwest; extern crate select; use select::document::Document; use select::predicate::Name; fn main() { scrape_feats("http://www.archivesofnethys.com/Feats.aspx?Category=Combat"); } fn scrape_feats(url: &str) { let resp = reqwest::get(url).unwrap(); assert!(resp.status().is_success()); let doc = Document::from_read(resp).unwrap(); let mut header = true; for node in doc.find(Name("tr")) { // skip the first one if header { header = false; } else { let mut tds = node.find(Name("td")); let name_raw = tds.next().unwrap().text(); let prereqs_raw = tds.next().unwrap().text(); let benefit_raw = tds.next().unwrap().text(); // extra variables because '....unwrap().text().trim()' complains // about lifetime of borrowd value let name = name_raw.trim(); let prereqs = prereqs_raw.trim(); let benefit = benefit_raw.trim(); println!("|{}|{}|{}|", name, prereqs, benefit); } } }