今天写一篇最近刚学习的一个第3方库pyquery,pyquery比bs4,lxml更强大的一个网页解析工具。
什么是pyQuery
Pyquery是python的第3方库,PyQuery库也是一个非常强大又灵活的网页解析库,它提供了和jQuery 类似的语法来解析HTML 文梢,支持css 选择器,使用非常方便。Beautifu l Soup 一样,初始化PyQuery 的时候,也需要传入HTML 文本来初始化一个PyQue1y对象。它的初始化方式有多种,比如直接传入字符串,传入URL,传人文件名
官方文档:http://pyquery.readthedocs.io/en/latest/
安装PyQuery
# pip安装 pip install pyquery
PyQuery使用
写一个简单的html供下面学习
text =
''' <html> <body> <div id="test"> <ul class="list"> <li class="item-0"><a href="link1.html">今天天气</a></li> <li class="item-1"><a href="link2.html">明天天气</a></li> <li class="item-2"><a href="link3.html">后天天气</a></li> <li class="item-3"><a href="link4.html">周末天气</a></li> </ul> </div> </body> </html> '''
基本css选择器
# 导入pyquery from pyquery import PyQuery as pq # 创建对象 doc = pq(text) # 通过css选择器先查找id再查找class item = doc('#test .list') print(item) 代码结果: <ul class="list"> <li class="item-0"><a href="link1.html">今天天气</a></li> <li class="item-1"><a href="link2.html">明天天气</a></li> <li class="item-2"><a href="link3.html">后天天气</a></li> <li class="item-3"><a href="link4.html">周末天气</a></li> </ul>
查找子节点
# 导入pyquery from pyquery import PyQuery as pq # 创建对象 doc = pq(text) # 通过css选择器先查找id再查找class item = doc('#test .list') # 查找子节点li
child = item.children('li')
# 或者使用find()函数
# child = item.find('li')
print(child) 代码结果: <li class="item-0"><a href="link1.html">今天天气</a></li> <li class="item-1"><a href="link2.html">明天天气</a></li> <li class="item-2"><a href="link3.html">后天天气</a></li> <li class="item-3"><a href="link4.html">周末天气</a></li>
查找父节点
# 导入pyquery from pyquery import PyQuery as pq # 创建对象 doc = pq(text) # 通过css选择器先查找id再查找class item = doc('#test .list') # 查找父节点 container = item.parent() print(container) 代码结果: <div id="test"> <ul class="list"> <li class="item-0"><a href="link1.html">今天天气</a></li> <li class="item-1"><a href="link2.html">明天天气</a></li> <li class="item-2"><a href="link3.html">后天天气</a></li> <li class="item-3"><a href="link4.html">周末天气</a></li> </ul> </div>
查找兄弟节点
# 导入pyquery from pyquery import PyQuery as pq # 创建对象 doc = pq(text) # 查找兄弟其中一个 item = doc('.item-0') # 查找兄弟节点 xiongdi = item.siblings('li') print(xiongdi) 代码结果: <li class="item-1"><a href="link2.html">明天天气</a></li> <li class="item-2"><a href="link3.html">后天天气</a></li> <li class="item-3"><a href="link4.html">周末天气</a></li>
遍历读取内容
1、遍历读取a标签
这个地方需要使用一个方法items(),使用该方法后得到一个生成器
# 导入pyquery from pyquery import PyQuery as pq # 创建对象 doc = pq(text) item = doc('.list a').items() for i in item: print(i) 代码结果: <a href="link1.html">今天天气</a> <a href="link2.html">明天天气</a> <a href="link3.html">后天天气</a> <a href="link4.html">周末天气</a>
2、获取href的值
这个地方需要用到attr()方法
# 导入pyquery from pyquery import PyQuery as pq # 创建对象 doc = pq(text) item = doc('.list a').items() for i in item: print(i.attr('href')) 代码结果: link1.html link2.html link3.html link4.html
3、获取a标签下的文字
通过调用text()方法来实现
# 导入pyquery from pyquery import PyQuery as pq # 创建对象 doc = pq(text) item = doc('.list a').items() for i in item: print(i.text()) 代码结果: 今天天气 明天天气 后天天气 周末天气
下一篇通过简单的案例更加深刻的了解pyquery库~~~~
写了一些简单的介绍,还是那一句话,方法多多种,喜欢那种用那种~~~大家喜欢的话,也可以点个关注哈