Beautiful Soup
解析、遍历、维护 XML 的库。
安装Beautiful Soup:pip install beautifulsoup4
使用Beautiful Soup:
from bs4 import BeautifulSoup
soup = BeautifulSoup('<p>data</p>', 'html.parse')
Beautiful Soup 的解析器,其它的不用了解,只要知道 html.parse
即可。
Beautiful Soup 基本元素:
基本元素 | 说明 |
---|---|
Tag | 标签 |
Name | 标签的名字, |
Attributes | 标签的属性, |
NavigableString | 标签内非属性字符串,<>…</>中的字符串 |
Comment | 标签内字符串的注释部分 |
标签树的下行遍历:
属性 | 说明 |
---|---|
.contents | 子节点列表,即tag的所有儿子节点 |
.children | 子节点的迭代类型,用于循环遍历儿子节点 |
.descendants | 子孙节点的迭代类型,包含所有子孙节点 |
标签树的平行遍历(在同一个父节点下):
属性 | 说明 |
---|---|
.next_sibling | 按HTML文本顺序的下一个平行节点标签 |
.previous_sibling | 按HTML文本顺序的上一个平行节点标签 |
.next_siblings | 按HTML文本顺序的后续所有平行节点标签 |
.previous_siblings | 按HTML文本顺序的前面所有平行节点标签 |
标签树的上行遍历:
.parent / .parents
信息提取方法:
方法 | 说明 | 属性 |
---|---|---|
<>.find_all(name, attrs, recursive, string, **kwargs) | 返回一个列表类型,存储查找的结果 | name: 对标签名称的检索字符串;attrs: 对标签属性值的检索字符串,可标注属性检索;recursive: 是否对子孙全部检索,默认为 True;string: 对<></>中字符串区域的检索字符串; |
等价于 |
||
soup(..) | 等价于 soup.find_all(..) | |
以下为扩展方法,参数同 find_all | ||
find() | 搜索且只返回一个结果 | |
find_parents() | 在先辈节点中搜索,返回列表类型 | |
find_parent() | 在先辈节点中搜索,返回字符串 | |
find_next_siblings() | 在后续平行节点汇总搜索,返回列表类型 | |
find_next_siblings() | 在后续平行节点汇总搜索,返回字符串 | |
find_previous_siblings() | 在前序平行节点汇总搜索,返回列表类型 | |
find_previous_sibling() | 在前序平行节点汇总搜索,返回字符串 |