一、安装pyquery
1、pip安装(强烈推荐)
打开命令行,输入以下命令:
pip intall pyquery
命令执行完毕之后即可完成安装。
提示:如果下载失败简易多尝试几次哦
2、wheel安装
进入PyPI网站 https://pypi.python.org/pypi/pyquery/#downloads 下载对应的wheel文件安装。下载完成之后,打开命令行cd到文件所在处执行以下命令,如:
pip install 文件名(如:pyquery-1.2.17-py2.py3-none-any.whl)
3、验证安装
安装完成之后,可以在命令行下测试:
python
import pyquery
如果没有报错,就证明库已经安装成功啦!
二、使用pyquery
1.初识化对象
1.1字符串初始
from pyquery import PyQuery as pq
doc ='''
<div>
<ul class="feed_new_arrlist">
<li class="clearfix">
<span class="arr" id="first"><i class="icon CSDN_iconfont Feed-arrowup"></i></span>
<span class="txt" id="second"><a href="https://bss.csdn.net/m/pk/home?id=10600" target="_blank">达摩院 2020 十大科技趋势发布,大变局到来!</a></span>
</li>
<li class="clearfix">
<span class="arr"><i class="icon CSDN_iconfont Feed-arrowup"></i></span>
<span class="txt"><a href="https://bss.csdn.net/m/pk/home?id=10599" target="_blank">如何看待AI换脸技术?</a></span>
</li>
</ul>
</div>
'''
doc = pq(html)
print(doc('li'))
运行结果如下:
<li class="clearfix">
<span class="arr"><i class="icon CSDN_iconfont Feed-arrowup"/></span>
<span class="txt"><a href="https://bss.csdn.net/m/pk/home?id=10600" target="_blank">达摩院 2020 十大科技趋势发布,大变局到来!</a></span>
</li>
<li class="clearfix">
<span class="arr"><i class="icon CSDN_iconfont Feed-arrowup"/></span>
<span class="txt"><a href="https://bss.csdn.net/m/pk/home?id=10599" target="_blank">如何看待AI换脸技术?</a></span>
</li>
1.2url地址初始
html就是上个代码中html(之后不再说明)
from pyquery import PyQuery as pq
doc = pq(url='http://www.baidu.com')
1.3文件初始
from pyquery import PyQuery as pq
doc = pq(filename='xx.html')
2.查找节点
2.1使用CSS选择器
知识点补充:
在CSS选择器中,以#开头带表选择id,其后紧跟id的名称,如#container代表选择id为container的节点。以(.)点开头的代表选择class,其后紧跟class的名称,如.arr代表选择class为arr的节点。除此之外也可以直接写标签名来选择节点,如li代表选择标签名为li的节点。多个选择器之间加上空格便可以代表嵌套关系,如.clearfix .txt则代表选择class为clearfix的节点,再选择该节点内部class为txt的节点。如果不加空格,则代表并列关系,如:span.txt则选择了class为txt的span节点。
from pyquery import PyQuery as pq
doc = pq(html)
#选择class为feed_new_arrlist内部中class为clearfix中的id为second的节点
span = doc('.feed_new_arrlist .clearfix #second')
print(span)
print(type(span))
结果如下:
<span class="txt" id="second"><a href="https://bss.csdn.net/m/pk/home?id=10600" target="_blank">达摩院 2020 十大科技趋势发布,大变局到来!</a></span>
<class 'pyquery.pyquery.PyQuery'>
2.2 子节点
查找子节点和孙节点时,需要用到find()方法,传入的参数是CSS选择器。。
doc = pq(html)
#选择class为feed_new_arrlist的ul节点
ul = doc('ul.feed_new_arrlist')
print(ul)
print(type(ul))
#选择ul节点下的所有标签名为li的子节点
lis = ul.find('li')
print(lis)
print(type(lis))
结果如下:
如果只想查找子节点而不查找孙节点的话,将find方法改为children即可。
2.3父节点
parent()方法可以获取某个节点的直接父节点。如果想获取某个节点的祖先节点的话可以调用parents()方法来实现,其中可以传入CSS选择器参数来筛选想要的祖先节点。方法和查找子节点类似,就不举例子了。
2.4兄弟节点
使用siblings()方法可以获得某个节点的所有的兄弟节点,其中也可以传入CSS选择器参数来筛选你想要的节点,方法同上,也就不举例了。
3.遍历选择的节点
有些时候我们选择的节点不止一个,因此需要我们就需要遍历来对每一个查询到的节点进行操作。
doc = pq(html)
#选择所有的li节点
lis = doc('li')
for li in lis.items():
print(li)
结果如下:
4.获取信息
4.1获取属性
提取到某个节点后,就可以调用attr()方法来获取属性。
doc = pq(html)
#选择所有的li节点
lis = doc('li')
for li in lis.items():
print(li.attr('class'))
结果如下:
clearfix
clearfix
4.2获取文本
提取到某个节点后,调用txt()方法就可以获取其内部的文本了。
doc = pq(html)
#选择所有的li节点
lis = doc('li')
for li in lis.items():
print(li.text())
达摩院 2020 十大科技趋势发布,大变局到来!
如何看待AI换脸技术?
三、更多
好了,pyquery就介绍到这。当然pyquery还有更多的用处,想知道更多的话就去访问pyquery官方文档吧。
刚写博客,定有不足之处,欢迎大家在下方评论指出。