BautifulSoup简介
BeautifulSoup 简称 BS4(其中 4 表示版本号 4.x,之前的版本已经停止开发),是一个可以快速从 HTML 或 XML 文件中提取数据的第三方 Python 库。
BeautifulSoup 能够将 HTML 或 XML 转化为可定位的树形结构,并且提供一些简单的、python 式的函数用来处理导航、查找、修改功能,
BeautifulSoup 会自动将输入文档转换为 Unicode 编码,输出文档转换为 UTF-8 编码,如果文档没有指定一个编码方式,就需要说明一下原始编码方式。
BeautifulSoup 语法简单,使用方便,并且容易理解,不需要多少代码就可以写出一个完整的应用程序,使用BeautifulSoup 我们可以节省工作时间,提高解析效率。
BeautifulSoup 的优缺点:
解析器:
BeautifulSoup 在解析的时候实际上是依赖于解析器的,它除了支持 Python 标准库中的 HTML 解析器,还支持一些第三方的解析器比如 lxml。
BeautifulSoup 主要解析器和优缺点对比如下表:
解析器 | 使用方法 | 优点 | 缺点 |
---|---|---|---|
Python标准库 | BeautifulSoup (html文件, “html.parser”) | Python 的内置标准库、执行速度适中 、文档容错能力强 | Python 2.7.3 or 3.2.2 前的版本中文容错能力差 |
lxml HTML 解析器 | BeautifulSoup (html文件, “lxml”) | 速度快、文档容错能力强 | 需要安装 C 语言库 lxml |
lxml XML解析器 | 解析器 BeautifulSoup (html文件, “xml”) | 速度快、唯一支持 XML 的解析器 | 需要安装 C 语言库 lxml |
html5lib 解析器 | BeautifulSoup (html文件, “html5lib”) | 最好的容错性、以浏览器的方式解析文档 | 生成 HTML5 文档速度慢、不依赖外部扩展 |
lxml HTML 解析器有解析 HTML 和 XML 的功能,并且速度快,文档容错能力强,所以推荐使用,使用前要先安装lxml。
BautifulSoup 安装位置:Python安装目录的Scripts文件夹下
安装命令:pip install bs4
如图所示则下载成功:
待解析的 html 文件:
DOCTYPE html>
<html lang="en">
<head>
<title>
title>
head>
<body>
<p class="title"/>
<p class="story">
<a class="s1" href="www.baidu.com" id="l1">a>
<a class="s2" href="" id="l2">a>
<a class="s3" href="" id="l3">a>
p>
<p class="story"/>
body>
html>
使用实例:
BeaufulSoup 对象的初始化:
第一个参数:html文件,
第二个参数;解析器的类型, 使用 lxml 解析器
soup = BeautifulSoup(open('test.html',encoding='utf-8'),'lxml')
调用 soup 对 html 文件解析,提取文本内容:
# 获取第一个符合条件的标签属性
print(soup.p)
# 获取第一个符合条件的标签属性和属性值
print(soup.a.attrs)
执行结果:
<p class="title"></p>
{'class': ['s1'], 'href': 'www.baidu.com', 'id': 'l1'}