python ble设备 bleu python_HTML

1 BeautifulSoup库简介

BeautifulSoup是python的一个库,其提供一些简单的、python式的函数用来处理导航、搜索、修改分析树等功能。它是一个工具箱,通过解析文档为用户提供需要抓取的数据,因为简单,所以不需要多少代码就可以写出一个完整的应用程序。

BeautifulSoup4和lxml一样,BeautifulSoup也是一个HTML/XML的解析器,主要的功能也是如何解析和提取HTML/XML数据。

BeautifulSoup自动将输入文档转换为Unicode编码,输出文档转换为utf-8编码。BeautifulSoup支持Python标准库中的HTML解析器,还支持一些第三方的解析器,如果我们不安装它,则Python会使用Python默认的解析器,lxml解析器更加强大,速度更快,推荐使用lxml解析器。

2 BeautifulSoup主要解析器及其优缺点

python ble设备 bleu python_python_02

3 创建BeautifulSoup对象

首先需要从bs4模块中引入BeautifulSoup库,然后创建一个html式字符串来代替网页html内,最后,以html式字符串为解析内容,以python内置的html.parser解析器,便可创建出BeautifulSoup对象,代码如下:

python ble设备 bleu python_解析器_03

其中,prettify方法是将内容格式化输出,输出如下:

python ble设备 bleu python_解析器_04

4 四大对象种类

BeautifulSoup能够将复杂的HTML转换成为一个复杂的树形结构,其中每个节点都是python对象,所有这些对象可以分类4大类,分别为:

TagNavigableStringBeautifulSoupComment(1)Tag

Tag就是HTML中的一个个标签,如a标签、title标签等,具体的tag就是一个包含内部内容的整个标签对,如下:

python ble设备 bleu python_python3网络编程库_05

输出为:

python ble设备 bleu python_python3网络编程库_06

是不是这样获取标签内容要比正则表达式方便多了,但其返回的是第一个符合要求的标签。

对于Tag,其有两个属性name和attrs,先看name:

python ble设备 bleu python_python_07

输出为:

python ble设备 bleu python_解析器_08

可见soup对象是一个文档,head标签的name属性值就是head,就是标签本身。

再看其attrs属性:

python ble设备 bleu python_HTML_09

输出为:

python ble设备 bleu python_python3网络编程库_10

可见,标签的attrs值是一个字典类型,具体就是该标签的所有属性值。

(2)NavigableString

利用标签的attrs参数可以获得标签的属性内容,那标签对内部的内容怎么获取那?其实非常简单,只需要在标签加.string就可以啦,如下:

python ble设备 bleu python_python_11

输出:

python ble设备 bleu python_python3网络编程库_12

可见.string值的类型是一个NavigableString对象。

(3)BeautifulSoup对象

BeautifulSoup对象表示的是一个文档的内容。大部分时候,可以把它当作Tag对象,是一个特殊的Tag,我们可以分别获取它的类型,名称,以及属性,如下:

python ble设备 bleu python_python_13

输出为:

python ble设备 bleu python_HTML_14

(4)Comment

Comment对象是一个特殊类型的NavigableString对象,其实输出的内容是不包括注释符号,以下面带注释的标签为例:

python ble设备 bleu python_python ble设备_15

输出为:

python ble设备 bleu python_python3网络编程库_16

可见a标签中包含的内容时一个注释,但.string的值确实不带有注释符号,其类型为Comment。

下篇待续...