在数据分析与科学中,HTML(超文本标记语言)是网络上广泛使用的数据展示格式。Pandas 提供了 read_html
函数,使你能够方便地从 HTML 文档中读取表格数据并转换为 DataFrame。这篇博客将详细讲解 read_html
方法,包括其作用、使用方法、参数详解、示例代码以及注意事项。
🧑 博主简介:现任阿里巴巴嵌入式技术专家,15年工作经验,深耕嵌入式+人工智能领域,精通嵌入式领域开发、技术管理、简历招聘面试。CSDN优质创作者,提供产品测评、学习辅导、简历面试辅导、毕设辅导、项目开发、C/C++/Java/Python/Linux/AI等方面的服务,如有需要请站内私信或者联系任意文章底部的的VX名片(ID:
gylzbk
)
💬 博主粉丝群介绍:① 群内初中生、高中生、本科生、研究生、博士生遍布,可互相学习,交流困惑。② 热榜top10的常客也在群里,也有数不清的万粉大佬,可以交流写作技巧,上榜经验,涨粉秘籍。③ 群内也有职场精英,大厂大佬,可交流技术、面试、找工作的经验。④ 进群免费赠送写作秘籍一份,助你由写作小白晋升为创作大佬。⑤ 进群赠送CSDN评论防封脚本,送真活跃粉丝,助你提升文章热度。有兴趣的加文末联系方式,备注自己的CSDN昵称,拉你进群,互相学习共同进步。
【Pandas】pandas.read_html详解与实战应用:从HTML文档读取数据
- 1.简介 📘
- 2.什么是read_html 📋
- 3.为什么使用read_html 🤔
- 4.read_html 方法详解 🔍
- 4.1方法签名 🖊️
- 4.2参数解释 📝
- 4.3返回值 📤
- 4.4 示例代码 👨💻
- 4.4.1 从 URL 读取 HTML 表格 💾
- 4.4.2 从 HTML 文件读取表格 📂
- 4.5 进阶使用 🚀
- 4.5.1 使用正则表达式匹配特定表格 💨
- 4.5.2 使用特定的解析引擎 🌐
- 4.5.3 解析过滤特定属性的表格 🗃️
- 5. 注意事项 ⚠️
- 6. 参考资料 📚
- 7.结论 🏁
1.简介 📘
在数据分析与科学中,HTML(超文本标记语言)是网络上广泛使用的数据展示格式。Pandas 提供了 read_html
函数,使你能够方便地从 HTML 文档中读取表格数据并转换为 DataFrame。这篇博客将详细讲解 read_html
方法,包括其作用、使用方法、参数详解、示例代码以及注意事项。
2.什么是read_html 📋
read_html
是 Pandas 提供的一个函数,用于从 HTML 文档中读取表格,并将其转换为 DataFrames。它可以处理本地 HTML 文件、URL 和 HTML 字符串。
3.为什么使用read_html 🤔
read_html
函数有以下几个优点:
- 便捷性:可以轻松从 HTML 文档中读取表格,无需复杂的解析和转换。
- 灵活性:支持多种 HTML 数据来源(文件、字符串、URL),并提供丰富的参数自定义解析行为。
- 高效性:解析速度快,能够自动处理大多数 HTML 表格。
4.read_html 方法详解 🔍
4.1方法签名 🖊️
pandas.read_html(io, match='.+', flavor=None, header=None, index_col=None, skiprows=None, attrs=None, parse_dates=False, thousands=None, encoding=None, decimal='.', converters=None, na_values=None, keep_default_na=True, displayed_only=True)
4.2参数解释 📝
-
io
: 类型:str, path object, file-like object 或包含 HTML 的字符串。说明:HTML 数据来源,可以是 URL、文件路径、类文件对象或 HTML 字符串。 -
match
: 类型:str 或 None,默认 ‘.+’。说明:正则表达式,用于匹配特定的表格。 -
flavor
: 类型:str 或 None,默认 None。说明:解析 HTML 的库(选项有 ‘bs4’ 或 ‘lxml’)。 -
header
: 类型:int 或 list of int,默认 None。说明:指定行号作为列名称,如果没有则设为 None。 -
index_col
: 类型:int、str 或 sequence of int / str,默认 None。说明:指定那一列作为行标签。 -
skiprows
: 类型:list-like, int 或 callable,默认 None。说明:忽略指定的行开始读取数据。 -
attrs
: 类型:dict 或 None,默认 None。说明:用于过滤具有特定 HTML 属性的表格。 -
parse_dates
: 类型:bool 或 list of int 或 names,默认 False。说明:解析日期字段。 -
thousands
: 类型:str 或 None,默认 None。说明:千位分隔符。 -
encoding
: 类型:str 或 None,默认 None。说明:指定文件编码。 -
decimal
: 类型:str,默认 ‘.’。说明:小数分隔符。 -
converters
: 类型:dict,默认 None。说明:为列指定转换函数。 -
na_values
: 类型:scalar, str, list-like, 或 dict,默认 None。说明:指定需要替换为 NaN 的字符串。 -
keep_default_na
: 类型:bool,默认 True。说明:是否使用默认的缺失值标记。 -
displayed_only
: 类型:bool,默认 True。说明:如果为 True,只解析目前在页面上被显示的表格。
4.3返回值 📤
返回值类型:list of DataFrame
返回一个包含从 HTML 读取的每个表格的 DataFrame 列表。
4.4 示例代码 👨💻
4.4.1 从 URL 读取 HTML 表格 💾
首先,我们从一个 URL 中读取 HTML 表格数据。
import pandas as pd
# 从 URL 读取 HTML 表格数据
url = 'https://example.com/data.html'
tables = pd.read_html(url)
# 查看第一个表格
print("从 URL 读取的第一个表格:\n", tables[0])
4.4.2 从 HTML 文件读取表格 📂
接下来,我们从一个本地的 HTML 文件中读取表格数据。
# 从本地 HTML 文件读取表格数据
tables = pd.read_html('data.html')
# 查看第一个表格
print("从本地 HTML 文件读取的第一个表格:\n", tables[0])
4.5 进阶使用 🚀
4.5.1 使用正则表达式匹配特定表格 💨
我们可以使用正则表达式匹配特定的表格。
# 从 URL 中读取匹配指定正则表达式的表格
regex = 'Population.*'
tables = pd.read_html(url, match=regex)
# 查看匹配的表格
print("匹配指定正则表达式的表格:\n", tables[0])
4.5.2 使用特定的解析引擎 🌐
我们可以指定所使用的解析引擎,如’bs4’或’lxml’。
# 使用 'lxml' 解析引擎读取 HTML 表格数据
tables = pd.read_html('data.html', flavor='lxml')
# 查看第一个表格
print("使用 'lxml' 解析引擎读取的第一个表格:\n", tables[0])
4.5.3 解析过滤特定属性的表格 🗃️
我们也可以解析仅匹配特定 HTML 属性的表格。
# 解析具有特定属性的表格
attrs = {'class': 'wikitable'}
tables = pd.read_html('data.html', attrs=attrs)
# 查看第一个表格
print("具有指定属性的表格:\n", tables[0])
5. 注意事项 ⚠️
- 数据一致性:HTML 表格可能未严格遵循结构标准,因此在解析时需要确保数据的一致性和完整性。
- 解析库选择:选择合适的解析库(如 ‘bs4’ 或 ‘lxml’)来提高解析性能和准确性。
- 复杂页面:对于包含复杂或动态生成内容的 HTML 页面,可能需要进行额外的预处理或使用特定库(如 Selenium)来获取 HTML 内容。
6. 参考资料 📚
- Pandas 官方文档—read_html
- Pandas 官方文档—IO 工具
7.结论 🏁
Pandas 的 read_html
方法是一个强大而灵活的工具,能高效地从 HTML 文档中读取表格数据并转换为 DataFrame。通过本文的详细讲解和示例,相信你已经掌握了 read_html
方法的基础使用方法和进阶技巧。