BeautifulSoup引用方法:
1、form bs4 import BeautifulSoup
2、import bs4
BeautifulSoup的解释器:
bs4的html解释器 :
soup = BeautifulSoup('<html>date</html>','html.parser')、
lxml的html解释器:# 需要pip install lxml
soup = BeautifulSoup('<html>date</html>','lxml')
lxml的xml解释器:# 需要pip install lxml
soup = BeautifulSoup('<html>date</html>','xml')
html5lib的解释器:# 需要pip install html5lib
soup = BeautifulSoup('<html>date</html>','html5lib')
BeautifulSoup类的基本元素
Tag (标签):
soup.div # 返回页面中第一个div标签
Tag的name (名字):
soup.div.name # 返回页面中第一个div标签的名字
soup.div.parent.name # 返回页面中第一个div父亲标签的名字
soup.div.parent.parent.name # 返回页面中第一个div父亲标签的父亲标签的名字
Tag.attrs(属性):
tag = soup.div
tag.attrs['class'] # 获取div标签的class 属性值
Tag的NavigableString(非属性字符串):
tag.string # 获取div标签的非属性字符串
NavigableString可以跨越多个标签层次
例:
<p><b>我是非属性字符串</b></p>
tag.string输出为:我是非属性字符串
type(tag.string)显示类型为<class ‘bs4.element.NavigableString'>
Tag的Comment(注释):
例:
<b><!--我是非属性字符串></b>
tag.string输出为:我是非属性字符串
type(tag.string)显示类型为<class 'bs4.element.Comment'>
BeautifulSoup的遍历方法:
tag = soup.div
下行遍历:
tag.contents # 获取tag下的子节点列表
tag.children #获取tag的子节点的迭代类型
tag.descendants #获取tag的子孙节点的迭代类型
上行遍历:
tag.parent #获取tag节点的父标签
tag.parents #获取tag节点先辈标签的迭代类型
平行遍历(同一父节点的兄弟节点遍历)
tag.next_sibling #获取html文本顺序的下一个平行节点标签
tag.previous_sibling #获取html文本顺序的上一个平行节点标签
tag.next_siblings #获取html文本顺序的后续所有平行节点标签的迭代类型
tag.previous_siblings #获取html文本顺序的前序所有平行节点标签迭代类型
prettify()方法
为html文本标签及其内容增加‘\n’,可用于BeautifulSoup对象,也可用于标签
soup.prettify()
tag.a.prettify()
参考视频: