环境
Python 3.7.6
BeautifulSoup 4.8.2
基础
安装
pip install BeautifulSoup4
引入
from bs4 import BeautifulSoup
解析器
html.parser: 自带
lxml: pip install lxml
xml: pip install xlml
html5lib: pip install html5lib
基本元素
Tag: 标签,<html>...</html>,tag = <html>...</html>
Name: 标签名字,<p>...<p>,tag.name = p
Attributest: 标签的属性,<a href='test'>,tag.attrs = ['href': 'test'],tag.attrs['href'] = test
NavigableString: 标签内的非属性字符串,标签中的字符串,<p>test</p>,tag.string = test
Comment: 标签内字符串的注释部分,有坑后面补
遍历方式
下行遍历
.contents,子节点,列表类型,一子节点的所有信息将被存为列表中的一个元素,换行符,字符串等独立代码均占一个元素
.children,子节点,迭代类型,可循环遍历子节点信息
.descendants,子孙节点,迭代类型,可循环遍历子孙节点信息
上行遍历
.parent,父节点,列表类型,
.parents,先辈节点,迭代类型,可循环遍历所有先辈节点信息,soup的先辈节点为None
平行(兄弟)遍历
同一父节点下才可
.next_sibling,下一个平行节点标签
.previous_sibling,上一个平行节点标签
.next_siblings,后面的所有平行节点标签,迭代类型
.previous_siblings,前面的所有平行节点标签,迭代类型
方法
.prettify(),增加换行符,配合print(),可更直观显示html代码
使用
from bs4 import BeautifulSoup
html = '<html><p class="test" id="p1">测试文本<a href="https://yudelei.com">雨的泪</a></p></html>'
soup = BeautifulSoup(html, 'html.parser')
soup.name #
soup.p.name #
soup.p.string #
soup.string #
soup.p.parent #