MDUtil

HTML 转 Markdown

粘贴网页、邮件或 CMS 里的 HTML,得到干净的 Markdown,标题、列表、表格、代码和链接都保留,内容不会上传。

HTML

646 个字符20 行
# 野外记录快速上手

野外记录会把你的观察结果**离线**保存,联网后再同步。详细说明见[同步指南](/docs/sync)。

![记录页面](/img/notes.png)

## 安装

```bash
npm install field-notes
```

## 选项

| 选项      | 默认值 |
| --------- | -----: |
| `sync`    |   true |
| `quality` |    0.8 |

- *没有网络*也能使用
- ~~手动导出~~不再需要

> 提示:出远门之前先同步一次。
275 个字符23 行

能处理什么

GitHub 风格 Markdown
表格、任务列表、删除线和围栏代码块都按 GitHub 的写法输出。
代码保留语言
<pre><code class="language-js"> 变成标注 js 的代码块,语法高亮用的 span 会去掉。
识别表格
HTML 表格变成 Markdown 表格,第一行都是加粗单元格时会当作表头。
链接和图片
链接和图片保留文字和标题,相对地址按网页地址补全。
去掉排版杂项
去掉脚本、样式、注释以及 <div>、<span> 这类排版元素,保留其中的文字。
公式和脚注
MathML 和 KaTeX 公式还原成 $…$ 形式的 TeX,脚注区变成 Markdown 脚注。

在代码里把 HTML 转成 Markdown

JavaScript

Turndown 可以在浏览器或 Node 里转换,加上 turndown-plugin-gfm 插件才能转换表格和删除线。

import TurndownService from "turndown";

const turndown = new TurndownService({ headingStyle: "atx", codeBlockStyle: "fenced" });
const markdown = turndown.turndown("<h1>Hello</h1><p>World</p>");

Python

from markdownify import markdownify

markdown = markdownify(html, heading_style="ATX")

Pandoc

pandoc page.html -f html -t gfm -o page.md

常见问题

怎么把 HTML 转成 Markdown?

把 HTML 粘贴到上面,复制右侧的 Markdown,或者下载为 .md 文件。转换在你的浏览器里完成。

怎么把网页转成 Markdown?

选中网页上需要的部分,复制后粘贴到富文本转 Markdown。如果要从源代码转换,可以在浏览器的开发者工具里复制 HTML,连同网页地址一起粘贴到这里。

为什么链接和图片打不开?

HTML 里用的是 /docs/sync 这样的相对地址,只在原网站上有效。在「网页地址」里填写原网页地址,就会补全为完整的网址。

Markdown 表达不了的 HTML 会怎样?

<div>、<span>、彩色文字这类没有 Markdown 写法的元素会去掉,只保留其中的文字。可以把结果当作干净的底稿,再在需要的地方补回格式。

只想转换一个 HTML 表格可以吗?

可以。直接把 <table> 粘贴到这里,或者使用 HTML 表格转 Markdown,它还能处理从表格软件复制的内容。

HTML 会上传吗?

不会。转换在你的浏览器里完成,HTML 不会离开你的设备。