爬虫---PyQuert简介

不念不忘少年蓝@ 2023-08-17 17:26 196阅读 0赞

  今天写一篇最近刚学习的一个第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

  1. # pip安装
  2. pip install pyquery

1171635-20190718181106179-126770830.png

PyQuery使用

写一个简单的html供下面学习

  1. text =
  2. '''
  3. <html>
  4. <body>
  5. <div id="test">
  6. <ul class="list">
  7. <li class="item-0"><a href="link1.html">今天天气</a></li>
  8. <li class="item-1"><a href="link2.html">明天天气</a></li>
  9. <li class="item-2"><a href="link3.html">后天天气</a></li>
  10. <li class="item-3"><a href="link4.html">周末天气</a></li>
  11. </ul>
  12. </div>
  13. </body>
  14. </html>
  15. '''

基本css选择器

  1. # 导入pyquery
  2. from pyquery import PyQuery as pq
  3. # 创建对象
  4. doc = pq(text)
  5. # 通过css选择器先查找id再查找class
  6. item = doc('#test .list')
  7. print(item)
  8. 代码结果:
  9. <ul class="list">
  10. <li class="item-0"><a href="link1.html">今天天气</a></li>
  11. <li class="item-1"><a href="link2.html">明天天气</a></li>
  12. <li class="item-2"><a href="link3.html">后天天气</a></li>
  13. <li class="item-3"><a href="link4.html">周末天气</a></li>
  14. </ul>

查找子节点

  1. # 导入pyquery
  2. from pyquery import PyQuery as pq
  3. # 创建对象
  4. doc = pq(text)
  5. # 通过css选择器先查找id再查找class
  6. item = doc('#test .list')
  7. # 查找子节点li
  8. child = item.children('li')
  9. # 或者使用find()函数
  10. # child = item.find('li')
  11. print(child)
  12. 代码结果:
  13. <li class="item-0"><a href="link1.html">今天天气</a></li>
  14. <li class="item-1"><a href="link2.html">明天天气</a></li>
  15. <li class="item-2"><a href="link3.html">后天天气</a></li>
  16. <li class="item-3"><a href="link4.html">周末天气</a></li>

查找父节点

  1. # 导入pyquery
  2. from pyquery import PyQuery as pq
  3. # 创建对象
  4. doc = pq(text)
  5. # 通过css选择器先查找id再查找class
  6. item = doc('#test .list')
  7. # 查找父节点
  8. container = item.parent()
  9. print(container)
  10. 代码结果:
  11. <div id="test">
  12. <ul class="list">
  13. <li class="item-0"><a href="link1.html">今天天气</a></li>
  14. <li class="item-1"><a href="link2.html">明天天气</a></li>
  15. <li class="item-2"><a href="link3.html">后天天气</a></li>
  16. <li class="item-3"><a href="link4.html">周末天气</a></li>
  17. </ul>
  18. </div>

查找兄弟节点

  1. # 导入pyquery
  2. from pyquery import PyQuery as pq
  3. # 创建对象
  4. doc = pq(text)
  5. # 查找兄弟其中一个
  6. item = doc('.item-0')
  7. # 查找兄弟节点
  8. xiongdi = item.siblings('li')
  9. print(xiongdi)
  10. 代码结果:
  11. <li class="item-1"><a href="link2.html">明天天气</a></li>
  12. <li class="item-2"><a href="link3.html">后天天气</a></li>
  13. <li class="item-3"><a href="link4.html">周末天气</a></li>

遍历读取内容

1、遍历读取a标签

这个地方需要使用一个方法items(),使用该方法后得到一个生成器

  1. # 导入pyquery
  2. from pyquery import PyQuery as pq
  3. # 创建对象
  4. doc = pq(text)
  5. item = doc('.list a').items()
  6. for i in item:
  7. print(i)
  8. 代码结果:
  9. <a href="link1.html">今天天气</a>
  10. <a href="link2.html">明天天气</a>
  11. <a href="link3.html">后天天气</a>
  12. <a href="link4.html">周末天气</a>

2、获取href的值

这个地方需要用到attr()方法

  1. # 导入pyquery
  2. from pyquery import PyQuery as pq
  3. # 创建对象
  4. doc = pq(text)
  5. item = doc('.list a').items()
  6. for i in item:
  7. print(i.attr('href'))
  8. 代码结果:
  9. link1.html
  10. link2.html
  11. link3.html
  12. link4.html

3、获取a标签下的文字

通过调用text()方法来实现

  1. # 导入pyquery
  2. from pyquery import PyQuery as pq
  3. # 创建对象
  4. doc = pq(text)
  5. item = doc('.list a').items()
  6. for i in item:
  7. print(i.text())
  8. 代码结果:
  9. 今天天气
  10. 明天天气
  11. 后天天气
  12. 周末天气

下一篇通过简单的案例更加深刻的了解pyquery库~~~~

写了一些简单的介绍,还是那一句话,方法多多种,喜欢那种用那种~~~大家喜欢的话,也可以点个关注哈

转载于:https://www.cnblogs.com/qican/p/11209043.html

发表评论

表情:
评论列表 (有 0 条评论,196人围观)

还没有评论,来说两句吧...

相关阅读

    相关 c++开源爬虫-Larbin简介

    因为最近学校实训,做的是一个搜索相关的项目,并且是c++的一个项目,所以就想到了larbin,于是接下来几天就现研究研究其源码,再根据项目需求修改其源码。 不多说,直接进入今

    相关 爬虫简介与基本语法

    一、爬虫用来做什么的? 从互联网上提取数据的一组程序 1、什么是爬虫? 网络爬虫(Web crawler),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚