Skip to content


Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
A jQuery-like library for Python (fork of
branch: master

Fetching latest commit…

Cannot retrieve the latest commit at this time

Failed to load latest commit information.
docs Initial commit of pyquery from
.gitignore Initial commit of pyquery from
LICENSE.txt Initial commit of pyquery from
README.rst Attempting to placate github's arcane symlinked-readme rules.
TODO.txt Initial commit of pyquery from Initial commit of pyquery from

PyQuery: a jQuery-like library for Python

PyQuery allows you to make jQuery-style CSS-selector queries on XML/HTML documents. The API is intended to match jQuery's API whenever possible, though it has been made more Pythonic where appropriate.

This project is a fork of the original PyQuery developed by Olivier Lauzanne in 2008; it is maintained by David Schoonover. Feedback and bug reports are both very welcome over on github.


You can use the PyQuery class to load an xml document from a string, a lxml document, from a file or from an url:

>>> from pyquery import PyQuery as pq
>>> from lxml import etree
>>> import urllib
>>> d = pq("<html></html>")
>>> d = pq(etree.fromstring("<html></html>"))
>>> d = pq(url='')
>>> # d = pq(url='', opener=lambda url: urllib.urlopen(url).read())
>>> d = pq(filename=path_to_html_file)

Now d is like the $ object in jQuery:

>>> d("#hello")
>>> p = d("#hello")
>>> print(p.html())
Hello world !
>>> p.html("you know <a href=''>Python</a> rocks")
>>> print(p.html())
you know <a href="">Python</a> rocks
>>> print(p.text())
you know Python rocks

You can use some of the pseudo classes that are available in jQuery but that are not standard in css such as :first, :last, :even, :odd, :eq, :lt, :gt, :checked, :selected, and :file.

>>> d('p:first')


  • PyQuery uses lxml for fast XML and HTML manipulation.
  • This is not a library to produce or interact with JavaScript code. If that's what you need, check out
Something went wrong with that request. Please try again.