Pyquery库整理

初始化

from pyquery import PyQuery

html = '''
<div>
    <ul>
         <li class="item-0">first item</li>
         <li class="item-1"><a href="link2.html">second item</a></li>
         <li class="item-0 active"><a href="link3.html"><span class="bold">third item</span></a></li>
         <li class="item-1 active"><a href="link4.html">fourth item</a></li>
         <li class="item-0"><a href="link5.html">fifth item</a></li>
     </ul>
 </div>
'''
ht = PyQuery(html)
print(ht('li'))     #直接传入CSS选择器
URL初始化和文档初始化我觉得不常用,还是请求解析分离开的好

基本CSS选择器

print(ht('#container .list .item-1'))
父子
print(ht.find('.item-1').children())
print(ht.find('.item-1').parent())
兄弟节点
print(ht('.item-1.active').siblings())
----------------------------------------------------------------------
<li class="item-0 active"><a href="link3.html"><span class="bold">third item</span></a></li>
         <li class="item-1"><a href="link2.html">second item</a></li>
         <li class="item-0">first item</li>
         <li class="item-0"><a href="link5.html">fifth item</a></li>
遍历
for i in ht('li').items():      #还是生成器对象 ,只能遍历,不能自取
    print(i)

获取信息

print(ht('.item-1.active a').attr('href'))          #获取属性
print(ht('.item-1.active a').text())                #获取内容
------------------------------------------------------------------------------------
link4.html
fourth item
print(ht('.item-1.active').html())      #获取除去本级标签的内容
--------------------------------------------------------------------------
<a href="link4.html">fourth item</a>

DOM操作

addClass、removeClass
li = doc('.item-0.active')
print(li)
li.removeClass('active')
print(li)
li.addClass('active')
print(li)
添加属性
li = doc('.item-0.active')
print(li)
li.attr('name', 'link')         #给li标签添加name属性
print(li)
li.css('font-size', '14px')     #添加CSS样式,貌似没什么用
print(li)
删除指定标签,这个例子经典
html = '''
<div class="wrap">
    Hello, World
    <p>This is a paragraph.</p>
 </div>
'''
from pyquery import PyQuery as pq
doc = pq(html)
wrap = doc('.wrap')
print(wrap.text())
wrap.find('p').remove()
print(wrap.text())
----------------------------------------------------------
Hello, World This is a paragraph.
Hello, World

伪类选择器

html = '''
<div class="wrap">
    <div id="container">
        <ul class="list">
             <li class="item-0">first item</li>
             <li class="item-1"><a href="link2.html">second item</a></li>
             <li class="item-0 active"><a href="link3.html"><span class="bold">third item</span></a></li>
             <li class="item-1 active"><a href="link4.html">fourth item</a></li>
             <li class="item-0"><a href="link5.html">fifth item</a></li>
         </ul>
     </div>
 </div>
'''
from pyquery import PyQuery
q = PyQuery(html)
print(q('li:first-child'))
print(q('li:last-child'))
print(q('li:nth-child(2)'))
print('--------------------------')
print(q('li:gt(2)'))        #大于第几个,从0开始计数
------------------------------------------------------------------------------------------------
<li class="item-0">first item</li>

<li class="item-0"><a href="link5.html">fifth item</a></li>

<li class="item-1"><a href="link2.html">second item</a></li>

--------------------------
<li class="item-1 active"><a href="link4.html">fourth item</a></li>
             <li class="item-0"><a href="link5.html">fifth item</a></li>
还有
li = doc('li:nth-child(2n)')        #第偶数个
print(li)
li = doc('li:contains(second)')     #内容包含second的
print(li)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值