BS4模块-Beautiful Soup
什么是BS4?
是一个可以从HTML或XML文件中提取数据的Python库.它能够通过你喜欢的转换器实现惯用的文档导航,查找,修改文档的方式.Beautiful Soup会帮你节省数小时甚至数天的工作时间.
BS4的安装
pip install beautifulsoup4
BS4的导入
from bs4 import BeautifulSoup
BS4的解析器
解析器 | 使用方法 | 优势 | 劣势 |
---|---|---|---|
Python标准库 | BeautifulSoup(markup, “html.parser”) | Python的内置标准库,执行速度快,文档容错能力强 | Python 2.7.3 or 3.2.2)前 的版本中文档容错能力差 |
lxml HTML 解析器 | BeautifulSoup(markup, “lxml”) | 速度快,文档容错能力强 | 需要安装C语言库 |
lxml XML 解析器 | BeautifulSoup(markup, [“lxml-xml”]) | 速度快,唯一支持xml的解析器 | 需要安装C语言库 |
html5lib | BeautifulSoup(markup, “html5lib”) | 最好的容错性,以浏览器的方式 | 速度慢,不依赖外部拓展 |
在官方文档中推荐使用lxml作为解析器,因为效率更高。在Python2.7.3之前的版本和Python3中3.2.2之前的版本,必须安装lxml或html5lib, 因为那些Python版本的标准库中内置的HTML解析方法不够稳定.
创建BeautifulSoup对象
#导入BS4的包
from bs4 import BeautifulSoup
#创建BeautifulSoup对象
#这里的html是爬取到的网页,"lxml"指的是选择器
soup = BeautifulSoup(html,"lxml")
BS中的四大对象
对象 | 属性 |
---|---|
Tag | 是html中的一个标签,用BeautifulSoup就能解析出来Tag的具体内容,具体的格式为soup.name,其中name是html下的标签。 |
BeautifulSoup | 整个html文本对象,可当作Tag对象. |
NavigableString | 标签内的文本对象 |
Comment | 是一个特殊的NavigableString对象,如果html标签内存在注释,那么它可以过滤掉注释符号保留注释文本 |
Tag属性的介绍
Tag对象:
from bs4 import BeautifulSoup
#创建一段html标签
html = '''
<b class="boldest">Extremely bold</b>
<ul>
<li>li</li>
</ul>
'''
soup = BeautifulSoup(html,"lxml")
#创建一个tag对象
tag