当前位置: 首页 > news >正文

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上海

http://www.jsqmd.com/news/275037/

相关文章:

  • Python毕设项目推荐-基于Python的网络小说分析系统设计与实现【附源码+文档,调试定制服务】
  • 2026必备!10个AI论文工具,专科生轻松搞定论文写作!
  • REST 不仅仅是 CRUD:从 Roy Fielding 六大原则重识 API 设计的“灵魂”
  • 【课程设计/毕业设计】基于大数据+django+mysql的学习资源推送系统的设计与实现基于Django+大数据的学习资源推送系统【附源码、数据库、万字文档】
  • 数字化做完却没有价值?问题可能不在技术,而在架构
  • 学霸同款8个AI论文网站,本科生搞定毕业论文!
  • 【滤波跟踪】基于拓展卡尔曼滤波的移动机器人 2D 定位系统融合里程计和 GPS数据实时估计机器人的位姿附matlab代码
  • 大数据毕设项目推荐-基于Django+大数据的学习资源推送系统课程视频、电子书籍【附源码+文档,调试定制服务】
  • 【毕业设计】基于Django+大数据的学习资源推送系统(源码+文档+远程调试,全bao定制等)
  • 优雅的分组贪心|线段树二分
  • 【课程设计/毕业设计】基于Django的蔬菜销售分析与预测可视化系统基于django的蔬菜销售分析与预测可视化系统【附源码、数据库、万字文档】
  • 大数据毕设项目:基于Django+大数据的学习资源推送系统(源码+文档,讲解、调试运行,定制等)
  • 【毕业设计】基于django的蔬菜销售分析与预测可视化系统(源码+文档+远程调试,全bao定制等)
  • 数据即服务在大数据领域的创新应用与实践
  • C# 判断 AVIF 图片是否是 HDR、动图的方法
  • 小白必看!AR开发从入门到实战全攻略
  • 大数据BI工具的分类预测模型
  • jetson orin(jetpack6.2)安装gazebo和gazebo_ros_pkgs
  • 第7天敏捷冲刺日志
  • struts2 代码执行 (CVE-2016-4438)
  • 无线网络仿真:无线网络基础_(4).天线与传播特性
  • 使用 tsfresh 和 AutoML 进行时间序列特征工程
  • xlsx知识点
  • SLAM(Simultaneous Localization and Mapping,同步定位与地图构建)是机器人、自动驾驶、增强现实等领域的核心技术
  • 团队作业4——项目冲刺
  • 122.Java深入学习之JVM三
  • Redis 重启数据恢复流程详解
  • 2025上半年大模型落地五大场景全解析:程序员必看,建议收藏!
  • 长廊
  • 2026-01-20 学期总结 - Sail-With