BeautifulSoup4CSS选择器
和 lxml 一样,Beautiful Soup 也是python的一个HTML/XML的解析器,用它可以方便的从网页中提取数据
lxml 只会局部遍历,而Beautiful Soup 是基于HTML DOM的,会载入整个文档,解析整个DOM树,
因此时间和内存开销都会大很多,所以性能要低于lxml。 BeautifulSoup 用来解析 HTML 比较简单,
API非常人性化,支持CSS选择器、Python标准库中的HTML解析器,也支持 lxml 的 XML解析器。
Beautiful Soup 3 目前已经停止开发,推荐现在的项目使用Beautiful Soup 4。
使用 pip 安装即可: pip install beautifulsoup4 官方文档:http://beautifulsoup.readthedocs.io/zh_CN/v4.4.0
Beautiful Soup支持的解析器
解析器 | 使用方法 | 优势 |
---|---|---|
Python标准库 | BeautifulSoup(markup,‘html.parser’) | Python的内置标准库、执行速度适中、文档容错能力强 |
lxml HTML解析器 | BeautifulSoup(markup,‘lxml’) | 速度快、文档容错能力强 |
lxml XML解析器 | BeautifulSoup(markup,‘xml’) | 速度快、唯一支持XML的解析器 |
html5lib | BeautifulSoup(markup,‘html5lib’) | 最好的容错性、以浏览器的方式解析文档,生成HTML5的格式文档 |
四大对象种类
Beautiful Soup将复杂HTML文档转换成一个复杂的树形结构,每个节点都是Python对象,所有对象可以归纳为4种:
- Tag
- NavigableString
- BeautifulSoup
- Comment
1.Tag:
Tag 通俗点讲就是 HTML 中的一个个标签,例如:
<head><title>The Dormouse's story</title></head>
<a class="sister" href="http://example.com/elsie" id="link1"><!-- Elsie --></a>
<p class="title" name="dromouse"><b>The Dormouse's story</b>