Beautiful Soup 简称 BS4(其中 4 表示版本号)是一个 Python 第三方库,它可以从 HTML 或 XML 文档中快速地提取指定的数据。提供一些简单的、python 式的函数用来处理导航、搜索、修改分析树等功能。它是一个工具箱,通过解析文档为用户提供需要抓取的数据。
数据解析原理:
- 标签定位
- 提取标签、标签属性中存储的数据值
bs4数据解析原理:
- 1.实例化一个BeautifulSoup对象,并且将页面原码数据加载到该对象中
- 2.通过调用BeautifulSoup对象中相关的属性或方法进行标签定位和数据提取
bs4中的一些重要的属性
(1)根据标签名查找
- soup.a 只能找到第一个符合要求的标签
(2)获取属性
- soup.a.attrs 获取a所有的属性和属性值,返回一个字典
- soup.a.attrs['href'] 获取href属性
(3)获取其标签内的内容
- soup.a.string
- soup.a.text
- soup.a.get_text()
注意:如果标签还有标签,那么string获取到的结果为None,而其它两个,可以获取文本内容
以下是我自己在使用过程中总结的一些步骤,之后还会进行详细的讲解
- 把页面源代码交给BeautifulSoup进行处理, 生成bs对象 page = BeautifulSoup(resp.text, "html.parser") # 指定html解析器,如果不指定解析器不会报错,但是会爆红
- 从bs对象中查找数据
#find(标签, 属性=值)
#find_all(标签, 属性=值) - 在指定属性的过程中,例如class和id等是python的关键字,所以直接使用python关键字会发现报错,有两种解决方式:\ 第一种是在关键字后加_可解决问题,例如:class_ table = page.find("table", class_="hq_table")\ 第二种是使用attrs{},例如: table = page.find("table", attrs={"class": "hq_table"})
Bs4下载安装
由于 Bautiful Soup 是第三方库,因此需要单独下载,下载方式非常简单,执行以下命令即可安装:
pip install bs4
pip install bs4 -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install lxml -i https://pypi.tuna.tsinghua.edu.cn/simple
Bs4解析对象
#导入解析包
from bs4 import BeautifulSoup
#创建beautifulsoup解析对象
soup = BeautifulSoup(此处是我们需要使用的文件的名称, 'html.parser')
Bs4 库中定义了许多用于搜索的方法,find() 与 find_all() 是最为关键的两个方法
- find_all()\ find_all() 方法用来搜索当前 tag 的所有子节点,并判断这些节点是否符合过滤条件,最后以列表形式将符合条件的内容返回.\
- find()\ find() 方法与 find_all() 类似,不同之处在于 find_all() 会将文档中所有符合条件的结果返回,而 find() 仅返回一个符合条件的结果