pub struct Html {
pub errors: Vec<Cow<'static, str>>,
pub quirks_mode: QuirksMode,
pub tree: Tree<Node>,
}
Expand description
An HTML tree.
Parsing does not fail hard. Instead, the quirks_mode
is set and errors are added to the
errors
field. The tree
will still be populated as best as possible.
Implements the TreeSink
trait from the html5ever
crate, which allows HTML to be parsed.
Fields§
§errors: Vec<Cow<'static, str>>
Parse errors.
quirks_mode: QuirksMode
The quirks mode.
tree: Tree<Node>
The node tree.
Implementations§
Source§impl Html
impl Html
Sourcepub fn new_document() -> Self
pub fn new_document() -> Self
Creates an empty HTML document.
Sourcepub fn new_fragment() -> Self
pub fn new_fragment() -> Self
Creates an empty HTML fragment.
Sourcepub fn parse_document(document: &str) -> Self
pub fn parse_document(document: &str) -> Self
Parses a string of HTML as a document.
This is a convenience method for the following:
use html5ever::driver::{self, ParseOpts};
use scraper::{Html, HtmlTreeSink};
use tendril::TendrilSink;
let parser = driver::parse_document(HtmlTreeSink::new(Html::new_document()), ParseOpts::default());
let html = parser.one(document);
Examples found in repository?
examples/document.rs (line 21)
7fn main() {
8 let mut input = String::new();
9 let mut stdout = io::stdout();
10 let mut stdin = io::stdin();
11
12 write!(stdout, "CSS selector: ").unwrap();
13 stdout.flush().unwrap();
14 stdin.read_line(&mut input).unwrap();
15 let selector = Selector::parse(&input).unwrap();
16
17 writeln!(stdout, "HTML document:").unwrap();
18 stdout.flush().unwrap();
19 input.clear();
20 stdin.read_to_string(&mut input).unwrap();
21 let document = Html::parse_document(&input);
22
23 println!("{:#?}", document);
24
25 for node in document.select(&selector) {
26 println!("{:?}", node.value());
27 }
28}
Sourcepub fn parse_fragment(fragment: &str) -> Self
pub fn parse_fragment(fragment: &str) -> Self
Parses a string of HTML as a fragment.
Examples found in repository?
examples/fragment.rs (line 21)
7fn main() {
8 let mut input = String::new();
9 let mut stdout = io::stdout();
10 let mut stdin = io::stdin();
11
12 write!(stdout, "CSS selector: ").unwrap();
13 stdout.flush().unwrap();
14 stdin.read_line(&mut input).unwrap();
15 let selector = Selector::parse(&input).unwrap();
16
17 writeln!(stdout, "HTML fragment:").unwrap();
18 stdout.flush().unwrap();
19 input.clear();
20 stdin.read_to_string(&mut input).unwrap();
21 let fragment = Html::parse_fragment(&input);
22
23 println!("{:#?}", fragment);
24
25 for node in fragment.select(&selector) {
26 println!("{:?}", node.value());
27 }
28}
Sourcepub fn select<'a, 'b>(&'a self, selector: &'b Selector) -> Select<'a, 'b> ⓘ
pub fn select<'a, 'b>(&'a self, selector: &'b Selector) -> Select<'a, 'b> ⓘ
Returns an iterator over elements matching a selector.
Examples found in repository?
examples/document.rs (line 25)
7fn main() {
8 let mut input = String::new();
9 let mut stdout = io::stdout();
10 let mut stdin = io::stdin();
11
12 write!(stdout, "CSS selector: ").unwrap();
13 stdout.flush().unwrap();
14 stdin.read_line(&mut input).unwrap();
15 let selector = Selector::parse(&input).unwrap();
16
17 writeln!(stdout, "HTML document:").unwrap();
18 stdout.flush().unwrap();
19 input.clear();
20 stdin.read_to_string(&mut input).unwrap();
21 let document = Html::parse_document(&input);
22
23 println!("{:#?}", document);
24
25 for node in document.select(&selector) {
26 println!("{:?}", node.value());
27 }
28}
More examples
examples/fragment.rs (line 25)
7fn main() {
8 let mut input = String::new();
9 let mut stdout = io::stdout();
10 let mut stdin = io::stdin();
11
12 write!(stdout, "CSS selector: ").unwrap();
13 stdout.flush().unwrap();
14 stdin.read_line(&mut input).unwrap();
15 let selector = Selector::parse(&input).unwrap();
16
17 writeln!(stdout, "HTML fragment:").unwrap();
18 stdout.flush().unwrap();
19 input.clear();
20 stdin.read_to_string(&mut input).unwrap();
21 let fragment = Html::parse_fragment(&input);
22
23 println!("{:#?}", fragment);
24
25 for node in fragment.select(&selector) {
26 println!("{:?}", node.value());
27 }
28}
Sourcepub fn root_element(&self) -> ElementRef<'_>
pub fn root_element(&self) -> ElementRef<'_>
Returns the root <html>
element.
Trait Implementations§
Source§impl<'a> Selectable<'a> for &'a Html
impl<'a> Selectable<'a> for &'a Html
Source§impl Serialize for Html
impl Serialize for Html
Source§fn serialize<S: Serializer>(
&self,
serializer: &mut S,
traversal_scope: TraversalScope,
) -> Result<(), Error>
fn serialize<S: Serializer>( &self, serializer: &mut S, traversal_scope: TraversalScope, ) -> Result<(), Error>
Take the serializer and call its methods to serialize this type. The type will dictate
which methods are called and with what parameters.
impl Eq for Html
impl StructuralPartialEq for Html
Auto Trait Implementations§
impl Freeze for Html
impl !RefUnwindSafe for Html
impl !Send for Html
impl !Sync for Html
impl Unpin for Html
impl UnwindSafe for Html
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more