HTML parsing and querying with CSS selectors.
scraper
is on Crates.io and GitHub.
Scraper provides an interface to Servo's html5ever
and selectors
crates, for browser-grade
parsing and querying.
``` use htmler::Html;
let html = r#"
let document = Html::parse_document(html); ```
use scraper::Html;
let fragment = Html::parse_fragment("<h1>Hello, <i>world!</i></h1>");
use htmler::Selector;
let selector = Selector::new("h1.foo");
``` use htmler::{Html, Selector};
let html = r#"
let fragment = Html::parse_fragment(html); let selector = Selector::new("li");
for element in fragment.select(&selector) { assert_eq!("li", element.value().name()); } ```
``` use htmler::{Html, Selector};
let html = r#"
let fragment = Html::parsefragment(html); let ulselector = Selector::new("ul"); let li_selector = Selector::new("li");
let ul = fragment.select(&ulselector).next().unwrap(); for element in ul.select(&liselector) { assert_eq!("li", element.value().name()); } ```
``` use htmler::{Html, Selector};
let fragment = Html::parse_fragment(r#""#); let selector = Selector::new(r#"input[name="foo"]"#);
let input = fragment.select(&selector).next().unwrap(); assert_eq!(Some("bar"), input.value().attr("value")); ```
``` use htmler::{Html, Selector};
let fragment = Html::parse_fragment("
let h1 = fragment.select(&selector).next().unwrap();
asserteq!("Hello, world!
", h1.html());
asserteq!("Hello, world!", h1.inner_html());
```
``` use htmler::{Html, Selector};
let fragment = Html::parse_fragment("
let h1 = fragment.select(&selector).next().unwrap();
let text = h1.text().collect::
assert_eq!(vec!["Hello, ", "world!"], text); ```