共计 3295 个字符,预计需要花费 9 分钟才能阅读完成。
在数据分析与科学中,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 = 'https://example.com/data.html'
tables = pd.read_html(url)
print("从 URL 读取的第一个表格:n", tables[0])
4.4.2 从 HTML 文件读取表格 📂
接下来,我们从一个本地的 HTML 文件中读取表格数据。
tables = pd.read_html('data.html')
print("从本地 HTML 文件读取的第一个表格:n", tables[0])
4.5 进阶使用 🚀
4.5.1 使用正则表达式匹配特定表格 💨
我们可以使用正则表达式匹配特定的表格。
regex = 'Population.*'
tables = pd.read_html(url, match=regex)
print("匹配指定正则表达式的表格:n", tables[0])
4.5.2 使用特定的解析引擎 🌐
我们可以指定所使用的解析引擎,如’bs4’或’lxml’。
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
方法的基础使用方法和进阶技巧。
原文地址: 【Pandas】pandas.read_html 详解与实战应用:从 HTML 文档读取数据