** 网络爬虫-BeautifulSoup库**
Beautifulsoup的安装
pip install beautifulsoup4
- Beautiful Soup库,也叫beautifulsoup4
或 bs4
约定引用方式如下,即主要是用BeautifulSoup
类
from bs4 import BeautifulSoup
soup = BeautifulSoup('<p>data</p>', 'html.parser')`
Beautiful Soup库的基本元素
*首先我们要了解html网页的构成,html网页主要是由标签页构成的,我们beautifulsoup库就是解析、遍历、维护“标签树”的功能库
BeautifulSoup类
BeautifulSoup对应一个HTML/XML文档的全部内容
soup = BeautifulSoup('<html>data</html>','html.parser')
其中html.parser是解析器
BeautifulSoup类的基本元素
-
…
Tag标签
任何存在于HTML语法中的标签都可以用soup.《tag》 访问获得
当HTML文档中存在多个相同tag对应内容时,soup.《tag返回第一个
每个《Tag》都有自己的名字,通过《tag》.name获取,字符串类型
基本元素有以下几种
基于bs4库的HTML内容遍历方法
- 在了解了bs4库的基本元素后,我们要来学习如何遍历html的元素
首先是下行遍历
遍历children节点的内容
for child in soup.body.children:
print(child
遍历子孙节点的全部内容
for child in soup.body.descendants:
print(child
上行遍历
- 遍历所有先辈节点,包括soup本身,所以要区别判断
for parent in soup.a.parent:
if parent is None:
print(parent)
else:
print(parent.name)
标签树的平行遍历
- 平行遍历发生在同一个父节点下的各节点间
for sibling in soup.a.next_sibling:
print(sibling)
for sibling in soup.a.previous_sibling:
print(sibling)
基于bs4库的HTML格式输出
我们获取内容后要输出内容,这个时候我们就需要用到bs4库的格式化内容输出,让HTML内容更加“友好”的显示
- 这里我们用到bs4库的prettify()方法
soup.prettify()
print(soup.prettify())
- prettify()为HTML文本<>及其内容增加更加’\n’
- prettify()可用于标签,方法:tag.prettify()