Skip to content

selectolax

1,607 1 10 MIT
0.4.7 (6 Mar 2026) Mar 01 2018 4.5 million (month)

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 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


3,010 6.0.3 (2026-04-09 14:33:38 ago) Dec 13 2022 compare
- 4.14.3 (2025-11-30 15:08:24 ago) Jul 26 2019 compare
5,734 1.0.4 (2026-02-22 02:21:21 ago) Jul 30 2007 compare
1,220 1.1 (2020-06-22 23:32:36 ago) Jul 30 2007 compare
309 1.4.0 (2026-01-29 07:00:24 ago) Apr 14 2012 compare
2,351 6.0.12 (2025-09-10 13:33:58 ago) Jun 15 2007 compare
1,324 1.11.0 (2026-01-29 07:19:22 ago) Jul 26 2019 compare
2,381 2.0.1 (2024-08-30 08:12:22 ago) Dec 05 2008 compare
13,863 0.10.0 (2019-02-17 20:14:17 ago) Feb 25 2018 compare
632 1.2.1 (2022-07-02 14:09:28 ago) Jun 09 2011 compare
scrapling new
36,206 0.4.5 (2026-04-07 04:22:27 ago) Aug 01 2024 compare
218 1.4.0 (2025-08-04 21:07:54 ago) Jul 30 2007 compare
700 0.4.12 (2023-11-19 15:09:54 ago) Jun 03 2007 compare
768 1.1 (2020-10-09 12:50:18 ago) Dec 28 2012 compare
23 0.6.0 (2023-04-26 10:16:25 ago) Jul 24 2014 compare

Other Languages

3,886 8.0.0 (2026-02-21 19:30:52 ago) Jul 03 2013 compare
1,153 1.6.0 (2026-03-17 01:32:31 ago) Feb 09 2011 compare
4,789 12.0.0 (2026-03-20 23:08:40 ago) Aug 28 2011 compare
jsdom new
21,552 29.0.2 (2026-04-07 03:38:38 ago) Nov 21 2011 compare
30,265 1.2.0 (2026-02-21 19:30:40 ago) Oct 08 2011 compare
6,248 1.19.2 (2026-03-19 21:12:43 ago) Jul 25 2009 compare
223 1.5.2 (2025-12-01 15:40:00 ago) Apr 20 2015 compare
1,517 1.0.5 (2024-02-12 21:10:00 ago) Nov 22 2014 compare
1,772 2.10.0 (2025-07-25 09:04:22 ago) Jun 01 2013 compare
4,038 v8.0.8 (2026-03-30 15:14:47 ago) Sep 26 2011 compare
14,926 v1.12.0 (2026-03-15 16:28:52 ago) Aug 29 2016 compare
754 Start (2018-02-20 18:47:44 ago) Feb 20 2018 compare
781 v1.3.6 (2026-03-06 04:46:15 ago) Feb 07 2019 compare
739 v1.3.6 (2026-02-23 07:10:29 ago) Jun 08 2019 compare
2,227 v1.2.5 (2022-01-16 14:36:54 ago) Apr 29 2017 compare
2,103 v4.4.15 (2025-01-02 16:53:09 ago) Oct 26 2013 compare
- 2.0-RC2 (2019-11-09 15:42:50 ago) Nov 09 2019 compare
165 2.3.0 (2021-03-18 00:10:00 ago) Dec 22 2019 compare
Was this page helpful?