Clean Web Clipper 添加到 Chrome(免费)

适用人群

网页表格转成 Markdown,一路不散架

通用的 HTML 转 Markdown 转换器,偏偏在最要紧的表格上出错:单元格里带列表、链接或代码示例的那种。Clean Web Clipper 自己序列化表格,把单元格内容压平,而不是丢掉整行。

数字在哪一步丢了

你保存这个页面,就是为了那张表:价格档位、调用频率限制、数据保留期、数据结构定义。把剪藏粘进笔记,却发现一行被摊成了一整页,竖线位置全乱,还有一列悄悄和旁边那列并在了一起。原始数字还在身后的浏览器里,所以这种错误很容易被忽略,直到那个标签页被关掉。

反方向的错误同样要耗掉一个下午。很多网站仍然只是拿 table 来排版,一个把所有表格都当数据处理的转换器,会塞给你二十行伪装成数据集的导航。一种结果是花时间重敲数字,另一种是花时间删网格,哪一种都不是你坐下来要做的分析。

手工重敲还有第三种代价,要很久以后才显现。手敲进表格的数字不带来源、不带日期,也无从核对:六周后,没人说得清 D14 单元格里的数据保留期是一月还是三月从页面上抄来的,而页面此后又改过两次。价格、频率限制和配额的变动往往不会公告。表格上方带着来源网址和页面声明日期的剪藏,能回答这个问题;下个季度你再剪藏同一页面、比较两个文件时,它还能再回答一次。

哪些内容能完整转过来

一张统计表完整转为 GFM Markdown:分项、单位和负数都在原位stats.gov.cn:《中华人民共和国2024年国民经济和社会发展统计公报》表 2
---
title: "中华人民共和国2024年国民经济和社会发展统计公报"
source: "https://www.stats.gov.cn/sj/zxfb/202502/t20250228_1958817.html"
date: "2025-02-28"
extraction: "dom"
---

表2 2024年居民消费价格比上年涨跌幅度

单位:%

| 指标 | 全国 | 城市 | 农村 |
| --- | --- | --- | --- |
| 居民消费价格 | 0.2 | 0.2 | 0.3 |
| 其中:食品烟酒 | -0.1 | -0.1 | -0.1 |
| 衣着 | 1.4 | 1.6 | 0.9 |
| 居住 | 0.1 | 0.1 | 0.1 |
| 生活用品及服务 | 0.5 | 0.4 | 0.8 |
| 交通通信 | -1.9 | -2.0 | -1.5 |
| 教育文化娱乐 | 1.5 | 1.5 | 1.6 |
| 医疗保健 | 1.3 | 1.2 | 1.5 |
| 其他用品及服务 | 3.8 | 3.8 | 3.6 |

为表格做好设置

两项设置,加一个习惯。这个习惯(剪藏前先滚动到底)能找回的行,比任何设置都多。

  1. 点击扩展程序图标打开 设置,把保存位置指向工作数据所在的文件夹,例如放在使用这些数据的 notebook 或表格文件旁边的 data/sources
  2. 把点击图标保持为 打开窗口。表格是唯一值得在归档前看一眼的东西:列有没有对齐,在窗口里一眼可见,在文件列表里却完全看不出来。
  3. 把文件名模板设为 {date}-{domain}-{title},这样一月和四月保存的同一个价格页面会是两个文件,而且排在一起。
  4. 在 frontmatter 中打开 sourcedate。一张不带来源网址的表格,就是一组迟早有人得重新推算的数字。
  5. 剪藏前,把表格滚动到最底部。随滚动加载的行在加载之前并不存在于 DOM 中,而扩展程序读取的是你剪藏那一刻的 DOM。
  6. 如果周围的文章用不上,就在页面上选中表格,只剪藏选中内容。窗口顶部的开关会确认你看到的是选中内容,而不是整个页面。
  7. 为数字会变动的页面在日历里设一个定期剪藏:配额、价格、数据保留期。这批资料的价值在第二次剪藏,而不在第一次。

要反复使用的数字,这样设置

下面每一个值的目的都一样:六个月后再读这张表,它仍然说得清自己从哪里来、是什么时候的数据。

设置为什么在这里用这个值
点击图标时打开窗口列错位一眼就能看出,放进文件列表里就看不见了
保存位置文件夹 `data/sources`让剪藏和使用它们的 notebook 或表格文件放在一起
文件名模板`{date}-{domain}-{title}`同一页面的季度剪藏排在一起,而且永不重名
属性(frontmatter)打开 `source` 和 `date`这两行能把一组数字重新变成可引用的事实
图片跳过图表无论如何都只是图片链接,扩展程序不会从图片里读数字
选中内容选中表格,只剪藏选中内容一篇十二屏长的文章围着一张四行的表,放进数据文件夹就是噪音
重复剪藏每个季度剪藏同一页面数字后缀让两份都留下,diff 本身就是分析
一张参差不齐的两列表格转成键和值(原文为英文规范页面,释义译为中文)一个带定义网格的规范页面
**Content-Type**
: 资源的媒体类型。每个带请求体的请求都必须提供。

**Cache-Control**
: 请求和响应中用于缓存机制的指令。

**Retry-After**
: 以秒为单位的延迟,或一个 HTTP 日期,表示在此之后重试。

原网格的表头有合并单元格,最后一行里还嵌着一个列表。
照搬成 Markdown 表格会散架,转成键值对则不会。

三张表,三种结果

把价格表放进对比表格

四家供应商,四个价格页面,剪藏四次。每张表都转成 GFM 表格,套餐名、金额和限额都在原来的单元格里,上方带着来源网址,于是整张对比表拼好了,一个数字都没有重敲。

序列化器正是在这里派上用场:让通用转换器出错的,恰恰是带脚注标记、带功能列表或带代码示例的单元格。在 15 个表格的技术语料上,这里保住了 12 个,参与对比的每个引擎各保住 7 个。

同一页面,相隔一个季度

你在二月和五月各剪藏了一次某服务商的调用频率限制。第二个文件加了数字后缀。diff 显示,入门套餐的突发额度减半,最高档套餐的数据保留期延长,而这两项变化都没有在任何地方公告。

没有二月的文件,这个变化就无法证明,因为页面只显示当前状态,此前的数字在供应商公开的任何地方都找不到了。整个方法的前提,是第一次剪藏足够便宜,便宜到你在知道它重要之前就已经存下了。

一张没法当表格的网格

一个规范页面用两列网格定义了二十个请求头,表头有合并单元格,其中一行还嵌着列表。照搬成 Markdown 表格会塌掉;实际转出来的是加粗的键,值在下面,无论阅读还是搜索都没有损失。

这是有意的设计,而不是退而求其次的失败。参差不齐的两列表格,更多时候是套着网格外衣的定义列表,而不是数据;修一张散架的竖线表格,比读一份列表费劲得多。

和常见的搬表格方法比

这些方法都能把数字从页面上弄下来。区别在于数字带着什么一起过来,以及之后你还得做什么。

现在的做法得到什么代价是什么
手工重敲进表格正好是你要的那些单元格抄写错误,而且没有来源和日期的记录
复制粘贴进电子表格经常能得到网格,但不总是单元格里有列表或代码时就出错,排版网格也会被当成数据
给表格截图表格显示的样子无法计算、无法搜索,也没有来源说明
网站自带的 CSV 导出干净的数据,前提是有大多数页面不提供,而且导出的内容有时和页面显示的不一致
通用的 HTML 转 Markdown 转换器Markdown,而且快单元格里有列表或代码块,正是通用转换器出错的地方
Clean Web Clipper一张 GFM 表格,上方带来源和日期没有合并单元格,不导出 CSV,也不从图表图片里读数字

表格转得不对时

合并单元格没了

Markdown 没有合并单元格,所以 colspanrowspan 会被压平:内容保留,视觉上的合并不保留,因为这种格式表达不了。原本横跨三列的表头,文字会落在其中第一列。这是目标格式的特性,而不是转换的问题,任何 Markdown 表格都表达不了合并。

少了一半的行

扩展程序读取的是你剪藏那一刻的 DOM,所以随滚动加载的行(或者藏在“显示更多”按钮后面、分页显示的行),只要你没让它们加载出来,就还不存在。先滚动到底,展开能展开的,再剪藏。分页的表格,每一页剪藏一次,之后再合并;浏览器从未收到的行,没有别的办法能找回。

得到的是一张导航网格,不是数据

那是排版表格:纯粹用于定位的网格,许多老网站仍用它来做菜单和页头。这类表格会被拆开而不是转换,内容保留,网格不保留。如果导航网格还是以表格形式进了笔记,那是因为页面把它标记成了数据表格:标记说“这是数据”,扩展程序就照此处理。

表格变成了键和值

这是参差不齐的两列表格的处理路径。行不整齐的两列表格,通常是画成网格的定义列表,照搬成竖线表格只会得到一张散架的网格,而不是一张可读的表。内容是完整的:加粗的键,值在下面,顺序和原文一致。如果确实需要真正的表格,这些键值对可以机械地转回去。

格式本身的边界

Markdown 没有合并单元格,所以 colspanrowspan 会被压平:内容保留,视觉上的合并不保留,因为这种格式表达不了。嵌在单元格里的表格对所有工具都是难题,这个也不例外。它不会从图表图片里读出数字,也不导出 CSV 或 XLSX,输出就是 Markdown。而且它一次只转换一个页面:你当前所在的那个页面。

添加到 Chrome(免费)完全免费:无需账号,无需注册,没有限制。

常见问题

只用来排版的表格会怎样处理?
会被拆开。把定位网格照搬成 Markdown 表格只会产生噪音,所以保留内容,不保留网格。
支持合并单元格吗?
不支持。Markdown 没有合并单元格,所以会被压平。内容保留,视觉上的合并不保留,因为这种格式表达不了。
能只剪藏表格吗?
能。在页面上选中表格,只剪藏选中内容。窗口顶部的开关会显示你看到的是选中内容还是整个页面。
能导出 CSV 吗?
不能。输出是 Markdown。GFM 表格可以粘贴进大多数电子表格和 notebook 工具,但没有 CSV 或 XLSX 导出。
滚动时才加载更多行的表格怎么办?
扩展程序读取的是你剪藏那一刻的 DOM,所以只会保存页面实际渲染出来的行。请先滚动加载完其余的行。
能从图表里读出数字吗?
不能。图表是图片或 canvas,扩展程序不做任何图像处理。如果页面在图表下方用表格公布了底层数据(很多统计机构都这样做),那张表格可以正常剪藏。
文件会记录这些数字是哪天有效的吗?
它记录的是页面声明的内容:发布日期写进 frontmatter,你保存的日期可以通过 {date} 写进文件名。如果页面没有声明日期,字段就留空而不是填上一个值,至少这是一个诚实的空白,而不是一个错误的数字。
能剪藏嵌入式看板里的表格吗?
不能。嵌入式查看器或看板组件里显示的内容,属于页面中另一个独立的文档,剪藏外面的页面触及不到里面。如果那个工具自带导出功能或全页视图,请使用它们。
列的格式会保留吗?
列的顺序、表头行和单元格内容会保留。颜色、底纹、单元格宽度和字重不会保留,因为 Markdown 表格没法承载这些。原文中加粗的单元格仍然加粗;只是上了颜色的单元格,颜色不会保留。
表格嵌套在另一张表格里怎么办?
这对任何工具都是难题,这个也不例外:内层表格的内容会被压平进承载它的单元格。内容保留下来了,但变成文字而不是网格;嵌套混乱的排版,在依赖它之前值得用眼睛核对一遍。