pyquery库的使用

pyquery库的使用

初始化

### 字符串初始化

from pyquery import PyQuery as pq

html = '''<ul class="m-list">
<li><a class="title test" title="宿舍违规电器领回办理流程图" id="157" href="/houqin/gyxsgy/index.php/Home/News/showarticle/id/157">宿舍违规电器领回办理流程图</a>1<span class="date">[2017-01-10]</span></li>
<li><a class="title" title="学生申请假期住校办理流程图" id="156" href="/houqin/gyxsgy/index.php/Home/News/showarticle/id/156">学生申请假期住校办理流程图</a>2<span class="date">[2017-01-10]</span></li>
<li><a class="title" title="学生公寓区宣传品申请张贴办理流程图" id="155" href="/houqin/gyxsgy/index.php/Home/News/showarticle/id/155">学生公寓区宣传品申请张贴办理流程图</a><span class="date">[2017-01-10]</span></li>
<li><a class="title" title="学生公寓物品外借办理流程图" id="154" href="/houqin/gyxsgy/index.php/Home/News/showarticle/id/154">学生公寓物品外借办理流程图</a><span class="date">[2017-01-10]</span></li>
<li><a class="title test" title="学生申请住宿办理流程图" id="153" href="/houqin/gyxsgy/index.php/Home/News/showarticle/id/153">学生申请住宿办理流程图</a><span class="date">[2017-01-10]</span></li>
<li><a class="title" title="学生宿舍调整办理流程图" id="152" href="/houqin/gyxsgy/index.php/Home/News/showarticle/id/152">学生宿舍调整办理流程图</a><span class="date">[2017-01-10]</span></li>                    
</ul>'''
doc = pq(html)
print(doc('li'))

### URL初始化

# doc = pq(url = "https://baidu.com")
# print(doc('title'))

### 文件初始化
# doc = pq(filename ='text.html')
# print(doc('li'))

## 基本的css选择器

print(doc('.m-list li a'))
print(type(doc('.m-list li a')))
doc = doc('ul')
print(doc.find('li'))   # find()方法会查找范围是所有子孙节点,如果只想查找子节点,可以用children()方法
print(doc.parent())     # parent()方法来获取某个节点的父节点,如果想获取某个祖宗节点可以用parents()方法
print(doc.siblings())    # siblings()用来获取兄弟节点

遍历

对于单个节点来说,可以直接打印输出,也可以直接转化为字符串
但对于多个节点的结果,需要调用items()方法进行遍历

lis = doc('li').items()
print(type(lis))
for li in lis:
    print(li,type(li))

获取信息

a_items = doc('li a').items()
print(type(a_items))
for a in a_items:
    print(a.attr('href'))   #可以调用attr()方法来获取属性
    print(a.attr.href)      #也可以调用attr属性来获取属性
#当选中的节点具有多个时,直接调用a.attr()只会返回第一个结果,不会返回多个
    print(a.text())     #可以使用text()方法获取节点内部的纯文本,不包含html
    print(a.html())     #可以使用html()方法获取节点内包含html的文本

节点操作

li = doc('.test')
print(li)

#可以调用removeClass()方法删除节点中指定的class属性
li.removeClass('test')      
print(li)

#可以调用addClass()方法向节点添加class属性
li.addClass('test')         
print(li)

#可以调用attr()方法修改某个属性的值,第一个参数是属性名,第二个参数是属性的值
li.attr('title','link')
print(li)

#可以调用text()方法修改节点内的纯文本
li.text('I Love Lina')
print(li)

#可以调用html()方法修改节点内的html文本
li.html('<span>Lina,I miss you')
print(li)

#可以调用remove()方法移除该节点
li.find('span').remove()
print(li)

伪类选择器

li = doc('li:first-child')
print(li)
li = doc('li:last-child')
print(li)
li = doc('li:nth-child(2)')
print(li)
li = doc('li:gt(2)')
print(li)
li = doc('li:nth-child(2n)')
print(li)
li = doc('li:contains(second)')
print(li)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值