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主要解析器及其优缺点
3 创建BeautifulSoup对象
首先需要从bs4模块中引入BeautifulSoup库,然后创建一个html式字符串来代替网页html内,最后,以html式字符串为解析内容,以python内置的html.parser解析器,便可创建出BeautifulSoup对象,代码如下:
其中,prettify方法是将内容格式化输出,输出如下:
4 四大对象种类
BeautifulSoup能够将复杂的HTML转换成为一个复杂的树形结构,其中每个节点都是python对象,所有这些对象可以分类4大类,分别为:
TagNavigableStringBeautifulSoupComment(1)Tag
Tag就是HTML中的一个个标签,如a标签、title标签等,具体的tag就是一个包含内部内容的整个标签对,如下:
输出为:
是不是这样获取标签内容要比正则表达式方便多了,但其返回的是第一个符合要求的标签。
对于Tag,其有两个属性name和attrs,先看name:
输出为:
可见soup对象是一个文档,head标签的name属性值就是head,就是标签本身。
再看其attrs属性:
输出为:
可见,标签的attrs值是一个字典类型,具体就是该标签的所有属性值。
(2)NavigableString
利用标签的attrs参数可以获得标签的属性内容,那标签对内部的内容怎么获取那?其实非常简单,只需要在标签加.string就可以啦,如下:
输出:
可见.string值的类型是一个NavigableString对象。
(3)BeautifulSoup对象
BeautifulSoup对象表示的是一个文档的内容。大部分时候,可以把它当作Tag对象,是一个特殊的Tag,我们可以分别获取它的类型,名称,以及属性,如下:
输出为:
(4)Comment
Comment对象是一个特殊类型的NavigableString对象,其实输出的内容是不包括注释符号,以下面带注释的标签为例:
输出为:
可见a标签中包含的内容时一个注释,但.string的值确实不带有注释符号,其类型为Comment。
下篇待续...