摘要:Beautiful Soup库安装 pip install beautifulsoup4 测试: import requestsr = requests.get()demo = r.textform bs4 import BeautifulSoup #从bs4中引入BeautifulSoup类soup = BeautifulSoup(demo, html.parser) Beautiful Soup库是解析、遍
Beautiful Soup库安装
pip install beautifulsoup4测试:
import requestsr = requests.get("")demo = r.textform bs4 import BeautifulSoup #从bs4中引入BeautifulSoup类soup = BeautifulSoup(demo, "html.parser")Beautiful Soup库是解析、遍历、维护标签树的功能库
Beautiful Soup库的基本元素
Beautiful Soup库的引用
Beautiful Soup库,也叫beautifulsoup4或bs4.
from bs4 import BeautifulSoupsoup = BeautifulSoup(demo,"html.parser")Beautiful Soup类的基本元素
基于bs4库的HTML内容遍历方法
下行遍历
#遍历儿子节点for child in soup.body.childrenprint(child)#遍历子孙节点for child in soup.body.descendantsprint(child)上行遍历
soup = BeautifulSoup(demo,"html.parser")for parent in soup.a.parents: if parent is None: print(parent) else: print(parent.name)#输出结果#p#body#html#[document]平行遍历
平行遍历发生在同一个父节点下的各节点间。
下一个获取的可能是字符串类型,不一定是下一个节点。
#遍历后续节点for sibling in soup.a.next_siblingsprint(sibling)#遍历前续节点for sibling in soup.a.previous_siblingsprint(sibling)基于bs4库的HTML格式化和编码
格式化方法:.prettify()
soup = BeautifulSoup(demo,"html.parser")print(soup.a.prettify())编码:默认utf-8
soup = BeautifulSoup("<p中文</p","html.parser")soup.p.string#'中文'print(soup.p.prettify())#<p# 中文#</p3.信息组织与提取
信息标记的三种形式
标记后的信息可形成信息组织结构,增加了信息的维度;
标记后的信息可用于通信、存储和展示;
标记的结构和信息一样具有重要价值;
标记后的信息有利于程序的理解和运用。
XML: eXtensible Matkup Language
最早的通用信息标记语言,可扩展性好,但繁琐。
用于Internet上的信息交互和传递。
<name...</name<name/<!-- --JSON: JAVAScript Object Notation
信息有类型,适合程序处理(js),较XML简洁。
用于移动应用云端和节点的信息通信,无注释。
#有类型的键值对表示信息的标记形式"key":"value""key":["value1","value2"]"key":{"subkey":"subvalue"}YAMl: YAML Aint Markup Language
信息无类型,文本信息比例最高,可读性好。
用于各类系统的配置文件,有注释易读。
#无类型的键值对表示信息的标记形式key : "value"key : #comment-value1-value2key :subkey : subvalue信息提取的一般方法
方法一:完整解析信息的标记形式,再提取关键信息。
XML JSON YAML
需要标记解析器,傲风 潇湘书院,例如bs4库的标签树遍历。
优点:信息解析准确
缺点:提取过程繁琐,李望知声明全文如下,过程慢
方法二:无视标记形式,直接搜索关键信息
搜索
对信息的文本查找函数即可。
优点:提取过程简洁,速度较快
缺点:提取过程准确性与信息内容相关
融合方法:结合形式解析与搜索方法,提取关键信息
XML JSON YAML 搜索
需要标记解析器及文本查找函数。
实例:提取HTML中所有URL链接
思路:
1、搜索到所有 标签
2、解析 标签格式,提取href后的链接内容
form bs4 import BeautifulSoupsoup = BeautifulSoup(demo,"html.parser")for link in soup.find_all('a'):print(link.get('href'))