Skip to content

html5-parservsselectolax

Apache-2.0 1 1 700
17.6 thousand (month) Jun 03 2007 0.4.12(2023-11-19 15:09:54 ago)
1,607 1 10 MIT
Mar 01 2018 4.5 million (month) 0.4.7(2026-03-06 09:23:35 ago)

html5-parser is a Python library for parsing HTML and XML documents.

A fast implementation of the HTML 5 parsing spec for Python. Parsing is done in C using a variant of the gumbo parser. The gumbo parse tree is then transformed into an lxml tree, also in C, yielding parse times that can be a thirtieth of the html5lib parse times. That is a speedup of 30x. This differs, for instance, from the gumbo python bindings, where the initial parsing is done in C but the transformation into the final tree is done in python.

It is built on top of the popular lxml library and provides a simple and intuitive API for working with the document's structure.

html5-parser uses the HTML5 parsing algorithm, which is more lenient and forgiving than the traditional XML-based parsing algorithm. This means that it can parse HTML documents with malformed or missing tags and still produce a usable parse tree.

To use html5-parser, you first need to install it via pip by running pip install html5-parser. Once it is installed, you can use the html5_parser.parse() function to parse an HTML document and create a parse tree. For example:

``` from html5_parser import parse

html_string = "Hello, World!" root = parse(html_string) print(root.tag) # html ` You can also use `html5_parser.parse() with file-like objects, bytes or file paths.

Once you have a parse tree, you can use the find() and findall() methods to search for elements in the document similar to BeautifulSoup.

html5-parser also supports searching using xpath, similar to lxml.

selectolax is a fast and lightweight library for parsing HTML and XML documents in Python. It is designed to be a drop-in replacement for the popular BeautifulSoup library, with significantly faster performance.

selectolax uses a Cython-based parser to quickly parse and navigate through HTML and XML documents. It provides a simple and intuitive API for working with the document's structure, similar to BeautifulSoup.

To use selectolax, you first need to install it via pip by running pip install selectolax``. Once it is installed, you can use theselectolax.html.fromstring()` function to parse an HTML document and create a selectolax object. For example: ``` from selectolax.parser import HTMLParser

html_string = "Hello, World!" root = HTMLParser(html_string).root print(root.tag) # html ` You can also use `selectolax.html.fromstring()` with file-like objects, bytes or file paths, as well as `selectolax.xml.fromstring() for parsing XML documents.

Once you have a selectolax object, you can use the select() method to search for elements in the document using CSS selectors, similar to BeautifulSoup. For example: body = root.select("body")[0] print(body.text()) # "Hello, World!"

Like BeautifulSoups find and find_all methods selectolax also supports searching using the search()`` method, which returns the first matching element, and thesearch_all()`` method, which returns all matching elements.

Example Use


```python from html5_parser import parse html_string = "Hello, World!" root = parse(html_string) print(root.tag) # html body = root.find("body") # or find all print(body.text) # "Hello, World!" for el in root.findall("p"): print(el.text) # "Hello ```
```python from selectolax.parser import HTMLParser html_string = "Hello, World!" root = HTMLParser(html_string).root print(root.tag) # html # use css selectors: body = root.select("body")[0] print(body.text()) # "Hello, World!" # find first matching element: body = root.search("body") print(body.text()) # "Hello, World!" # or all matching elements: html_string = "

paragraph1

paragraph2

" root = HTMLParser(html_string).root for el in root.search_all("p"): print(el.text()) # will print: # paragraph 1 # paragraph 2 ```

Alternatives / Similar


Was this page helpful?