一、 引言
BeautifulSoup是一个三方模块bs4中提供的进行HTML解析的类,可以认为是一个HTML解析工具箱,对HTML报文中的标签具有比较好的容错识别功能。阅读本节需要了解html相关的基础知识,如果这方面知识不足请参考《第14.2节 HTML知识简介》。
二、 BeautifulSoup安装、导入和创建对象
-
安装BeautifulSoup和lxml
BeautifulSoup是bs4模块的类,lxml是一款html文本解析器,在操作系统命令行方式执行安装bs4模块和lxml解析器模块的命令:
pip install bs4
pip install lxml -
加载BeautifulSoup所在模块
因为BeautifulSoup是bs4模块提供的一个类,一般导入时使用:
from bs4 import BeautifulSoup -
定义BeautifulSoup实例对象
BeautifulSoup类的构造方法提供6个参数并支持更多动态参数扩展,一般使用时构造BeautifulSoup类的实例时,传入前2个参数,第一个参数是要解析的html文本字符串或使用open函数打开的html文件,第二个参数是html解析器名字,参数值包括如”html.parser”,”lxml”,”html5lib”、“lxml-xml”。
BeautifulSoup支持Python标准库中的HTML解析器html.parser,还支持一些第三方的解析器如lxml、lxml-xml、html5lib,如果我们不安装第三方的解析器,则 Python 会使用 Python默认的标准库内置解析器html.parser,官方推荐使用lxml 解析器,因为lxml 解析器更加强大,支持xml解析,速度更快。
案例:
1)对文本字符串进行解析
>>> from bs4 import BeautifulSoup
>>> fp = open(r'c:\temp\s1.html',encoding='utf-8')
>>> buf = fp.read()
>>> soup = BeautifulSoup(buf, ' lxml ')
2)对文件对象直接进行解析
>>> from bs4 import BeautifulSoup
>>> fp = open(r'c:\temp\s1.html',encoding='utf-8')
>>> soup = BeautifulSoup(fp, 'lxml')
返回的实例对象soup可以通过print打印出html文本,为什么一个类可以通过print打印出来?这个请参考《第8.14节 Python类中内置方法__str__详解》
- 使用prettify查看解析报文对应的格式化后的html报文
>>> print(soup.prettify())
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<style type="text/css">
.textline{color:blue;}
</style>
<link href="https://blog.csdn.net/LaoYuanPython/article/details/95360624" rel="canonical"/>
<title>
BeautifulSoups使用方法 - 老猿Python - CSDN博客
</title>
</head>
<body>
<h1>
老猿Python
</h1>
<div>
<p class="textline" name="line1">
老猿Python首行
</p>
</div>
<div>
<h2>
老猿Python第二行
<a href="https://blog.csdn.net/LaoYuanPython">
</a>
</h2>
<h3>
<b>
老猿Python第三行
</b>
<a href="https://blog.csdn.net/LaoYuanPython">
</a>
</h3>
</div>
</body>
</html>
>>>
本节介绍了使用BeautifulSoup的安装、导入和创建对象的过程,并可以将对应html报文通过BeautifulSoup对象展示和格式化。后续《第14.9节 Python中使用urllib.request+BeautifulSoup获取url访问的基本信息》将介绍相关数据的基本使用方法。
老猿Python,跟老猿学Python!
博客地址:https://blog.csdn.net/LaoYuanPython
老猿Python博客文章目录:https://blog.csdn.net/LaoYuanPython/article/details/98245036
请大家多多支持,点赞、评论和加关注!谢谢!