在第一篇我们已经了解到Beautifulsoup也是作为一种在HTML页面提取信息的工具(然而这个模块比正则表达式要简单的多)
在接触Beautiful soup之前我们已经初步了解了如何将我们的Web页面保存在磁盘中,现在我们呢具体学习bs4的一些高端操作
beautifulsoup库是解析,遍历,维护“标签树”的功能库
同样该模块用pip installl beautifulsoup4 即可
以一段代码为例:
我们先导入库
#encoding:UTF-8
import requests
from bs4 import BeautifulSoup
s = BeautifulSoup(html,'lxml')
#创建 beautifulsoup 对象
s1 = BeautifulSoup(open('index.html'))
#用本地 HTML 文件来创建对象
看完这段代码可能不明白括号内的参数的含义,故我们先讲一下解析器
解析库 | 函数 | 优势 | 缺点 |
---|---|---|---|
html.parser | BeautifulSoup()参数为content,‘html.parser’ | python标准库解析器速度一般容错力强 | Python 2.7.3 or 3.2.2前的版本容错力差 |
lxml HTML | BeautifulSoup(content,‘lxml’) | 快速稳定 | 依赖三方库lxml |
lxml XML | 两种,参数分别为content,'lxml-xml’和content,‘xml’ | 快速,唯一支持XML解析的 | 依赖三方库lxml |
html5lib | BeautifulSoup(content,‘html5lib’) | 容错力最强,以浏览器的方式解析文档,生成有效的HTML5文件 | 速度慢,依赖其他三方库 |
e.g.
s1=BeautifulSoup(comtent,'html.parser')
s2=BeautifulSoup(comtent,'lxml')
s3=BeautifulSoup(comtent,'xml')
s4=BeautifulSoup(comtent,'html5lib')
打印输出,即使是相同的内容,我们将看到不同的结果
所以在实际情况中我们要选择合适的,是更偏重考虑规范和完整还是其性能
Beautiful Soup将HTML文档转换成一个复杂的树形结构,每个节点都是一个python对象,可归纳为4种(Name只是标签的名字,就不详细讲解了)
Tag
其类型为HTML中的标签
在对HTML有一定了解的同学应该知道标签有两个重要的属性name和attr,我们可以获得这两个属性值,同样也可以修改,删除等操作(代码帮助我们更好的理解)
BeautifulSoup
其类型为整个文档,大部分时候,可以把它当作 Tag 对象,是一个特殊的 Tag,我们可以分别获取它的类型,名称
故和Tag标签一样,我们可以打印其两个属性
Comment
其类型为HTML中注释的内容
第四篇爬虫的学习就到此结束啦!