PyQuery详解

为什么选择PyQuery?

Python爬虫解析库,主流的有

  • PyQuery
  • Beautifulsoup
  • Scrapy Selectors
  • 正则表达式。

PyQuery和scrapy Selectors都是基于lxml模块,而lxml和正则表达式都是C语言写的,只有Beautifulsoup是用纯Python编写的,所以在实测中,Beautifulsoup 的解析速度比其他几种慢了5倍以上!

正则表达式的构造稍微复杂一点,一般在结构化的网页中没必要用正则(易出错)。Scrapy Selectors支持css,xpath以及正则表达式,PyQuery只支持css(我最开始学的是xpath,后来觉得css语法更精简一些)。Scrapy Selector中的css语法和PyQuery中的略有不同,本文以PyQuery为例(不用Scrapy框架的话,PyQuery就够用了)

如何使用?

首先在命令行里 pip install pyquery 安装一下
pip install pyquery==1.4.3

利用它,我们可以直接解析 DOM 节点的结构,并通过 DOM 节点的一些属性快速进行内容提取。

html = '''
<div id="cont">
<ul class="slist">
<li class="item-0">web开发</li>
<li class="item-1"><a href="link2.html">爬虫开发</a></li>
<li class="item-0 active"><a href="link3.html"><span class="bold">数据分析</span></a></li>
<li class="item-1 active"><a href="link4.html">深度学习</a></li>
<li class="item-0"><a href="link5.html">机器学习</a></li>
</ul>
</div>
'''

1、实例演示

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

2、css选择器

doc = pq(html)
print(doc('#cont .slist li'))
print(type(doc('#cont .slist li')))

3、提取内容

for item in doc('#cont .slist li').items():
print(item.text())

4、子节点

from pyquery import PyQuery as pq
doc = pq(html)
items = doc('.slist')
print(type(items))
print(items) # 提取节点所有内容
lis = items.find('li') # 获取符合条件的li标签
print(type(lis))
print(lis)

5、 属性获取

from pyquery import PyQuery as pq
doc = pq(html)
a = doc('.item-0.active a')
print(a, type(a))
print(a.attr('href'))

6、 遍历提取

doc = pq(html)
a = doc('a')
for s in a.items():
print(s.attr('href')) # 属性获取
print(s.text()) # 值获取
posted @   尘世风  阅读(158)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
历史上的今天:
2020-10-18 Git安装及使用以及连接GitHub方法详解
2020-10-18 selenium WebDriver 自动化测试之文件上传及弹框alert处理
2017-10-18 金额相关的测试用例
*/
点击右上角即可分享
微信分享提示

目录导航