BeautifulSoup库
一.BeautifulSoup库的下载以及使用
1.下载
pip3 install beautifulsoup4
2.使用
improt bs4
二.BeautifulSoup库解析器
解析器 | 使用方法 | 优势 | 劣势 |
---|---|---|---|
bs4的HTML解析器 | BeautifulSoup(mk,’html.parser’) | Python 的内置标准库 执行速度适中 文档容错能力强 | Python 2.7.3 or 3.2.2)前 的版本中文档容错能力差 |
lxml的HTML解析器 | BeautifulSoup(mk,’lxml’) | 速度快 文档容错能力强 | 需要安装C语言库 |
lxml的XML解析器 | BeautifulSoup(mk,’xml’) | 速度快 唯一支持XML的解析器 | 需要安装C语言库 |
html5lib解析器 | BeautifulSoup(mk,’html5lib’) | 最好的容错性 以浏览器的方式解析文档 生成HTML5格式的文档 | 速度慢 |
条件 :
bs4的HTML解析器:安装bs4库
lxml的HTML解析器:pip3 install lxml
lxml的XML解析器:pip3 install lxml
html5lib解析器:pip3 install html5lib
三.BeautifulSoup类的5种元素
基本元素 | 简单说明 | 详细说明 |
---|---|---|
tag | 标签 | 分别用<>与</>来表示开头和结尾 |
name | 标签的名字 | 用法:<tag>.name输出为字符串的形式 |
attributes | 标签里的属性 | 用法:<tag>.attrs输出为字典的形式 |
navigablestring | 标签里的内容 | 用法:<tag>.string可以跨域多个标签层次 |
comment | 标签里面的注释 | 一种特殊的comment类型 |
- 获取标签方法,解析后的网页.标签的名字,如果
同时存在多个标签只取第一个
- 获取标签的父标签<tag>.parent
- <tag>表示标签
- 当标签为没有属性的时候,我们获得的是个空字典
四.标签树向下遍历
- .contens:子节点列表,不仅仅包括标签节点,也包括字符串节点例如\n
- .children:子节点的迭代器类型也包括字符串节点例如\n
- descendants:子孙节点的迭代类型也包括字符串节点例如\n
五.标签树向上遍历
- .parent:节点的父亲标签
- .parents:节点先辈标签的迭代器类型
注意:如果是html的父标签就是他自己,soup本身也是种特殊的标签的他的父标签是空
六.标签树平行遍历
- .next_sibling:下一个平行标签
- .previous_sibling:上一个平行标签
- .next_silbings:迭代器类型,向下所有标签
- .previous_silbling:迭代器类型,向上所有标签
注意:必须在同一个父节点下才有平行关系,平行遍历获得的对象不一定是标签,也可能是文本,如果上下没来就为空
七.prettify使得解析后页面更加好看
解析后的页面
prettify():会把解析的网页加上\n的文本文档,能使它打印变得更加好看