爬虫 之 pyquery

这次是pyquery,适合通过css找节点,然后提取数据。

 

  • 找父节点、找字节点、找兄弟节点
  • 提取属性信息、提取文本信息、提取html信息
  • 修改节点内容

ok,开始。

 

基本的导入与使用

from pyquery import PyQuery as pq
html= ‘’‘~~~~~~~~‘’‘
doc = pq(html)
print(doc('li'))

其实,初始化PyQuery对象还有两种方法:

一种是URL,一种是本地的html文件,

doc = pq(url='https://cuiqingcai.com')
print(doc('title'))
doc = pq(filename='demo.html')
print(doc('li'))

 

如何找节点呢?

可以通过find()方法来找

items = doc('ul')
print(items.find('li'))

类似的,可以通过children()方法找,

items = doc('ul')
print(items.children('li'))

两者的区别是:

find是在该节点的所有子孙节点中查找节点

children()是在该节点的 子节点中找节点

 

同理,找父节点和祖先节点也一样,用的方法分别为:parent()     parents(),在括号中加限制来找目标节点。

 

找兄弟节点   使用: siblings()

 

补: 当找到的节点对象  包含多个节点时, 用遍历来获取多节点的结果。

doc = pq(html)
lis = doc('li').items()
for li in lis:
    print(li)

 

 

获取属性值与文本值

获取属性值: 用 attr 或者 attr()

print(a.attr.href)


print(a.attr('href'))

 

取文本值: 有text() 和 html(),前者只是取文本值,后者会把节点内部的所有东西都取到,包括html标签。

print(a.text())

print(a.html())

 

修改节点内容:

可以利用attr、text()、html()来修改节点的内容

li = doc('li')

li.attr('name','link') // 给li节点中的name属性赋值为link

li.text('666')  //把原先li节点中的所有内容修改为 666

li.html('<p>666</p>') // 把li中的所有内容修改为<p>666</p>

 

可以用remove()移除pq对象中的某个节点,方便我们提取数据:

html = ‘’‘

<div class='wrap'>
hello
<p>66666</p>
</div>
’‘’

//我们想提取hello,可以先删去p节点,然后直接取文本。
doc = pq(html)
wrap = doc('.wrap')
wrap.children('p').remove()
print(wrap.text())

 

 

ok,

 

 

88

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值