HTML 表格转 JSON — 在浏览器中将 HTML 表格转换为 JSON
从 HTML 表格中提取数据并转为结构化 JSON。自动检测表头、支持嵌套表格,全部在浏览器中完成。无上传、无限制。
HTML Table to JSON
Extract data from HTML tables and convert to JSON. Auto-detects <thead> headers and <tbody> rows. Works entirely in your browser.
HTML 表格是 Web 上最接近「通用数据网格」的东西:每个电子表格都能导出它,每个邮件客户端都会渲染它,每个 CMS 都会存储它,每个浏览器都以可预期的形态绘制它。JSON 则是现代软件最接近「通用数据交换格式」的东西:每个 Web API 返回它,每门现代语言原生解析它,每个数据库都能导入它。在两者之间相互转换,是从网页中抽取表格数据并交给程序化下游(数据库、电子表格、图表库或测试夹具)的标准做法。
转换并不像看起来那么简单。HTML 表格自带一套丰富的结构特性 —— <thead>、<tbody>、<tfoot>、<th>、colspan、rowspan、scoped 属性 —— JSON 输出需要以某种刻意的方式把这些特性拍平或保留下来。一种朴素的转换(只是遍历行、把单元格文本输出出来)会丢掉表头结构,并把合并单元格落在不可预期的位置。一次合格的转换应该检测表头行、选择合理的输出形态,并把合并单元格视为「有意义的信号」而不是「解析错误」。本工具把这三件事都覆盖到了:表头检测、输出形态选择、合并单元格策略都以设置项暴露出来,而不是被焊死在单一模式里。
最后交接时的一个建议:如果目标是 JavaScript 数据管道(图表库、数据网格组件、测试夹具),「对象数组」是最自然的形态 —— 每行变成一个有类型的对象,下游代码可以直接遍历。如果目标是电子表格或 CSV 导入,「二维数组」或 CSV 转换器更合适 —— 在电子表格里导入 JSON 对象需要额外的导入步骤。如果源是一张包含合并表头、多级行、或承载语义的视觉样式的复杂表格,那么没有任何自动化转换能完美保留其语义 —— 人工复核是流程的一部分。
使用方法
粘贴 HTML 表格
粘贴完整的 `<table>...</table>` 块,或包含一个或多个表格的 HTML 片段。解析器会自动处理 `<thead>`、`<tbody>`、`<th>`、`colspan` 和 `rowspan`。
选择输出格式
可在「对象数组」(每行是一个以表头为键的 JSON 对象)、「二维数组」(不依赖表头)或「按列索引的单一对象」之间选择。默认对第一个表格使用对象数组。
复制或下载 JSON
把 JSON 复制到剪贴板,或下载为 .json 文件。如果输入包含多个表格,在「结构化」模式下,每个表格会成为输出对象中的一个顶层键。
常见问题
如何处理合并单元格?
带 `colspan` 或 `rowspan` 的单元格,会在它出现的位置输出一次值,在被跨越的位置输出空字符串。对于那些合并单元格本身承载语义(例如一个跨多行数据行的分类)的表格,需要在输出后再做后处理,把空位置填充为上一个非空值。
如果存在多个表格,会默认选第一个吗?
没有表头行的表格会怎样?
会去除内联样式和类名吗?
会 —— 只提取单元格的文本内容。内联样式、class、id 以及其他属性都会被丢弃。如果你需要保留这些属性(例如做样式感知的迁移),通用的 HTML-to-JSON 提取器才是合适的工具。
能处理嵌套表格吗?
默认会把嵌套表格扁平化 —— 内部表格的文本会作为该单元格下的子对象,或序列化为 HTML 字符串。切换到「保留嵌套」模式可以把内层表格保留为单元格内的嵌套 JSON 数组,便于复杂的数据导出。
限制说明
- 不基于 CSS 提取工具只从 HTML 标记读取表格结构。用 CSS Grid 或 flexbox 排版出来的「表格」(语义上是带样式的 `<div>`)不会被识别 —— 请先粘贴底层标记,或把布局转换回真正的 `<table>`。
- 不提取图像图像单元格会被转换为对应的 alt 文本,若没有 alt 则转为空字符串。如果表格中包含需要图像数据的图表或缩略图,请用支持嵌入图像的工具对输出再做后处理。
- 单一编码假设解析器默认输入为 UTF-8。以 Latin-1 或 Windows-1252 提供的 HTML 页面可能出现乱码;如果源文件中看到字符损坏,先过一遍字符集检测工具。
平台说明
- macOS
- Safari 的阅读器视图能提取表格内容但会丢失结构。当源是邮件、CMS 导出或抓取页面中的 HTML 表格,需要把结构落地为可解析 JSON 时,浏览器工具是更合适的选择。
- Windows
- Microsoft Edge 的「另存为 PDF」或「打印为 PDF」会丢失表格语义。当源是邮件或 CMS 导出的 HTML、目标是数据管道中的 JSON 文件时,浏览器工具是更合适的选择。
- Linux
- 命令行场景下,`python3 -c 'from bs4 import BeautifulSoup; ...'` 可以完成提取。但当源是聊天、邮件或文档页中粘贴过来的 HTML,重打到 Python 里并不实际时,浏览器工具是更合适的选择。
- Web
- 完全在浏览器端运行,页面加载完成后即可离线使用。在命令行工具或 Python 不可用的受限环境中,做临时提取很方便。