news 2026/4/17 17:41:47

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
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️⃣ 安装依赖

pipinstallbeautifulsoup4 pandas openpyxl lxml

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


三、核心代码实现

1️⃣ HTML 表格导出函数

frombs4importBeautifulSoupimportpandasaspddefhtml_table_to_xlsx(html_content,output_file):""" 将 HTML 中的表格提取并导出为 xlsx 文件。 :param html_content: HTML 文本内容 :param output_file: 导出的 xlsx 文件路径 """# 使用 BeautifulSoup 解析 HTMLsoup=BeautifulSoup(html_content,'html.parser')# 查找 HTML 中的所有表格tables=soup.find_all('table')ifnottables:print("HTML 中没有找到表格!")return# 逐个解析表格并导出到 Excelwithpd.ExcelWriter(output_file,engine='openpyxl')aswriter:fori,tableinenumerate(tables):# 将 HTML table 转为 DataFramedf=pd.read_html(str(table))[0]# 不同表格写入不同的 sheetsheet_name=f"Sheet{i+1}"df.to_excel(writer,index=False,sheet_name=sheet_name)print(f"表格已成功导出到{output_file}")

四、示例演示

1️⃣ 示例 HTML 内容

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

html_table_to_xlsx(html_content,"output.xlsx")

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

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

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/3/29 14:10:11

Flutter---Scrollable

概念Scrollable是Flutter中处理滚动的抽象类abstract class Scrollable extends StatefulWidget {final AxisDirection axisDirection;final ScrollController? controller;final ScrollPhysics? physics;final ViewportBuilder viewportBuilder; }层次结构Scrollable├── …

作者头像 李华
网站建设 2026/4/16 7:49:13

【计算机毕业设计案例】基于Django+大数据的学习资源推送系统基于Django的在线学习资源分享与推荐系统(程序+文档+讲解+定制)

java毕业设计-基于springboot的(源码LW部署文档全bao远程调试代码讲解等) 博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、…

作者头像 李华
网站建设 2026/4/8 23:10:12

‌大模型测试中的“反馈闭环”:用户投诉如何系统性反哺模型?

在生成式AI大规模落地的2026年&#xff0c;软件测试的边界已从“功能验证”扩展至“体验演化”。用户投诉不再是客服工单的终点&#xff0c;而是大模型持续进化的‌核心燃料‌。‌一、闭环核心逻辑&#xff1a;从“被动响应”到“主动进化”‌传统软件测试依赖预设用例与回归验…

作者头像 李华
网站建设 2026/4/17 15:37:15

大数据毕设项目推荐-基于Django+大数据的学习资源推送系统课程视频、电子书籍【附源码+文档,调试定制服务】

java毕业设计-基于springboot的(源码LW部署文档全bao远程调试代码讲解等) 博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、…

作者头像 李华
网站建设 2026/4/17 19:21:01

大数据毕设选题推荐:基于大数据技术的Django框架下的学习资源推送系统的设计与实现基于Django+大数据的学习资源推送系统【附源码、mysql、文档、调试+代码讲解+全bao等】

java毕业设计-基于springboot的(源码LW部署文档全bao远程调试代码讲解等) 博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、…

作者头像 李华
网站建设 2026/4/13 10:34:58

还在手动搞MySQL主从切换?升级后的一键工具让你告别加班!

话不多说&#xff0c;直接执行&#xff01; [rootmasterdb ~]# chmod x MYSQLSWTOOL.BIN [rootmasterdb ~]# ./MYSQLSWTOOL.BIN1、选择2&#xff0c;批量切换2、选择4&#xff0c;创建模板&#xff0c;开始执行这里看到切换成功了&#xff01; 3、选择3可以看主从的切换状态可以…

作者头像 李华