UltKit

HTML转JSON在线转换

从保存的网页中提取表格,转换成代码可以直接遍历的JSON。表头单元格决定键名,表格的每一行都会成为数组中的一个对象。

数据转换器

或将CSV, TSV, TXT … 文件拖放到此处 ·

单个文件最大 95 MB· 最多 20 个文件· 30 分钟后删除

输出

文件在我们的服务器上处理,并在 30 分钟后删除。

使用方法

  1. 1

    保存网页或表格

    在浏览器中按 Ctrl+S(Mac 上按 Cmd+S)保存 HTML 文件,或者从开发者工具中复制表格的标记代码,存成 .html 文件。最多可上传 20 个文件,每个不超过 95 MB。

  2. 2

    选择JSON结构

    已默认选择对象数组。在高级设置下,可将 JSON 结构切换为数组的数组,得到更紧凑的文件;关闭格式化输出则得到单行内容。

  3. 3

    转换并使用数据

    点击转换为 JSON,下载文件,然后在 JavaScript 中用 JSON.parse、在 Python 中用 json.load 或在任意 API 客户端中加载。

保存网页,上传 .html 文件,表格的每一行就会变成以表头单元格为键的 JSON 对象。

什么时候需要把网页表格转成JSON

很多有用的数据只以 HTML 表格的形式存在:汇率页面、体育联赛积分榜、内网生成却不让下载的报表、列出所有服务器的状态页。浏览器能很好地显示它们,但要做图表的前端开发者,或需要测试数据的测试人员,想要的是对象数组。

常见的做法是写爬虫:抓取页面,用 Beautiful Soup 或 Cheerio 解析,遍历各行,再映射单元格。页面每天都在变化时,这样做是值得的。如果只是一次性用到的表格,上传已保存的页面更快,也不需要维护任何东西。

HTML表格转JSON示例

表头为 City 和 Founded 的输入表格,以及对象数组形式的输出
<table>
  <tr><th>City</th><th>Founded</th></tr>
  <tr><td>Porto</td><td>1123</td></tr>
  <tr><td>Graz</td><td>1128</td></tr>
</table>

[
  { "City": "Porto", "Founded": 1123 },
  { "City": "Graz", "Founded": 1128 }
]

转换会保留和丢弃哪些内容

  • 保留:单元格文本、作为键的表头行以及行的顺序
  • 舍弃:CSS、行内样式、类名以及表格之外的页面内容
  • 舍弃:单元格中的图片和图标,它们没有文本值
  • 链接单元格保留可见文字,不保留背后的网址
  • 单元格首尾的空格会被去除首尾空格去掉
  • 输出为 UTF-8 编码,这是 RFC 8259 对系统间交换的 JSON 的要求

HTML转JSON的限制

支持已保存的网页
.html .htm
每批页面数
20
每个上传文件
95 MB
之后文件会被删除
30 分钟

HTML与JSON对比

HTML

超文本标记语言

HTML 是网页的标记语言,由 Tim Berners-Lee 在 20 世纪 90 年代初提出,现由 WHATWG 作为活标准维护。HTML 文件描述标题、段落、链接、表格、图片和表单,样式通常由 CSS 提供。所有浏览器都能渲染它,它也用于邮件模板和保存的网页。单个 HTML 文件往往依赖外部图片和样式表,单独移动后可能显示异常。

压缩方式
–
透明度
–
动画
–
发布年份
1993 · Tim Berners-Lee; maintained by WHATWG
HTML 转换器

JSON

JavaScript 对象表示法

JSON 是一种轻量级结构化数据文本格式,由 Douglas Crockford 在 21 世纪初推广,并被标准化为 RFC 8259 和 ECMA-404。它用简单易读的语法表示对象、数组、字符串、数字、布尔值和 null。它是网络 API、配置文件以及几乎所有编程语言之间数据交换的默认格式。它没有内置注释、日期或模式,嵌套很深的大文件没有查看器就很难阅读。

压缩方式
–
透明度
–
动画
–
发布年份
2001 · Douglas Crockford
JSON 转换器

报表页面、内网或公开统计网站上,原本为人阅读而发布的表格,需要交给脚本、图表库或 API 测试使用时,就需要把 HTML 转成 JSON。

这两种格式源自不同的传统。HTML 由 Tim Berners-Lee 于 1991 年首次描述,现由 WHATWG 作为活标准维护,用来标记文档以便显示。JSON 由 Douglas Crockford 提出,并被标准化为 RFC 8259 和 ECMA-404,只承载数据。从前者转到后者,主要就是丢掉呈现相关的内容,所以结果通常比保存的网页小得多。如果表格来自 XML 数据源而不是网页,可以用 XML 转 JSON 完成对应的转换。

HTML转JSON常见问题

转换器会读取整个网页还是只读取表格?

只转换表格标记:table、tr、th 和 td 元素中的行与单元格。导航菜单、段落以及用 div 元素搭建的卡片布局不属于表格数据,不会被转成 JSON。

JSON的键名取自哪一行?

表头行,通常是表格顶部的 th 单元格。开启首行为表头后,表头文字会成为下方每个值的键,因此表头为 Population 的那一列,会在每个对象中生成 "Population": "…"。

合并单元格(colspan和rowspan)如何处理?

合并单元格占据多个网格位置,但只有一个值。这个值只会出现在第一个位置,所以转换后请检查跨列的部分;如果表格依赖合并表头,请在代码中补全空缺。

为什么JSON里的数字带有逗号或脚注标记?

网页表格是写给读者看的,单元格里可能是 1,204,000 或 8.3[2]。像 1123 这样的纯数字会变成 JSON 数字,而上述单元格不是有效数字,会保留为字符串;做运算之前,请先在代码中去掉分隔符和脚注标记。

从网站抓取表格是否允许?

这取决于网站的使用条款和数据本身,与文件格式无关。公开统计数据和你自己导出的报表通常没有问题;复用他人内容之前,请先查看相关条款。

能否导出为电子表格而不是JSON?

可以。HTML 转 CSV 会把同一个表格写成逗号分隔的行,可在 Excel、Google Sheets 或 Numbers 中打开。