mathiversen
html-parser
HTML

A simple and general purpose html/xhtml parser, using Pest.

Last updated Apr 3, 2026
88
Stars
21
Forks
12
Issues
0
Stars/day
Attention Score
19
Language breakdown
No language data available.
โ–ธ Files click to expand
README

Html parser

A simple and general purpose html/xhtml parser lib/bin, using Pest.

Features

  • Parse html & xhtml (not xml processing instructions)
  • Parse html-documents
  • Parse html-fragments
  • Parse empty documents
  • Parse with the same api for both documents and fragments
  • Parse custom, non-standard, elements; <cat/>, <Cat/> and <C4-t/>
  • Removes comments
  • Removes dangling elements
  • Iterate over all nodes in the dom three

What is it not

  • It's not a high-performance browser-grade parser
  • It's not suitable for html validation
  • It's not a parser that includes element selection or dom manipulation
If your requirements matches any of the above, then you're most likely looking for one of the crates below:

Examples bin

Parse html file

html_parser index.html

Parse stdin with pretty output

curl <website> | html_parser -p

Examples lib

Parse html document

use html_parser::Dom;

fn main() { let html = r#" <!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <title>Html parser</title> </head> <body> <h1 id="a" class="b c">Hello world</h1> </h1> <!-- comments & dangling elements are ignored --> </body> </html>"#;

assert!(Dom::parse(html).is_ok()); }

Parse html fragment

use html_parser::Dom;

fn main() { let html = "<div id=cat />"; assert!(Dom::parse(html).is_ok()); }

Print to json

use html_parser::{Dom, Result};

fn main() -> Result<()> { let html = "<div id=cat />"; let json = Dom::parse(html)?.tojsonpretty()?; println!("{}", json); Ok(()) }

๐Ÿ”— More in this category

ยฉ 2026 GitRepoTrend ยท mathiversen/html-parser ยท Updated daily from GitHub