class pyquery.pyquery.PyQuery(*args, **kwargs)[source]
The main class
class Fn[source]
Hook for defining custom function (like the jQuery.fn):
>>> fn = lambda: this.map(lambda i, el: PyQuery(this).outerHtml()) >>> PyQuery.fn.listOuterHtml = fn >>> S = PyQuery( ... '<ol> <li>Coffee</li> <li>Tea</li> <li>Milk</li> </ol>') >>> S('li').listOuterHtml() ['<li>Coffee</li>', '<li>Tea</li>', '<li>Milk</li>']
PyQuery.addClass(value)[source]
Add a css class to elements:
>>> d = PyQuery('<div></div>') >>> d.addClass('myclass') [<div.myclass>]
PyQuery.after(value)[source]
add value after nodes
PyQuery.append(value)[source]
append value to each nodes
PyQuery.appendTo(value)[source]
append nodes to value
PyQuery.base_url[source]
Return the url of current html document or None if not available.
PyQuery.before(value)[source]
insert value before nodes
PyQuery.children(selector=None)[source]
Filter elements that are direct children of self using optional selector:
>>> d = PyQuery('<span><p class="hello">Hi</p><p>Bye</p></span>') >>> d [<span>] >>> d.children() [<p.hello>, <p>] >>> d.children('.hello') [<p.hello>]
PyQuery.clone()[source]
return a copy of nodes
PyQuery.closest(selector=None)[source]
>>> d = PyQuery( ... '<div class="hello"><p>This is a ' ... '<strong class="hello">test</strong></p></div>') >>> d('strong').closest('div') [<div.hello>] >>> d('strong').closest('.hello') [<strong.hello>] >>> d('strong').closest('form') []
PyQuery.contents()[source]
Return contents (with text nodes):
>>> d = PyQuery('hello <b>bold</b>') >>> d.contents() ['hello ', <Element b at ...>]
PyQuery.each(func)[source]
apply func on each nodes
PyQuery.empty()[source]
remove nodes content
PyQuery.encoding[source]
return the xml encoding of the root element
PyQuery.end()[source]
Break out of a level of traversal and return to the parent level.
>>> m = '<p><span><em>Whoah!</em></span></p><p><em> there</em></p>' >>> d = PyQuery(m) >>> d('p').eq(1).find('em').end().end() [<p>, <p>]
PyQuery.eq(index)[source]
Return PyQuery of only the element with the provided index:
>>> d = PyQuery('<p class="hello">Hi</p><p>Bye</p><div></div>') >>> d('p').eq(0) [<p.hello>] >>> d('p').eq(1) [<p>] >>> d('p').eq(2) []
PyQuery.extend(other)[source]
Extend with anoter PyQuery object
PyQuery.filter(selector)[source]
Filter elements in self using selector (string or function):
>>> d = PyQuery('<p class="hello">Hi</p><p>Bye</p>') >>> d('p') [<p.hello>, <p>] >>> d('p').filter('.hello') [<p.hello>] >>> d('p').filter(lambda i: i == 1) [<p>] >>> d('p').filter(lambda i: PyQuery(this).text() == 'Hi') [<p.hello>] >>> d('p').filter(lambda i, this: PyQuery(this).text() == 'Hi') [<p.hello>]
PyQuery.find(selector)[source]
Find elements using selector traversing down from self:
>>> m = '<p><span><em>Whoah!</em></span></p><p><em> there</em></p>' >>> d = PyQuery(m) >>> d('p').find('em') [<em>, <em>] >>> d('p').eq(1).find('em') [<em>]
PyQuery.hasClass(name)[source]
Return True if element has class:
>>> d = PyQuery('<div class="myclass"></div>') >>> d.hasClass('myclass') True
PyQuery.height(value=<NoDefault>)[source]
set/get height of element
PyQuery.hide()[source]
remove display:none to elements style
>>> print(PyQuery('<div style="display:none;"/>').hide()) <div style="display: none"/>
PyQuery.html(value=<NoDefault>, **kwargs)[source]
Get or set the html representation of sub nodes.
Get the text value:
>>> d = PyQuery('<div><span>toto</span></div>') >>> print(d.html()) <span>toto</span>
Extra args are passed to lxml.etree.tostring:
>>> d = PyQuery('<div><span></span></div>') >>> print(d.html()) <span/> >>> print(d.html(method='html')) <span></span>
Set the text value:
>>> d.html('<span>Youhou !</span>') [<div>] >>> print(d) <div><span>Youhou !</span></div>
PyQuery.insertAfter(value)[source]
insert nodes after value
PyQuery.insertBefore(value)[source]
insert nodes before value
PyQuery.is_(selector)[source]
Returns True if selector matches at least one current element, else False:
>>> d = PyQuery('<p class="hello">Hi</p><p>Bye</p><div></div>') >>> d('p').eq(0).is_('.hello') True
>>> d('p').eq(1).is_('.hello') False
PyQuery.items(selector=None)[source]
Iter over elements. Return PyQuery objects:
>>> d = PyQuery('<div><span>foo</span><span>bar</span></div>') >>> [i.text() for i in d.items('span')] ['foo', 'bar'] >>> [i.text() for i in d('span').items()] ['foo', 'bar']
PyQuery.make_links_absolute(base_url=None)[source]
Make all links absolute.
PyQuery.map(func)[source]
Returns a new PyQuery after transforming current items with func.
func should take two arguments - ‘index’ and ‘element’. Elements can also be referred to as ‘this’ inside of func:
>>> d = PyQuery('<p class="hello">Hi there</p><p>Bye</p><br />') >>> d('p').map(lambda i, e: PyQuery(e).text()) ['Hi there', 'Bye'] >>> d('p').map(lambda i, e: len(PyQuery(this).text())) [8, 3] >>> d('p').map(lambda i, e: PyQuery(this).text().split()) ['Hi', 'there', 'Bye']
PyQuery.nextAll(selector=None)[source]
>>> h = '<span><p class="hello">Hi</p><p>Bye</p><img scr=""/></span>' >>> d = PyQuery(h) >>> d('p:last').nextAll() [<img>]
PyQuery.not_(selector)[source]
Return elements that don’t match the given selector:
>>> d = PyQuery('<p class="hello">Hi</p><p>Bye</p><div></div>') >>> d('p').not_('.hello') [<p>]
PyQuery.outerHtml()[source]
Get the html representation of the first selected element:
>>> d = PyQuery('<div><span class="red">toto</span> rocks</div>') >>> print(d('span')) <span class="red">toto</span> rocks >>> print(d('span').outerHtml()) <span class="red">toto</span> >>> S = PyQuery('<p>Only <b>me</b> & myself</p>') >>> print(S('b').outerHtml()) <b>me</b>
PyQuery.parents(selector=None)[source]
>>> d = PyQuery('<span><p class="hello">Hi</p><p>Bye</p></span>') >>> d('p').parents() [<span>] >>> d('.hello').parents('span') [<span>] >>> d('.hello').parents('p') []
PyQuery.prepend(value)[source]
prepend value to nodes
PyQuery.prependTo(value)[source]
prepend nodes to value
PyQuery.prevAll(selector=None)[source]
>>> h = '<span><p class="hello">Hi</p><p>Bye</p><img scr=""/></span>' >>> d = PyQuery(h) >>> d('p:last').prevAll() [<p.hello>]
PyQuery.remove(expr=<NoDefault>)[source]
Remove nodes:
>>> h = '<div>Maybe <em>she</em> does <strong>NOT</strong> know</div>' >>> d = PyQuery(h) >>> d('strong').remove() [<strong>] >>> print(d) <div>Maybe <em>she</em> does know</div>
PyQuery.removeAttr(name)[source]
Remove an attribute:
>>> d = PyQuery('<div id="myid"></div>') >>> d.removeAttr('id') [<div>]
PyQuery.removeClass(value)[source]
Remove a css class to elements:
>>> d = PyQuery('<div class="myclass"></div>') >>> d.removeClass('myclass') [<div>]
PyQuery.remove_namespaces()[source]
Remove all namespaces:
>>> doc = PyQuery('<foo xmlns="http://example.com/foo"></foo>') >>> doc [<{http://example.com/foo}foo>] >>> doc.remove_namespaces() [<foo>]
PyQuery.replaceAll(expr)[source]
replace nodes by expr
PyQuery.replaceWith(value)[source]
replace nodes by value
PyQuery.root[source]
return the xml root element
PyQuery.show()[source]
add display:block to elements style
>>> print(PyQuery('<div />').show()) <div style="display: block"/>
PyQuery.siblings(selector=None)[source]
>>> h = '<span><p class="hello">Hi</p><p>Bye</p><img scr=""/></span>' >>> d = PyQuery(h) >>> d('.hello').siblings() [<p>, <img>] >>> d('.hello').siblings('img') [<img>]
PyQuery.text(value=<NoDefault>)[source]
Get or set the text representation of sub nodes.
Get the text value:
>>> doc = PyQuery('<div><span>toto</span><span>tata</span></div>') >>> print(doc.text()) toto tata
Set the text value:
>>> doc.text('Youhou !') [<div>] >>> print(doc) <div>Youhou !</div>
PyQuery.toggleClass(value)[source]
Toggle a css class to elements
>>> d = PyQuery('<div></div>') >>> d.toggleClass('myclass') [<div.myclass>]
PyQuery.val(value=<NoDefault>)[source]
Set the attribute value:
>>> d = PyQuery('<input />') >>> d.val('Youhou') [<input>]
Get the attribute value:
>>> d.val() 'Youhou'
PyQuery.width(value=<NoDefault>)[source]
set/get width of element
PyQuery.wrap(value)[source]
A string of HTML that will be created on the fly and wrapped around each target:
>>> d = PyQuery('<span>youhou</span>') >>> d.wrap('<div></div>') [<div>] >>> print(d) <div><span>youhou</span></div>
PyQuery.wrapAll(value)[source]
Wrap all the elements in the matched set into a single wrapper element:
>>> d = PyQuery('<div><span>Hey</span><span>you !</span></div>') >>> print(d('span').wrapAll('<div id="wrapper"></div>')) <div id="wrapper"><span>Hey</span><span>you !</span></div>
PyQuery.xhtml_to_html()[source]
Remove xhtml namespace:
>>> doc = PyQuery( ... '<html xmlns="http://www.w3.org/1999/xhtml"></html>') >>> doc [<{http://www.w3.org/1999/xhtml}html>] >>> doc.remove_namespaces() [<html>]