Skip to content
This repository

A jquery-like library for python

branch: master

Merge pull request #63 from jbergstroem/whitespace-issue62

Fix whitespace issue in test_pyquery.py
latest commit fd6975fcab
Gael Pasgrimaud authored
Octocat-spinner-32 docs use readthedocs December 21, 2013
Octocat-spinner-32 pyquery use pep8 name January 03, 2014
Octocat-spinner-32 tests Fix whitespace issue in test_pyquery.py April 15, 2014
Octocat-spinner-32 .hgignore tests.py pep8ify. add tox.ini November 27, 2012
Octocat-spinner-32 .travis.yml fix tox tests April 11, 2013
Octocat-spinner-32 CHANGES.rst fixed issue #9 January 03, 2014
Octocat-spinner-32 LICENSE.txt initial commit. 0.1 version December 02, 2008
Octocat-spinner-32 MANIFEST.in Add _fixt.py to manifest.in October 11, 2013
Octocat-spinner-32 README.rst fix tox tests April 11, 2013
Octocat-spinner-32 README_fixt.py fix tox tests April 11, 2013
Octocat-spinner-32 bootstrap-py3k.py bump version November 10, 2012
Octocat-spinner-32 bootstrap.py Python 3 compatible May 21, 2011
Octocat-spinner-32 buildout.cfg fix tox tests April 11, 2013
Octocat-spinner-32 setup.cfg use readthedocs December 21, 2013
Octocat-spinner-32 setup.py use readthedocs December 21, 2013
Octocat-spinner-32 tox.ini add py34 December 21, 2013
README.rst

pyquery: a jquery-like library for python

pyquery allows you to make jquery queries on xml documents. The API is as much as possible the similar to jquery. pyquery uses lxml for fast xml and html manipulation.

This is not (or at least not yet) a library to produce or interact with javascript code. I just liked the jquery API and I missed it in python so I told myself "Hey let's make jquery in python". This is the result.

The project is being actively developped on a git repository on Github. I have the policy of giving push access to anyone who wants it and then to review what he does. So if you want to contribute just email me.

Please report bugs on the github issue tracker.

Quickstart

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=your_url)
>>> d = pq(url=your_url,
...        opener=lambda url, **kw: urlopen(url).read())
>>> d = pq(filename=path_to_html_file)

Now d is like the $ in jquery:

>>> d("#hello")
[<p#hello.hello>]
>>> p = d("#hello")
>>> print(p.html())
Hello world !
>>> p.html("you know <a href='http://python.org/'>Python</a> rocks")
[<p#hello.hello>]
>>> print(p.html())
you know <a href="http://python.org/">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 :file:

>>> d('p:first')
[<p#hello.hello>]
Something went wrong with that request. Please try again.