pyquery的使用

初始化方式:直接传入URL,字符串,文件名
如:

from pyquery import PyQuery as pq
res=pq(url="https://www.baidu.com/")
print(res('title'))

pyquery对象会将请求URL的html初始化,上述代码相当于

from pyquery import PyQuery as pq
import requests
doc = pq(requests.get("https://www.baidu.com/").text)
print(doc('title'))

当获取的节点太多时,用items方法得到生成器,遍历每个节点

html = '''
<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>
'''

from pyquery import PyQuery as pq
doc = pq(html)
for item in doc('#container .list li').items():
    print(item)
    print(item.text())#获取节点的内容

运行结果如下

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

second item
<li class="item-0 active"><a href="link3.html"><span class="bold">third item</span></a></li>

third item
<li class="item-1 active"><a href="link4.html">fourth item</a></li>

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

fifth item

查询节点
查询子节点:find
以上面的html为参数,查找所有的子孙节点

from pyquery import PyQuery as pq
doc = pq(html)
items = doc('.list')
print(type(items))
print(items)
lis = items.find('li')
print(type(lis))
print(lis)

若指向查找子节点,使用children()方法

lis = items.children()
print(type(lis))
print(lis)

若想筛选出只有节点为中class为active的节点,传入CSS选择器.active即可

lis = items.children('.active')
print(lis)

同理可以用parent()方法得到父节点,若想得到祖先节点,则使用parents()
若想得到兄弟节点则使用siblings 方法
若想得到某个节点的某个属性,使用attr方法,如得到a节点的href属性
a.attr.hrefa.attr(‘href’)

注意:如果想得到多个节点的某个属性,则需要items然后遍历,但若想得到多个节点的内部html文本,则可以不遍历

参考课程:52讲轻松搞定网络爬虫

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值