HTML 转 Markdown 指南:保留结构、链接、表格与图片

更新 2026-08-09 约 13 分钟 文档工具 How-to

你需要把 CMS 导出的文章迁移到 Git、把知识库页面交给 Markdown 编辑器,或把网页中的标题、列表和表格整理成可审阅的文档。直接复制网页通常会带入样式、脚本和不可见节点,手写又容易漏掉链接和图片。本指南用 WebUtils HTML 转 Markdown 工具完成结构化转换,并把“自动生成”与“人工校对”明确分开。

立即使用相关工具 打开 HTML 转 Markdown 转换器
打开工具 →

先明确转换目标

HTML 转 Markdown 是语义降维:保留内容结构,舍弃大部分视觉样式。

HTML 能表达任意 CSS、交互和嵌套组件,Markdown 只覆盖标题、段落、强调、列表、链接、图片、代码和有限的表格。因此转换器应被当作迁移起点,而不是所见即所得的完整复刻。页面支持 ATX 标题(#)或 Setext 标题(下划线形式),也支持 *-+ 三种无序列表标记;选择要与仓库的 Markdown 规范一致。

哪些结构能保留,哪些会丢失

HTML 结构 常见 Markdown 输出 迁移注意
h1h6 ####### 标题层级可能需要重新整理
pbr 空行和换行 连续 br 不一定有同样视觉效果
strongem *** 嵌套强调要检查标记闭合
ulol -1. 列表 深层嵌套需手工看缩进
a 文字 相对链接和锚点可能失效
img !替代文本 懒加载、尺寸和 CDN 参数需复核
precode 围栏代码块 语言标识通常无法自动确定
table Markdown 表格 合并单元格、复杂表头会降级
scriptstyle 通常丢弃 仍应检查是否有隐藏内容残留

转换前先确定“只要正文”还是“保留导航与脚注”。整页 HTML 常包含菜单、Cookie 提示和推荐卡片;把这些一起转进去会污染文章。最可靠的输入是内容区域的 HTML 片段,而不是整个网站源码。

WebUtils 工具页操作步骤

  1. 打开 HTML 转 Markdown 转换器,确认左侧是 HTML 输入区、右侧是 Markdown 输出区。
  2. 从浏览器开发者工具或 CMS 导出内容区域,复制真实 HTML。不要把页面中的密码、令牌、用户资料一起粘贴。
  3. 选择标题风格:仓库普遍使用 # 时选 ATX;旧文档明确要求下划线标题时才选 Setext。
  4. 选择无序列表符号,保持与现有仓库的 lint 规则一致。不同符号混用会制造无意义的 diff。
  5. 点击“开始转换”,先观察标题、列表、链接、图片和代码块,再复制结果。
  6. 用 Markdown 预览器渲染输出,重点检查嵌套列表、表格对齐和链接是否可点击。
  7. 把相对 URL 转成仓库或站点实际路径;确认图片有替代文本,代码块补上语言标识。
  8. 删除导航、广告、隐藏文本和重复标题,最后用 HTML/Markdown 格式化工具整理换行。

工具使用浏览器中的 Turndown 逻辑转换常见节点,适合中小型片段。它不会抓取远程网页、下载图片或替你判断文章主内容;输入必须由你提供,输出仍需要审阅。

前后对照:一个内容卡片如何变化

输入 HTML:

<article>
  <h2>部署步骤</h2>
  <p>先安装 <strong>Node.js 20</strong>,再运行 <code>npm install</code>。</p>
  <ul><li>准备环境</li><li>运行测试</li></ul>
  <p><a href="/docs/start">查看完整文档</a></p>
</article>

输出 Markdown 可能是:

## 部署步骤

先安装 **Node.js 20**,再运行 `npm install`。

- 准备环境
- 运行测试

[查看完整文档](/docs/start)

这里结构和强调被保留,article 容器本身被省略。若目标仓库部署在子路径,/docs/start 可能需要改成相对路径或完整 URL;转换器不会知道你的发布基路径。

表格、链接和图片的人工复核

表格。 简单的矩形表格可以转成 Markdown;rowspancolspan、多行表头和单元格内 HTML 常会被展平。合并单元格的语义不能靠对齐空格恢复,应改成列表、分节表格或保留原 HTML。

链接。 文字为空的链接、JavaScript 链接、下载链接和带追踪参数的链接需要单独处理。把 javascript:void(0) 直接写进 Markdown 不但无用,还可能制造安全问题。内部链接迁移后要检查大小写、末尾斜杠和锚点。

图片。 src 可能只是占位图,真实地址藏在 data-src;转换器只能看到输入中的属性。图片尺寸、懒加载、鉴权 CDN 和相对路径都需要人工修复,替代文本也不能用文件名敷衍。

代码与特殊字符

HTML 中的 &lt;&amp; 等实体会被还原为可读字符,但在代码示例中应保留字面含义。比如 <button> 出现在代码块内时,Markdown 输出必须继续位于围栏中,不能被当作 HTML 标签。

<button type="submit">保存</button>

如果原文是 <pre><code class="language-js">...</code></pre>,语言类名通常可以帮助你手工补上 `js 。转换器不一定能识别所有类名,也不会验证代码是否可运行。迁移后应让对应语言的格式化器或测试工具接手。

错误表:转换成功不等于内容正确

问题 常见来源 修复方法
输出夹杂导航和广告 输入了整页 HTML 只复制主内容容器,或先删除非正文节点
标题层级跳跃 原站靠 CSS 调字号 按文章语义重排 h2/h3,不要只看视觉大小
列表变成连续文本 li 外层结构不完整 补齐 ul/ol,再转换并检查缩进
表格列错位 合并单元格或单元格含换行 改为简单表格或保留 HTML
图片显示不出来 相对 URL、懒加载或鉴权 替换为可访问 URL,补 alt 并确认权限
内部链接 404 发布基路径发生变化 根据站点路由改写相对链接并批量检查
代码中的 < 被解释成标签 未放入代码围栏 使用 fenced code block,并指定语言
空白过多或段落粘连 原 HTML 依赖 CSS margin 用 Markdown 空行重建段落,不要复制样式属性
复制后出现不可见字符 富文本剪贴板带零宽空格 在编辑器显示不可见字符并清理
XSS 风险被带入 保留了事件属性或危险 URL 删除 on* 属性、脚本和 javascript: 链接

每次转换后至少抽查一个标题、一个嵌套列表、一个链接、一个图片和一个代码块。只看输出长度无法发现结构性丢失。

真实场景:文档迁移的四条路线

CMS 迁移到 Git。 从文章正文容器复制 HTML,转换成 ATX 标题后提交到仓库。迁移脚本统一内部链接和图片目录,再让 Markdown 预览器逐篇检查,避免把 CMS 的推荐模块也提交。

知识库归档。 旧系统导出带表格和脚注的 HTML。先转换主文,脚注改成“参考资料”列表;复杂合并表格保留一小段 HTML,保证信息不被错误展平。

API 文档重写。 HTML 示例常含 <code><pre>。转换后给代码块补语言标识,再在 CI 中运行格式化器,确保复制出来的命令不会因实体解码而变化。

网页研究笔记。 只保留选中的内容片段,并记录原页面 URL 和抓取日期。转换结果用于个人笔记,不应把受版权限制的整页内容重新发布。

安全、版权与隐私边界

  • 浏览器本地转换减少了上传路径,但剪贴板、下载文件和屏幕共享仍可能泄露内部文档。
  • 转换器不会主动执行输入脚本;输出放入网站前仍要按发布系统做 HTML 清洗,不能把 Markdown 当作天然安全。
  • 删除 javascript: 链接、内联事件和可疑 iframe;Markdown 中的 URL 仍可能指向钓鱼站点。
  • 只处理你有权复制和再发布的内容。网页转 Markdown 不会自动消除版权、个人信息或访问控制义务。
  • 图片和附件可能需要登录才能访问。迁移前确认许可证、存储位置和失效策略。

常见问题

能不能直接输入一个网页 URL?

当前页面的输入是 HTML 文本,不负责联网抓取。先在有权限的环境中取得正文 HTML,再粘贴转换;这样也更容易排除导航和广告。

为什么 CSS 的颜色、字号和布局没有保留?

Markdown 主要表达文档结构,不是完整样式表。颜色和布局属于 CSS 视觉层,转换后通常丢弃;若信息依赖颜色,必须改写成文字、图标或表格。

复杂表格应该怎么办?

先判断读者是否需要合并单元格。如果需要,保留一小段可控 HTML;如果不需要,把它拆成多个简单 Markdown 表格或定义列表,避免转换器生成难以维护的伪表格。

相对链接为什么在新站点失效?

链接是相对于原页面 URL 解析的,迁移后目录层级变了。把内部路径映射到新路由,补上锚点和末尾斜杠规则,再批量请求检查状态码。

转换会下载远程图片吗?

不会。输出通常只保留 src URL。图片是否可访问、是否需要鉴权、是否应迁入自己的存储,都要在后续资产迁移阶段处理。

Markdown 中可以继续嵌入 HTML 吗?

可以,许多渲染器支持少量 HTML。应限制在表格、细节折叠等确有必要的场景,并确认发布系统会安全清洗;不要把整套原站 DOM 原样塞回 Markdown。

发布前清单

主内容先于整页源码,结构先于样式,链接和图片要在目标站点验证;转换后再做安全清洗、版权确认和 Markdown 预览。这样迁移得到的是可维护文档,而不是一份难以追踪的网页快照。