当前位置: 首页 > 工具软件 > pyquery-ql > 使用案例 >

pyquery - PyQuery完整的API

百里朝
2023-12-01

class pyquery.pyquery.PyQuery(*args, **kwargs)

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>']

添加一个css类到元素:

  PyQuery.addClass(value)

>>> d = PyQuery('<div></div>')
>>> d.addClass('myclass')
[<div.myclass>]
在节点后添加值
   PyQuery.after(value)

将值附加到每个节点:      

       PyQuery.append(value)

将节点附加到值:

PyQuery.append(value)

返回当前html文档的url,如果不可用则返回None:

PyQuery.base_url

在节点之前插入值:

PyQuery.before(value)

使用可选选择器筛选自己的直接子对象的元素:

PyQuery.children(value)

>>> 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()


返回最近的标签:

PyQuery.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')
[]


返回内容(带文本节点):

PyQuery.contents()

>>> d = PyQuery('hello <b>bold</b>')
>>> d.contents()  
['hello ', <Element b at ...>]


在每个节点上应用func:

PyQuery.each(func)


删除节点内容:

PyQuery.empty()


返回根元素的xml编码:

PyQuery.encoding


打破遍历级别并返回父级别:

PyQuery.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>]


仅返回提供索引的元素的PyQuery:

PyQuery.eq(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)
[]


用anoter  PyQuery对象进行拓展:

PyQuery.extend(other)


自我使用选择器中的元素:

PyQuery.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>]


使用选择器遍历自我查找元素:

PyQuery.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>]


如果元素有类,则返回True:

PyQuery.hasClass(name)

>>> d = PyQuery('<div class="myclass"></div>')
>>> d.hasClass('myclass')
True

设置元素的高度:

PyQuery.height(值=<NoDeafault>)


删除display : none 到元素样式:

PyQuery.hide()

>>> print(PyQuery('<div style="display:none;"/>').hide())
<div style="display: none"/>


获取或设置子节点的html表示:

1.获取文本值:

PyQuery.html(value=<NoDefault>, **kwargs)

>>> d = PyQuery('<div><span>toto</span></div>')
>>> print(d.html())
<span>toto</span>

2.额外的参数传递给lxml.etree.tostring:

>>> d = PyQuery('<div><span></span></div>')
>>> print(d.html())
<span/>
>>> print(d.html(method='html'))
<span></span>

3.设置文本值:

>>> d.html('<span>Youhou !</span>')
[<div>]
>>> print(d)
<div><span>Youhou !</span></div>

在值后插入节点:

PyQuery.insertAfter(value)


在值前插入节点:

PyQuery.insertBefore(value)


如果选择器至少匹配一个当前元素,则返回True,否则返回False:

PyQuery.is_(selector)

>>> 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对象:

PyQuery.items(selector=None)

>>> 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)


用func转换当前项目后,返回一个新的PyQuery。

func应该有两个参数 - '索引'和'元素'。func中的元素也可以被称为'this':

PyQuery.map(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)

>>> h = '<span><p class="hello">Hi</p><p>Bye</p><img scr=""/></span>'
>>> d = PyQuery(h)
>>> d('p:last').nextAll()
[<img>]

返回与给定选择器不匹配的元素:

PyQuery.not_(selector)

>>> d = PyQuery('<p class="hello">Hi</p><p>Bye</p><div></div>')
>>> d('p').not_('.hello')
[<p>]


获取第一个选定元素的html值:

PyQuery.outerHtml()

>>> 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)


将节点预先设置为某值

PyQuery.prependTo(value)


.....:

PyQuery.prevAll(selector=None)

>>> 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>)

>>> 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)

>>> d = PyQuery('<div id="myid"></div>')
>>> d.removeAttr('id')
[<div>]


删除一个CSS类到元素:

PyQuery.removeClass(value)

>>> d = PyQuery('<div class="myclass"></div>')
>>> d.removeClass('myclass')
[<div>]


删除所有名称空间:

PyQuery.remove_namespaces()

>>> doc = PyQuery('<foo xmlns="http://example.com/foo"></foo>')
>>> doc
[<{http://example.com/foo}foo>]
>>> doc.remove_namespaces()
[<foo>]


用expr替换节点

PyQuery.replaceAll(expr)


用值替换节点:

PyQuery.replaceWith(value)


返回xml根元素:

PyQuery.root


将显示  :块  添加到元素样式:

PyQuery.show()

>>> print(PyQuery('<div />').show())
<div style="display: block"/>


查找兄弟标签:

PyQuery.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>]


获取或设置子节点的文本:

PyQuery.text(value=<NoDefault>)

1.获取文本值

>>> doc = PyQuery('<div><span>toto</span><span>tata</span></div>')
>>> print(doc.text())
toto tata

2.设置文本值

>>> doc.text('Youhou !')
[<div>]
>>> print(doc)
<div>Youhou !</div>


切换一个CSS类别元素:

PyQuery.toggleClass(value)

>>> d = PyQuery('<div></div>')
>>> d.toggleClass('myclass')
[<div.myclass>]

属性值:

PyQuery.val(value=<NoDefault>)

1.设置属性值:

>>> d = PyQuery('<input />')
>>> d.val('Youhou')
[<input>]

2.获取属性值:

>>> d.val()
'Youhou'


设置/获取元素的宽度:

PyQuery.width(value=<NoDefault>)


一串HTML将被即时创建并包裹在每个目标周围:

PyQuery.wrap(value)

>>> d = PyQuery('<span>youhou</span>')
>>> d.wrap('<div></div>')
[<div>]
>>> print(d)
<div><span>youhou</span></div>


将匹配的集合中的所有元素包装到一个包装元素中:

PyQuery.wrapAll(value)

>>> 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


删除xhtml的命名空间:

PyQuery.xhtml_to_html()

>>> doc = PyQuery(
...         '<html xmlns="http://www.w3.org/1999/xhtml"></html>')
>>> doc
[<{http://www.w3.org/1999/xhtml}html>]
>>> doc.remove_namespaces()
[<html>]

借鉴文档翻译,英文文档地址:http://https://pythonhosted.org/pyquery/api.html

中间部分不准确,使用时请注意!



 类似资料: