BeautifulSoup类使用
基本元素 | 说明 |
Tag | 标签,最基本的信息组织单元,分别是<>和</>标明开头和结尾 |
Name | 标签的名字,<p></p>的名字是/'p',格式:<tag>.name |
Attributes | 标签的属性,字典形式组织,格式:<tag>.attrs |
NavigableString | 标签内非属性字符串,<></>中字符串,格式:<tag>.string |
Comment | 标签内字符串的注释部分,一种特殊的Comment类型 |
BeautifulSoup库的主要函数以及用法
1.创建BeautifulSoup库对象
import lxmlimport requestsfrom bs4 import BeautifulSoup
2.解析器的选择
python标准库 | BeautifulSoup(markup, "html.parser") | python内置的标准库 ,执行速度适中,文档容错能力强 | python2.7以及python3.2。2之前的文档容错能力差 |
lxml HTML解析器 | BeautifulSoup(markup, "lxml") | 速度快,文档容错能力强 | 需要安装C语言库需要安装C语言库 |
lxml XML解析器 | BeautifulSoup(markup, "xml") | 速度快,唯一支持XML的解析器 | 需要安装C语言库 |
html5lib | BeautifulSoup(markup, "html5lib") | 最好的容错性,以浏览器的方式解析文档,生成HTML5格式的文档 | 速度慢,不依赖外部扩展 |
3.遍历文档树
.contents 返回当前节点的所有子节点 返回类型是列表
.children 返回当前节点的所有子节点 返回类型是list生成器对象
.descendants 返回当前节点的所有子孙节点 返回类型是list生成器对象
.parent 返回当前节点的父亲节点 返回类型是节点Tag
.parents 返回当前节点的所有父亲节点 返回类型是list生成器对象
.next_sibling 返回当前节点的下一个兄弟节点
.previous_sibling 返回当前节点的所有兄弟节点 返回类型是list生成器对象
.next_element 返回当前节点的下一个Tag
.previous_sibling 返回当前节点的上一个节点
.next_siblings 返回当前节点后的所有兄弟节点
.previous_siblings 返回当前节点前的所有节点
.string 返回当前节点标签内的内容
如果当前Tag包含了多个子节点Tag就无法确定 string方法应该调用哪个节点的内容
.strings 返回多个内容 需要遍历获取
4.搜索文档
find_all(name, attrs, recursive, text, **kwargs)
name 参数
A 传字符串
B 正则表达式
C 传列表
D 传True
E 传方法
keyword参数
text 参数
5.CSS选择器
select 方法
1 通过标签名查找
2 通过类名查找
3 通过id名查找
4 组合查找
5 属性查找
select 返回的是list对象
获取标签的所有字符串使用get_text()