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

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

爬虫---PyQuert简介的更多相关文章

  1. Python 爬虫一 简介

    什么是爬虫? 爬虫可以做什么? 爬虫的本质 爬虫的基本流程 什么是request&response 爬取到数据该怎么办 什么是爬虫? 网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间 ...

  2. 【搜索引擎Jediael开发笔记1】搜索引擎初步介绍及网络爬虫

    详细可参考 (1)书箱:<这就是搜索引擎><自己动手写网络爬虫><解密搜索引擎打桩实践> (2)[搜索引擎基础知识1]搜索引擎的技术架构 (3)[搜索引擎基础知识2 ...

  3. 97、爬虫框架scrapy

    本篇导航: 介绍与安装 命令行工具 项目结构以及爬虫应用简介 Spiders 其它介绍 爬取亚马逊商品信息   一.介绍与安装 Scrapy一个开源和协作的框架,其最初是为了页面抓取 (更确切来说, ...

  4. 爬虫框架 Scrapy

    一 介绍 crapy一个开源和协作的框架,其最初是为了页面抓取 (更确切来说, 网络抓取 )所设计的,使用它可以以快速.简单.可扩展的方式从网站中提取所需的数据.但目前Scrapy的用途十分广泛,可用 ...

  5. Python 爬虫七 Scrapy

    Scrapy Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架. 其可以应用在数据挖掘,信息处理或存储历史数据等一系列的程序中.其最初是为了页面抓取 (更确切来说, 网络抓取 )所设 ...

  6. 爬虫框架之Scrapy

    一.介绍 二.安装 三.命令行工具 四.项目结构以及爬虫应用简介 五.Spiders 六.Selectors 七.Items 八.Item Pipelin 九. Dowloader Middeware ...

  7. 爬虫基础线程进程学习-Scrapy

    性能相关 学习参考:http://www.cnblogs.com/wupeiqi/articles/6229292.html 在编写爬虫时,性能的消耗主要在IO请求中,当单进程单线程模式下请求URL时 ...

  8. 爬虫、框架scrapy

    阅读目录 一 介绍 二 安装 三 命令行工具 四 项目结构以及爬虫应用简介 五 Spiders 六 Selectors 七 Items 八 Item Pipeline 九 Dowloader Midd ...

  9. 爬虫之Scrapy详解

    性能相关 在编写爬虫时,性能的消耗主要在IO请求中,当单进程单线程模式下请求URL时必然会引起等待,从而使得请求整体变慢. import requests def fetch_async(url): ...

随机推荐

  1. Flutter学习一

    包管理 依赖本地包 dependencies: pkg1: path: ../../code/pkg1 依赖git包 dependencies: pkg1: git: url: git://githu ...

  2. Ubantu 安装SSH

    1.检查是否安装SSH dpkg --get-selections | grep ssh 一般情况下Ubantu 默认集成 openssh-client,但要用sftp的话还需要安装openssh-s ...

  3. Linux-3.14.12内存管理笔记【伙伴管理算法(1)】

    前面分析了memblock算法.内核页表的建立.内存管理框架的构建,这些都是x86处理的setup_arch()函数里面初始化的,因地制宜,具有明显处理器的特征.而start_kernel()接下来的 ...

  4. PyCharm批量修改变量名

    方法和 PyCharm重命名文件时更改引用的地方相同

  5. 对java的几点个人浅浅的认知

    特点   简单地说,Java 具有如下特点:简单的.面向对象.平台无关.多线程.分布式.安全. 高性能.可靠的.解释型.自动垃圾回收等特点. 主要面向internet的语言 Java比其他任何一门语言 ...

  6. Java哲学家进餐问题|多线程

    Java实验三 多线程 哲学家进餐问题: 5个哲学家共用一张圆桌,分别坐在周围的5张椅子上, 在圆桌上有5个碗和5只筷子(注意是5只筷子,不是5双), 碗和筷子交替排列.他们的生活方式是交替地进行思考 ...

  7. alipay sign error

    阴影部分地址参数有问题: <PAY_COMPLETE_PAGE_URL><![CDATA[https://baoxian.itaiping.com/ae-console/remote ...

  8. pytorch基础-搭建网络

    搭建网络的步骤大致为以下: 1.准备数据 2. 定义网络结构model 3. 定义损失函数4. 定义优化算法 optimizer5. 训练 5.1 准备好tensor形式的输入数据和标签(可选) 5. ...

  9. C#位运算实际作用之操作整型某一位

    1.前言 前几天写了两篇关于c#位运算的文章 c#位运算基本概念与计算过程 C#位运算实际运用 在文中也提到了位运算的实际作用之一就是合并整型,当时引用了一个问题: C# 用两个short,一个int ...

  10. Linux进程和计划任务实践

    1.显示统计占用系统内存最多的进程,并排序. 方法一 [root@test ~]#ps aux --sort=%mem USER PID %CPU %MEM VSZ RSS TTY STAT STAR ...