Python 实战:将 HTML 表格一键导出为 Excel(xlsx)

在数据采集、网页解析或自动化报表场景中,我们经常会遇到这样一个需求:

从 HTML 页面中提取表格数据,并导出为 Excel 文件

本文将使用 BeautifulSoup + Pandas + OpenPyXL ,实现一个通用、简单、可复用 的工具函数,把 HTML 中的 <table> 表格直接导出为 .xlsx 文件。


一、实现思路

整体流程非常清晰:

  1. 使用 BeautifulSoup 解析 HTML
  2. 查找页面中所有 <table> 标签
  3. 使用 pandas.read_html 将表格转为 DataFrame
  4. 使用 ExcelWriter 将多个表格写入 Excel 的不同 Sheet

二、环境准备

1️⃣ 安装依赖

bash 复制代码
pip install beautifulsoup4 pandas openpyxl lxml

lxmlpandas.read_html 推荐的解析器,性能更好。


三、核心代码实现

1️⃣ HTML 表格导出函数

python 复制代码
from bs4 import BeautifulSoup
import pandas as pd


def html_table_to_xlsx(html_content, output_file):
    """
    将 HTML 中的表格提取并导出为 xlsx 文件。

    :param html_content: HTML 文本内容
    :param output_file: 导出的 xlsx 文件路径
    """
    # 使用 BeautifulSoup 解析 HTML
    soup = BeautifulSoup(html_content, 'html.parser')

    # 查找 HTML 中的所有表格
    tables = soup.find_all('table')
    if not tables:
        print("HTML 中没有找到表格!")
        return

    # 逐个解析表格并导出到 Excel
    with pd.ExcelWriter(output_file, engine='openpyxl') as writer:
        for i, table in enumerate(tables):
            # 将 HTML table 转为 DataFrame
            df = pd.read_html(str(table))[0]

            # 不同表格写入不同的 sheet
            sheet_name = f"Sheet{i + 1}"
            df.to_excel(writer, index=False, sheet_name=sheet_name)

    print(f"表格已成功导出到 {output_file}")

四、示例演示

1️⃣ 示例 HTML 内容

python 复制代码
html_content = """
<html>
<head><title>测试表格</title></head>
<body>
    <table border="1">
        <tr>
            <th>姓名</th>
            <th>年龄</th>
            <th>城市</th>
        </tr>
        <tr>
            <td>张三</td>
            <td>28</td>
            <td>北京</td>
        </tr>
        <tr>
            <td>李四</td>
            <td>34</td>
            <td>上海</td>
        </tr>
    </table>
</body>
</html>
"""

2️⃣ 调用函数导出 Excel

python 复制代码
html_table_to_xlsx(html_content, "output.xlsx")

执行后,会在当前目录生成一个 output.xlsx 文件,内容如下:

姓名 年龄 城市
张三 28 北京
李四 34 上海

相关推荐
是个西兰花4 分钟前
网络基础1
linux·网络·c++·智能路由器
Cenxi12 分钟前
f-string 完全手册:60 题从入门到实战
python
2601_9622998816 分钟前
Python编写Linux命令指南
linux·python·开发·命令·指南
此冬歌咏19 分钟前
自动化服务器运维监控系统(python+shell)
linux·运维·服务器·开发语言·python·自动化
zhanghaha131421 分钟前
Python进阶教程:23_Scrapy 爬虫框架 零基础超详细教程
python·信息可视化
风景的人生24 分钟前
虚拟机ip连不上(怀疑是最开始虚拟机复制造成的网络冲突)
linux·运维·服务器
爱读源码的大都督37 分钟前
DeepSeek面试官问:生产RAG系统回答不准确,该如何定位和优化?这样回答,能让面试官当场给你Offer!
java·后端·python
Cx330❀38 分钟前
【Linux网络】深入TCP协议:从滑动窗口到拥塞控制与性能优化全景解析
linux·开发语言·网络·tcp/ip·ai·性能优化·ai编程
代码村新手1 小时前
Linux-将普通用户添加到系统信任文件(sudoers file)白名单中
linux
“AI国潮设计-小江”1 小时前
【Python实战】SDXL精准控制“普宁英歌舞×星空蛋糕”IP落地,附核心Prompt与商用授权思路
开发语言·人工智能·python·prompt·aigc