html2text 是最稳的命令行选择,支持批量处理且不依赖浏览器;需加 -b 0、-g、--unicode-snob 等参数优化中文、表格与换行;cheerio+remark-html 适合 node 环境深度定制;插件和在线工具仅宜临时救急。

用 html2text 命令行工具最稳
直接跑通、不依赖浏览器环境、支持批量处理,是当前最可靠的选择。它把 HTML 标签转成语义等价的 Markdown 语法(比如 <h2></h2> → ##,<ul><li></ul> → -),且默认忽略脚本、样式和冗余属性。
常见错误现象:html2text 默认会把换行当段落分隔,导致多空行;表格默认转成 ASCII 表格(难读);中文标点可能被转义。
- 装好后加
-b 0关闭自动换行补全,避免段落间多余空行 - 加
-g参数启用 GitHub 兼容模式,让表格转成标准 Markdown 表格(需注意原 HTML 表格结构要规整) - 中文内容建议加
--unicode-snob,保留中文引号、破折号等,而不是转成 ASCII 符号 - 批量处理时用 shell 循环:
for f in *.html; do html2text -g --unicode-snob "$f" > "${f%.html}.md"; done
cheerio + remark-html 适合 Node.js 环境定制
当你需要保留特定 class、过滤广告 div、或把 <figure><img></figure> 转成带 alt 的 Markdown 图片语法时,纯命令行工具不够用,得进代码层控制流程。
使用场景:已有 Node 项目、HTML 来源不规范(比如含内联 style 或 JS 渲染痕迹)、需按业务规则清洗内容。
-
cheerio负责解析和 DOM 操作(类似服务器端 jQuery),先删掉div.ad-banner这类干扰节点 - 再把清理后的 HTML 字符串交给
remark-html(注意不是rehype-html),它比手写正则更准,能处理嵌套强调、列表缩进等边界情况 - 别用
Turndown—— 它对自定义标签支持弱,且已停止维护;remark-html是当前活跃生态里更轻、更可控的选择 - 性能上,单文件耗时约 20–50ms,100 个文件不卡,但别在前端浏览器里跑——
cheerio不兼容浏览器环境
浏览器插件或在线工具只适合临时救急
像 “Markdown Preview Enhanced” 的 HTML 转换功能,或 “cloudconvert.com” 类网站,本质是调后端服务或走简化版解析逻辑,容易出错且不可控。
常见错误现象:图片路径全丢成 ![alt]();<blockquote></blockquote> 被转成普通段落;<code> 块里的语言标识(如 class="js")直接消失。
- 在线工具上传即公开,敏感文档别试
- 插件依赖当前页面 DOM 状态,如果 HTML 是异步加载的(比如 React 渲染后),它只转初始 HTML,拿不到真实内容
- 所有这类方案都不支持批量重命名、目录映射、frontmatter 注入等工程化需求
特殊标签和属性必须手动干预
没有通用转换器能自动理解业务语义。比如 <span class="lead"></span> 该转成强调还是加粗?<time datetime="..."></time> 是否要提取为 YAML frontmatter?这些都得你定规则。
最容易被忽略的是自定义元素和数据属性:<my-video></my-video> 在所有主流转换器里都会被直接忽略或删掉,不会生成对应 Markdown。
- 遇到
data-属性,要么预处理 HTML(用cheerio提取并插入注释),要么后处理 Markdown(用正则补) -
<details><summary></summary></details>这种语义化标签,目前无工具原生支持转成 Markdown 折叠语法(GitHub 不支持,仅部分渲染器支持) - 如果 HTML 含 MathML 或 SVG 内联图,别指望转成 Markdown 公式或图像——它们会被清空或变成占位符
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











