爬虫常用解析类库——pyquery

本文主讲内容:爬虫解析数据的类库pyquery的简单使用

怎么安装 pyquery

安装指令:

1
pip3 install pyquery

使用 pyquery 匹配数据的步骤

第一步:导入模块

语法:

1
from pyquery import PyQuery as pq

第二步:通过 PyQuery 类实例化一个 PyQuery 对象

语法:

1
2
3
doc = pq(网页源代码)
doc = pq(url = “网站”,encoding = “字符集”)
doc = pq(filename= html文件,encoding = “字符集”)

注意:第一种实例化 PyQuery 对象的方法最常用,因为像网站发送请求时可以更加灵活的控制请求头【headers】,第三种方法也挺常用的

第三步:通过实例化对象的属性和方法匹配标签以及数据!

其中一种匹配数据的语法示例:doc(“li”) 表示匹配html源代码内的所有 li 标签并且返回一个 pyquery类型的对象

image-20211006185937139

pyquery 匹配数据的几种方法

1.匹配 PyQuery 对象中的指定标签

语法:

1
2
result = doc(“li”)
result = doc(“li[class = 'item-5']”)

语法解释:

1:匹配数据类型为pyquery的指定标签【doc对象】的所有li标签,其中 result 的类型是 pyquery 类型

2:匹配数据类型为pyquery的指定标签【doc对象】的class属性为“item-5”的所有li标签,其中 result 的类型是 pyquery 类型

语法1

image-20211006190037183

语法2:

image-20211006190055496

2.通过css选择器语法匹配指定标签

语法:result = doc(“.item-1”) 或者 result = doc(“#item-1”) 其中 . 代表class,#代表id 【参考bs4】

解释:匹配doc对象中【html源码】的所有class属性为“item-1”的标签,其中 result 的类型是 pyquery 类型

image-20211006190114499

3.查找某标签下的子标签

语法:数据类型为pyquery的指定标签.find(“.item-1”)

解释:在数据类型为pyquery的指定标签下通过 find 方法找到class属性为“item-1”的所有标签,并且返回为一个 pyquery类型的数据

image-20211006190129042

4.查找某标签下的父【祖父】标签

语法:

1
2
数据类型为pyquery的指定标签.parent()
数据类型为pyquery的指定标签.parents()

解释:

1:通过数据类型为pyquery的指定标签的partent方法找到这个标签的父标签,并返回一个数据类型为 pyquery 的数据

2:通过数据类型为pyquery的指定标签的partents方法找到这个标签的父与祖父标签,并返回一个数据类型为 pyquery 的数据

image-20211006190306526

5.可遍历【迭代】的标签对象

语法:数据类型为pyquery的指定标签(“.item-0”).items()

解释:匹配数据类型为pyquery的指定标签里面的所有class属性为“item-0”的标签,并且将这些标签存放到一个可迭代对象里面而不是返回一个数据类型为 pyquery的数据

注意:循环遍历出去的class属性为“item-0”的标签还是一个数据类型为pyquery的数据

image-20211006190321688

6.获取数据类型为pyquery的指定标签内的属性

语法:

1
2
数据类型为pyquery的指定标签.attr('href'
数据类型为pyquery的指定标签.attr.href

解释:匹配数据类型为 pyquery 的指定标签内的 href 属性的值

image-20211006190446228

7.获取指定标签内的文本数据

语法:数据类型为pyquery的指定标签.text()

语法解释:获取 数据类型为pyquery的指定标签 的文本数据值

image-20211006190505146

8.获取指定标签下的html标签

语法:数据类型为pyquery的指定标签.html()

语法解释:获取数据类型为pyquery的指定标签下一级的html标签

image-20211006190528353

9.DOM操作【向数据类型为 pyquery 的指定标签内增加类和移除类】

语法:

1
2
数据类型为 pyquery 的指定标签.add_class('love'
数据类型为 pyquery 的指定标签.remove_class('love'

语法解释:

1:为数据类型为 pyquery 的指定标签增加一个值为“love”的class属性
2:为数据类型为 pyquery 的指定标签移除一个值为“love”的class属性

注意:移除和增加指定标签的属性都是浅的,不是永久的作用范围只是当前程序,程序结束回归原样【每增加没移除】

语法1截图:

image-20211006190641127

语法2截图:

image-20211006190652635

持续更新中……