pyquery.pyquery.
PyQuery
(*args, **kwargs)[源代码]¶主要类别
Fn
[源代码]¶用于定义自定义函数(如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>']
addClass
(value)¶Alias add_class()
add_class
(value)[源代码]¶向元素添加CSS类::
>>> d = PyQuery('<div></div>')
>>> d.add_class('myclass')
[<div.myclass>]
>>> d.addClass('myclass')
[<div.myclass>]
appendTo
(value)¶Alias append_to()
base_url
¶返回当前HTML文档的URL,如果不可用,则返回“无”。
children
(selector=None)[源代码]¶使用可选选择器直接作为自身子代的筛选元素:
>>> d = PyQuery('<span><p class="hello">Hi</p><p>Bye</p></span>')
>>> d
[<span>]
>>> d.children()
[<p.hello>, <p>]
>>> d.children('.hello')
[<p.hello>]
closest
(selector=None)[源代码]¶>>> 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')
[]
contents
()[源代码]¶返回内容(带文本节点):
>>> d = PyQuery('hello <b>bold</b>')
>>> d.contents()
['hello ', <Element b at ...>]
encoding
¶返回根元素的XML编码
end
()[源代码]¶从遍历级别中断并返回到父级别。
>>> 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>]
eq
(index)[源代码]¶仅返回具有所提供索引的元素的pyquery::
>>> 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)
[]
filter
(selector)[源代码]¶自用选择器(字符串或函数)中的筛选元素:
>>> 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>]
find
(selector)[源代码]¶使用从自身向下遍历的选择器查找元素:
>>> 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>]
hasClass
(name)¶Alias has_class()
has_class
(name)[源代码]¶如果元素具有类,则返回true::
>>> d = PyQuery('<div class="myclass"></div>')
>>> d.has_class('myclass')
True
>>> d.hasClass('myclass')
True
hide
()[源代码]¶删除显示:无到元素样式:
>>> print(PyQuery('<div style="display:none;"/>').hide())
<div style="display: none"/>
html
(value=<NoDefault>, **kwargs)[源代码]¶获取或设置子节点的HTML表示形式。
获取文本值:
>>> d = PyQuery('<div><span>toto</span></div>')
>>> print(d.html())
<span>toto</span>
多余的参数传递给 lxml.etree.tostring
::
>>> d = PyQuery('<div><span></span></div>')
>>> print(d.html())
<span/>
>>> print(d.html(method='html'))
<span></span>
设置文本值:
>>> d.html('<span>Youhou !</span>')
[<div>]
>>> print(d)
<div><span>Youhou !</span></div>
insertAfter
(value)¶Alias insert_after()
insertBefore
(value)¶Alias insert_before()
is_
(selector)[源代码]¶如果选择器至少匹配一个当前元素,则返回true,否则返回false:
>>> d = PyQuery('<p class="hello"><span>Hi</span></p><p>Bye</p>')
>>> d('p').eq(0).is_('.hello')
True
>>> d('p').eq(0).is_('span')
False
>>> d('p').eq(1).is_('.hello')
False
items
(selector=None)[源代码]¶ITER覆盖元素。返回PyQuery对象:
>>> 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']
>>> list(d.items('a')) == list(d('a').items())
True
map
(func)[源代码]¶使用func转换当前项后返回新的pyquery。
func应采用两个参数-“index”和“element”。元素也可以在func:中称为“this”:
>>> 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']
nextAll
(selector=None)¶Alias next_all()
next_all
(selector=None)[源代码]¶>>> h = '<span><p class="hello">Hi</p><p>Bye</p><img scr=""/></span>'
>>> d = PyQuery(h)
>>> d('p:last').next_all()
[<img>]
>>> d('p:last').nextAll()
[<img>]
not_
(selector)[源代码]¶返回与给定选择器不匹配的元素:
>>> d = PyQuery('<p class="hello">Hi</p><p>Bye</p><div></div>')
>>> d('p').not_('.hello')
[<p>]
outerHtml
(method='html')¶Alias outer_html()
outer_html
(method='html')[源代码]¶获取第一个选定元素的HTML表示形式:
>>> d = PyQuery('<div><span class="red">toto</span> rocks</div>')
>>> print(d('span'))
<span class="red">toto</span> rocks
>>> print(d('span').outer_html())
<span class="red">toto</span>
>>> print(d('span').outerHtml())
<span class="red">toto</span>
>>> S = PyQuery('<p>Only <b>me</b> & myself</p>')
>>> print(S('b').outer_html())
<b>me</b>
parents
(selector=None)[源代码]¶>>> 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')
[]
prependTo
(value)¶Alias prepend_to()
prevAll
(selector=None)¶Alias prev_all()
prev_all
(selector=None)[源代码]¶>>> h = '<span><p class="hello">Hi</p><p>Bye</p><img scr=""/></span>'
>>> d = PyQuery(h)
>>> d('p:last').prev_all()
[<p.hello>]
>>> d('p:last').prevAll()
[<p.hello>]
remove
(expr=<NoDefault>)[源代码]¶删除节点:
>>> 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>
removeAttr
(name)¶Alias remove_attr()
removeClass
(value)¶Alias remove_class()
remove_attr
(name)[源代码]¶删除属性:
>>> d = PyQuery('<div id="myid"></div>')
>>> d.remove_attr('id')
[<div>]
>>> d.removeAttr('id')
[<div>]
remove_class
(value)[源代码]¶删除元素的CSS类::
>>> d = PyQuery('<div class="myclass"></div>')
>>> d.remove_class('myclass')
[<div>]
>>> d.removeClass('myclass')
[<div>]
remove_namespaces
()[源代码]¶删除所有命名空间:
>>> doc = PyQuery('<foo xmlns="http://example.com/foo"></foo>')
>>> doc
[<{http://example.com/foo}foo>]
>>> doc.remove_namespaces()
[<foo>]
replaceAll
(expr)¶Alias replace_all()
replaceWith
(value)¶Alias replace_with()
replace_with
(value)[源代码]¶按值替换节点:
>>> doc = PyQuery("<html><div /></html>")
>>> node = PyQuery("<span />")
>>> child = doc.find('div')
>>> child.replace_with(node)
[<div>]
>>> print(doc)
<html><span/></html>
root
¶返回XML根元素
siblings
(selector=None)[源代码]¶>>> 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>]
text
(value=<NoDefault>, **kwargs)[源代码]¶获取或设置子节点的文本表示形式。
获取文本值:
>>> doc = PyQuery('<div><span>toto</span><span>tata</span></div>')
>>> print(doc.text())
tototata
>>> doc = PyQuery('''<div><span>toto</span>
... <span>tata</span></div>''')
>>> print(doc.text())
toto tata
设置文本值:
>>> doc.text('Youhou !')
[<div>]
>>> print(doc)
<div>Youhou !</div>
toggleClass
(value)¶Alias toggle_class()
toggle_class
(value)[源代码]¶将CSS类切换为元素
>>> d = PyQuery('<div></div>')
>>> d.toggle_class('myclass')
[<div.myclass>]
>>> d.toggleClass('myclass')
[<div>]
val
(value=<NoDefault>)[源代码]¶设置属性值:
>>> d = PyQuery('<input />')
>>> d.val('Youhou')
[<input>]
获取属性值:
>>> d.val()
'Youhou'
wrap
(value)[源代码]¶动态创建并环绕每个目标的HTML字符串:
>>> d = PyQuery('<span>youhou</span>')
>>> d.wrap('<div></div>')
[<div>]
>>> print(d)
<div><span>youhou</span></div>
wrapAll
(value)¶Alias wrap_all()
wrap_all
(value)[源代码]¶将匹配集中的所有元素包装为单个包装元素::
>>> d = PyQuery('<div><span>Hey</span><span>you !</span></div>')
>>> print(d('span').wrap_all('<div id="wrapper"></div>'))
<div id="wrapper"><span>Hey</span><span>you !</span></div>
>>> 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>