skillfed

pyquery

A jquery-like library for python

pyquery v2.1.0 2.0M downloads/30d#3,385 on PyPI2,380
Permissive license BSD Active released

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 pyquery

uv

uv add pyquery

poetry

poetry add pyquery

Installing 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

Development Status :: 5 - Production/StableIntended Audience :: DevelopersProgramming Language :: Python :: 3Programming Language :: Python :: 3.11Programming Language :: Python :: 3.12Programming Language :: Python :: 3.13

Tags

jquery-like html parsing pythonxml document queryingcss selector html manipulationweb scraping with jquery syntaxlxml wrapper jquery apihtml dom traversal python
web-scrapinghtml-parsingdom-manipulation

More HTML packages