为什么选择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') |
| 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()) |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球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 金额相关的测试用例