Python爬虫-解析库之pyquery

本文介绍了Python爬虫解析库PyQuery的使用,包括初始化(字符串、URL、文件)、基本CSS选择器、查找和遍历节点、获取节点信息(属性、文本)、节点操作(addClass、removeClass、attr、text、html)以及伪类选择器的应用。通过实例展示了PyQuery如何高效地解析和操作HTML文档。
摘要由CSDN通过智能技术生成

pyquery

初始化

像Beautiful Soup一样,初始化pyquery的时候,也需要传入HTML文本来初始化一个PyQuery对象。它的初始化方式有多种,比如直接传入字符串,传入URL,传入文件名等待。官方文档:http://pyquery.readthedocs.io

字符串初始化

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

from pyquery import PyQuery as pq
doc = pq(html)
print(doc("li"))

运行结果如下:

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

首先引入PyQuery对象,取别名pq。然后声明一个长HTML字符串,并将其当作参数传递给PyQuery类,这个就完成了初始化,将初始化的对象传入CSS选择器。

URL初始化

初始化的参数不仅可以以字符串的形式传递,还可以传入网页的URL,此时只需要指定参数为url既可。

from pyquery import PyQuery as pq
doc = pq(url="https://cuiqingcai.com")
 #等同于
 #import requests  
 #doc = pq(request.get("https://cuiqingcai.com").text)
print(doc('title'))

运行结果如下:

<title>静觅丨崔庆才的个人博客</title>&#13;

说明:PyQuery对象会先请求这个URL,然后用得到的HTML内容完成初始化。

文件的初始化

除了传递URL,还可以传递本地的文件名,此时将参数指定为filename即可。

from pyquery import PyQuery as pq
doc = pq(filename='demo.html')
print(doc('li'))

说明:这里需要有一个本地HTML文件demo.html,其内容是待解析的HTML字符串。这样它会首先读取本地的文件内容,然后用文件内容以字符串的形式传递给PyQuery类来初始化。

基本CSS选择器

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)
#先选取id为container的节点,再选取其内部的class为list的节点内部的所有li节点
#注意:container后面有一个空格
print(doc('#container .list li'))
print(type(doc('#container .list li')))

运行结果为:

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

<class 'pyquery.pyquery.PyQuery'>

查找节点

子节点

查找子节点时,需要用到find()方法,此时传入的参数是

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值