Beautiful soup使用模板:
from bs4 import BeautifulSoup
soup=BeautifulSoup(‘<p>data</p>’,"html.parser")
soup=BeautifulSoup(open(“D://demo.html”),"html.parser")
Beautiful Soup库的基本元素
解析html和xml文件的功能库
每对<>是一个标签,存在上下游关系,组成一棵标签树
Beautiful Soup库是解析、遍历、维护“标签树”的功能库
bs4的HTML解析器 | BeautifulSoup(mk,’html.parser,) | 安装bs4库 |
---|---|---|
lxml的HTML解析器 | BeautifulSoup(mk,’lxml’) | pip install lxml |
lxml的XML解析器 | BeautifulSoup(mk,’xml’) | pip install lxml |
html5lib的解析器 | BeautifulSoup(mk,’html5lib’) | pip inatall html5lib |
Beautiful Soup五种基本元素
① Tag 标签,最基本的信息组织单元,<>开始,</>结束
② Name:标签的名字,ex:<>…</>的<>和</>为
和
,则名字为‘p’,格式:.name③ Attributes:标签的 属性,字典形式组织,格式:.attrs
④ NavigableString: 标签内非属性字符串,<>…</>中的字符串,格式:.string
⑤ Comment: 标签内字符串的注释部分,一种特殊的Comment类型
当有多个相同的tag标签时,使用soup.tag,只能返回其中第一个
NavigableString是可以跨越多个标签层次的
基于bs4库的HTML内容遍历方法
标签树的下行遍历
.contents 返回列表
.children 遍历儿子结点,返回迭代类型
.descendants 遍历子孙结点,返回迭代类型
标签树的上行遍历
.parent 打印父辈
.parents 打印先辈
标签树的平行遍历 必须发生在同一个结点之下,获得的下一个结点不一定是标签类型
.next_sibling
.previous_sibling
.next_siblings 返回迭代类型
.previous_siblings 返回迭代类型
基于bs4库的HTML格式输出:prettify可以让html文本的标签以及内容分行显示
信息标记的三种形式
XML JSON YAML
XML:尖括号标签表达信息 扩展性好,繁琐 Internet的信息交互与传递
JSON:有类型键值对 适合程序处理,简洁 移动应用云端和节点的信息通信,无注释
“key”:”value”
“key”:[“value1”,”value2”]
“key”:{“subkey”:”subvalue”}
YMAL:无类型键值对 文本信息,可读性好 各类系统的配置文件,有注释易读
缩进—所属关系 -:表示并列关系 |:整块数据 #:注释
信息提取的一般方法
标记+信息
结合形式解析与搜索的方法,提取关键信息
基于bs4库的HTML内容查找方法
<>.find_all(name,attrs,recursive,string,**kwargs)
soup(…)<=>soup.find_all(…)