pyquery
A jquery-like library for python
What it is and what it does
pyquery is a Python wrapper around lxml that mimics jQuery's API for querying and manipulating XML and HTML documents. Instead of writing XPath or raw lxml code, you write familiar jQuery-style selectors and method chains to find elements, extract text, modify attributes, and transform DOM structures. It's particularly useful for web scraping and HTML parsing tasks where you want the convenience of jQuery syntax without leaving Python.
The library loads documents from strings, files, URLs, or existing lxml trees, then lets you traverse and modify them using pseudo-classes like :first, :last, :even, :odd, and :has(). Recent versions (2.0+) introduced breaking changes around URL auto-fetching and cssselect compatibility, so existing code may need updates when upgrading.
Use it for:
- Web scraping: extract data from HTML pages using CSS selectors instead of XPath expressions
- HTML template manipulation: modify or generate HTML documents programmatically before serving
- XML document transformation: query and rewrite XML files with a simpler API than raw lxml
- Form data extraction: serialize form elements according to spec using built-in methods
- DOM testing: verify HTML structure and content in automated tests with jQuery-like assertions
Worth the install?
AI-flagged interpretation of the facts on this page — verify before relying
pyquery lets you query and manipulate XML and HTML documents using a jQuery-like API, built on lxml for fast parsing and transformation.
Yes. pyquery is actively maintained, has no known vulnerabilities, installs with low friction, and offers genuine convenience for HTML/XML work if you're comfortable with jQuery syntax. The permissive BSD license poses no barrier. Check release notes for breaking changes if upgrading from versions before 2.0.
Install
pyquery on PyPI
pip
pip install pyqueryuv
uv add pyquerypoetry
poetry add pyqueryInstalling pyquery
Before you install
Low friction install with just two runtime dependencies (lxml and cssselect). Actively maintained as of 2026-07-27 with recent releases and 2380 repository stars.
License in practice
BSD permissive license allows use in most commercial and open-source projects without significant restrictions.
Quickstart
pip install pyquery
from pyquery import PyQuery as pq
d = pq('<p id="hello" class="hello">Hello world!</p>')
print(d('#hello').text())
Verify before relying
- Whether cssselect 1.4.x pinning (mentioned in 2.0.2 release notes) remains a hard requirement or has been relaxed in 2.1.0
- Specific Python version support floor for 2.1.0 (classifiers list 3.11, 3.12, 3.13 but minimum is unspecified)
Package facts
| License | BSD (permissive) |
| Python support | not specified |
| Install friction | low — pure-Python wheel |
| Runtime dependencies | 2 — lxml, cssselect |
| Maintenance | actively maintained — 18 days since the last release |
| Last repo commit | |
| First released | |
| Downloads | 1,986,642/month — #3,385 on PyPI (30-day window, as of 2026-08-14) |
| Known vulnerabilities | none known (OSV.dev, checked 2026-08-14) |
Evidence: pyquery-2.1.0-py3-none-any.whl
Keywords: jquery, html, xml, scraping
Tags
More HTML packages
MarkupSafe provides a text object that escapes…
permissive · top 100 on PyPI
Jinja2Jinja2 is a templating engine that renders…
permissive · top 100 on PyPI
beautifulsoup4Beautiful Soup parses HTML and XML documents…
permissive · top 100 on PyPI
lxmllxml provides Python bindings to libxml2 and…
permissive · top 1,000 on PyPI
docutilsDocutils converts plaintext documentation in…
unclear · top 1,000 on PyPI
MarkdownConverts Markdown text to HTML using a Python…
permissive · top 1,000 on PyPI
cssselectcssselect parses CSS3 selectors and translates…
permissive · top 1,000 on PyPI
parselParsel extracts data from HTML, JSON, and XML…
permissive · top 5,000 on PyPI
turbohtmlParse, query, edit, and serialize HTML and XML…
permissive · top 15,000 on PyPI
soupsieveSoupsieve is a CSS selector library designed to…
permissive · top 100 on PyPI
cssselect2cssselect2 parses and matches CSS4 selectors…
permissive · top 1,000 on PyPI
itemloadersItemloaders extracts and standardizes…
permissive · top 5,000 on PyPI
html5libhtml5lib parses HTML documents into a tree…
permissive · top 1,000 on PyPI
elementpathProvides XPath 1.0, 2.0, 3.0, and 3.1 selectors…
permissive · top 5,000 on PyPI
pykmlpyKML parses and creates KML documents using a…
permissive · top 15,000 on PyPI