You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Pandas与BS4提取HTML主次表格并转换为CSV文件

使用Pandas与BeautifulSoup4提取HTML表格并转换为CSV

步骤1:安装依赖库

先确保安装好所需工具,打开终端执行:

pip install pandas beautifulsoup4

步骤2:解析HTML并提取表格

假设你已经拿到目标HTML内容(从本地文件或网络请求获取均可),用BeautifulSoup修复语法问题后提取表格:

from bs4 import BeautifulSoup
import pandas as pd

# 示例HTML内容
html_content = """
<table background-color="#00CED1" border="1">
<tr><th>STT</th><th>Há» và  tên</th><th>Sá» báo danh</th><th>Chuyên</th>&gt;<th>Äm Toán chung</th><th>Äm 
VÄn chung</th><th>Äm Chuyên</th><th>Tá»ng Äiá»m</th></tr>
<tr><td>1</td><td>Thái Bá Viá»t An</td><td>CO.0001</td><td>Toán</td><td>8.75</td><td>4.75</td><td>7.5</td><td>28.5</t
d></tr>
</table>
"""

# 解析HTML,修复错误标签
soup = BeautifulSoup(html_content, "html.parser")
tables = soup.find_all("table")

# 处理第一个表格(主数据)
if len(tables) >= 1:
    main_table = tables[0]
    df_main = pd.read_html(str(main_table), encoding="utf-8")[0]
    # 修正乱码表头(原内容为越南语编码异常)
    df_main.columns = ["STT", "Họ và tên", "Số báo danh", "Chuyên", "", "Điểm Toán chung", "Điểm Văn chung", "Điểm Chuyên", "Tổng điểm"]
    # 移除多余空列(由原HTML里的无效&gt;标签导致)
    df_main = df_main.drop(columns=[""])

# 处理第二个表格(若存在)
df_secondary = None
if len(tables) >= 2:
    secondary_table = tables[1]
    df_secondary = pd.read_html(str(secondary_table), encoding="utf-8")[0]
    # 若两个表格有共同关联字段(比如STT),可合并数据
    # final_df = pd.merge(df_main, df_secondary, on="STT", how="left")

# 确定最终输出的DataFrame
final_df = df_main if df_secondary is None else pd.merge(df_main, df_secondary, on="STT", how="left")

步骤3:保存为CSV文件

处理完成后将数据导出为CSV,避免乱码:

final_df.to_csv("ket_qua_thi.csv", index=False, encoding="utf-8-sig")

补充说明

  • 原HTML的乱码是编码不匹配导致的,通过指定UTF-8编码和手动修正表头可解决;
  • 若第二个表格结构与主表格无关联,也可单独保存为另一个CSV文件;
  • 合并表格时可根据实际需求选择how参数(left/inner/outer等),确保数据完整性。

内容的提问来源于stack exchange,提问作者user19419589

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 20:43:08