- 订阅:新手可以订阅我的其他专栏。免费阶段订阅量1000+
python项目实战
Python编程基础教程系列(零基础小白搬砖逆袭)
- 说明:本专栏持续更新中,目前专栏免费订阅,在转为付费专栏前订阅本专栏的,可以免费订阅付费专栏,可报销(名额有限,先到先得)。
- 作者:爱吃饼干的小白鼠。Python领域优质创作者,2022年度博客新星top100入围,荣获多家平台专家称号。
〖Python网络爬虫实战⑫〗- XPATH语法介绍
〖Python网络爬虫实战⑬〗- XPATH实战案例
⭐️ ✨
前面我们简单介绍了XPath的语法,和xpath的相关实战案例,通过具体的案例来学习XPath语法。xpath最大的难点就是如何写下path后面的语法,我们要找到对应的节点,就可以了。
前面,我们介绍了正则表达式的相关语法,我们知道我们正则表达式写的有问题,就无法匹配数据。我们知道每一个网页有着特殊的结构,我们可以借助他们的节点及属性来提取数据。本文,我们就来介绍一个强大的解析工具——BeautifulSoup 。有了这一个工具,我们就不用写复杂的正则表达式了。我们只需要简单的语句,就可以实现我们想要的数据。
BeautifulSoup 是一个用于解析和生成 HTML,XML 和其他网页的 Python 库。它可以用于爬取,解析和提取网页内容,并能够通过转换器实现惯用的文档导航、查找、修改文档的方式。
BeautifulSoup是一个用Python编写的库,用于解析HTML和XML文档,并提取其中的数据。它是一个简单易用的工具,可以提高从HTML和XML文档中提取数据的效率。
BeautifulSoup使用正则表达式和re模块来解析HTML和XML文档。它支持各种类型的标签,例如 BeautifulSoup还提供了许多其他有用的功能,例如解析表单、提取列表和表格、解析多行文本等。它还支持多种文档类型,例如HTML、XML和JSON。 在开始之前,我们需要安装好BeautifulSoup和lxml这两个库。我们直接命令如下: 这两个库安装完成之后,就可以开始我们的学习了。 首先我们创建一个BS4 解析对象,这非常地简单,语法格式如下所示: 我们通过一个简单的案例,来看看其的用法。 This is an example page. 这是一个简单的HTML文档,其中包含一个标题、一个段落和一个无序列表。使用BeautifulSoup解析器解析HTML文档时,可以使用 我们接下来介绍如何获取节点名称,如何获取属性值。我们梳理一下信息的提取方式。 利用name属性可以获取节点的名称。还是以上面的文本为例,先选取title节点,再调用name属性就可以得到节点名称: 一个节点可能有多个属性,例如 id和class等,选择这个节点元素后,可以调用attrs获取其所有属性: 前面讲的选择方法都是基于属性来选择的,这种方法虽然快,但是在进行比较复杂的选择时,会 find all,顾名思义就是查询所有符合条件的元素,可以给它传入一些属性或文本来得到符合条件的元素,功能十分强大。它的API 如下: 除了find_all方法,还有find方法也可以查询符合条件的元素,只不过find方法返回的是单个元素、也就是第一个匹配的元素,而find_all会返回由所有匹配的元素组成的列表。实例如下: Beautiful Soup还提供了另外一种选择器——CSS选择器。如果你熟悉Web开发,那么肯定对CSS选择器不陌生。 使用CSS选择器,只需要调用select方法、传入相应的CSS选择器即可。我们用一个实例感受一下。 使用CSS选择器查找所有具有名为“class_name”的CSS类的元素: 输出: 使用类名选择器查找具有特定类名的元素: 输出: 本文,我们就来介绍一个强大的解析工具——BeautifulSoup 。有了这一个工具,我们就不用写复杂的正则表达式了。我们只需要简单的语句,就可以实现我们想要的数据。、
、
等,并可以使用attrs
属性来解析元素的属性。BeautifulSoup还支持各种元素类型,例如、
、
、
、
、
等。
准备工作
pip3 install beautifulsoup4
beautifulsoup4的基本用法
#导入解析包
from bs4 import BeautifulSoup
#创建beautifulsoup解析对象
soup = BeautifulSoup(html, 'lxml') # html 表示要解析的文档,而 lxml 表示解析文档时所用的解析器,此处的解析器也可以是 'xml' 或者 'html5lib'
#prettify()用于格式化输出html/xml文档
print(soup.prettify())
Welcome to the Example Page
BeautifulSoup()
函数创建一个BeautifulSoup对象,并使用BeautifulSoup()
函数指定解析器。在这个例子中,我们使用BeautifulSoup()
函数指定解析器为lxml
,这是一个用于解析XML文档的Python解析器。提取信息
获取名称
print(soup.title.name)
获取属性
print(soup.p.attrs)
print(soup.p.attrs[ ' name' ])
方法选择器
变得比较烦琐,不够灵活。幸好,Beautiful Soup还为我们提供了一些查询方法,例如find_all和
find等,调用这些方法,然后传入相应的参数,就可以灵活查询了。
find all(name , attrs , recursive , text ,**kwargs)
find all(name , attrs , recursive , text ,**kwargs)
CSS选择器
from bs4 import BeautifulSoup
html = """
"""
soup = BeautifulSoup(html, "html.parser")
elements = soup.find_all(".element-with-class-name")
print(elements)
[, , ]
from bs4 import BeautifulSoup
html = """
"""
soup = BeautifulSoup(html, "html.parser")
elements = soup.find_all(".element-with-class-name")
print(elements)
[, , ]
总结