Pandas怎么处理HTML数据?

文章导读
Previous Quiz Next Pandas 库提供了丰富的功能来处理各种格式的数据。其中一种格式是 HTML(HyperText Markup Language),这是用于构建网页内容的一种常用格式。HTML 文件可能包含表格数据,可以使用 Pandas 库提取
📋 目录
  1. 从 URL 读取 HTML 表格
  2. 从字符串读取 HTML 数据
  3. 从 HTML 文件处理多个表格
  4. 将 DataFrame 写入 HTML
A A

Python Pandas - 处理 HTML 数据



Previous
Quiz
Next

Pandas 库提供了丰富的功能来处理各种格式的数据。其中一种格式是 HTML(HyperText Markup Language),这是用于构建网页内容的一种常用格式。HTML 文件可能包含表格数据,可以使用 Pandas 库提取并分析这些数据。

HTML 表格是一种结构化格式,用于在网页中以行和列的形式表示表格数据。从 HTML 中提取这种表格数据可以通过使用 pandas.read_html() 函数实现。将 Pandas DataFrame 写回 HTML 表格也可以使用 DataFrame.to_html() 方法实现。

在本教程中,我们将学习如何使用 Pandas 处理 HTML 数据,包括读取 HTML 表格和将 Pandas DataFrame 写入 HTML 表格。

从 URL 读取 HTML 表格

pandas.read_html() 函数用于从 HTML 文件、字符串或 URL 中读取表格。它会自动解析 HTML 中的 <table> 元素,并返回一个 pandas.DataFrame 对象列表。

示例

以下是从 URL 中读取数据的基本示例,使用 pandas.read_html() 函数。

import pandas as pd

# 从 URL 读取 HTML 表格
url = "https://www.example.com"
tables = pd.read_html(url)

# 从 URL 访问第一个表格
df = tables[0]

# 显示结果 DataFrame
print('输出第一个 DataFrame:', df.head())

以上代码的输出如下 −

输出第一个 DataFrame:
ID NAME AGE ADDRESS SALARY
0 1 Ramesh 32 Ahmedabad 2000.0
1 2 Khilan 25 Delhi 1500.0
2 3 Kaushik 23 Kota 2000.0
3 4 Chaitali 25 Mumbai 6500.0
4 5 Hardik 27 Bhopal 8500.0

从字符串读取 HTML 数据

可以通过 Python 的 io.StringIO 模块直接从字符串读取 HTML 数据。

示例

以下示例演示了如何使用 StringIO 读取 HTML 字符串,而无需保存到文件。

import pandas as pd
from io import StringIO

# 创建 HTML 字符串
html_str = """
<table>
   <tr><th>C1</th><th>C2</th><th>C3</th></tr>
   <tr><td>a</td><td>b</td><td>c</td></tr>
   <tr><td>x</td><td>y</td><td>z</td></tr>
</table>
"""

# 读取 HTML 字符串
dfs = pd.read_html(StringIO(html_str))
print(dfs[0])

以上代码的输出如下 −

C1 C2 C3
0 a b c
1 x y z

示例

这是不使用 io.StringIO 模块读取 HTML 字符串的另一种方式。这里我们将 HTML 字符串保存到临时文件,然后使用 pandas.read_html() 函数读取。

import pandas as pd

# 创建 HTML 字符串
html_str = """
<table>
   <tr><th>C1</th><th>C2</th><th>C3</th></tr>
   <tr><td>a</td><td>b</td><td>c</td></tr>
   <tr><td>x</td><td>y</td><td>z</td></tr>
</table>
"""

# 保存到临时文件并读取
with open("temp.html", "w") as f:
    f.write(html_str)

df = pd.read_html("temp.html")[0]
print(df)

以上代码的输出如下 −

C1 C2 C3
0 a b c
1 x y z

从 HTML 文件处理多个表格

在读取包含多个表格的 HTML 文件时,我们可以使用 pandas.read_html() 函数的 match 参数来处理,读取包含特定文本的表格。

示例

以下示例使用 match 参数从包含多个表格的 HTML 文件中读取包含特定文本的表格。

import pandas as pd

# 从 SQL 教程读取表格
url = "https://www.example.com"
tables = pd.read_html(url, match='Field')

# 访问表格
df = tables[0]
print(df.head())

以上代码的输出如下 −

Field Type Null Key Default Extra
1 ID int(11) NO PRI NaN NaN
2 NAME varchar(20) NO NaN NaN NaN
3 AGE int(11) NO NaN NaN NaN
4 ADDRESS char(25) YES NaN NaN NaN
5 SALARY decimal(18,2) YES NaN NaN NaN

将 DataFrame 写入 HTML

Pandas DataFrame 对象可以使用 DataFrame.to_html() 方法转换为 HTML 表格。如果参数 buf 设置为 None,该方法会返回一个字符串。

示例

以下示例演示了如何使用 DataFrame.to_html() 方法将 Pandas DataFrame 写入 HTML 表格。

import pandas as pd

# 创建 DataFrame
df = pd.DataFrame([[1, 2], [3, 4]], columns=["A", "B"])

# 将 DataFrame 转换为 HTML 表格
html = df.to_html()

# 显示 HTML 字符串
print(html)

以上代码的输出如下 −

<table border="1" class="dataframe">
  <thead>
    <tr style="text-align: right;">
      <th></th>
      <th>A</th>
      <th>B</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <th>0</th>
      <td>1</td>
      <td>2</td>
    </tr>
    <tr>
      <th>1</th>
      <td>3</td>
      <td>4</td>
    </tr>
  </tbody>
</table>