Skip to content

selectolaxvshtml5lib

MIT 10 1 1,607
4.5 million (month) Mar 01 2018 0.4.7(2026-03-06 09:23:35 ago)
1,220 14 97 MIT
Jul 30 2007 32.8 million (month) 1.1(2020-06-22 23:32:36 ago)

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.

html5lib is a pure-python library for parsing HTML. It is designed to conform to the WHATWG HTML specification, as is implemented by all major web browsers.

As html5lib is implemented in pure-python it is significantly slower than alternatives powered by lxml (like parsel or beautifulsoup). However, html5lib implements a more true html5 parsing which can represent HTML tree more correctly than alternatives.

Example Use


```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 ```
```python import html5lib from html5lib import parse html_doc = "My Title" parsed = parse(html_doc) title = parsed.getElementsByTagName("title")[0] print(title.childNodes[0].nodeValue) ```

Alternatives / Similar


Was this page helpful?