[开源] 分享导出博客园文章成本地 Markdown 文件存储的工具
此文主要分享了如何将自己博客园的文章自动导出到 Markdown 文档进行存储,以便在本地进行归档管理,程序中也对文章的分类、tag、代码块以及文章中的图片进行了保存处理,以便上传到自己的图。
整理后的 Markdown 可以在本地整理成册或者发布到自己的个人博客上,比如我使用 Markdown 书写的 个人博客 。
文章目录
- 支持的功能
- 基本原理
- 几个知识点
- 将 HTML 转换成 Markdown
- 注意 Mac 和 Windows 以及 Linux 下的换行的区别
- 文章分类、tag 的获取
- 文章中图片保存
- 项目开源下载
1. 支持的功能
- 可以循环抓取自己博客园的所有文章导出到 Markdown 文件进行保存;
- 在 Markdown 的头部保存了原文章的标题、发表时间、文章分类、文章 tag 元素;
- 文章中的代码块会抽取出来包含在
codeblock
中,你也可以修改源码保存成其他的格式块; - 保存的文件名就是原文章的路径,如果你的文章都设置了
EntryName
,那生成的文件名就会非常的友好; - 文章中的图片可选进行本地保存,命名的格式为源文件名,并可在原文中将链接进行图床前缀的替换,你可以修改源码按照自己的格式进行保存。
抓取保存后文件预览。
2. 基本原理
- 循环抓取博客的列表,获取到文章的链接;
- 循环文章的链接,进行抓取,提取元素;
- 保存抓取到的元素进行格式化并保存。
3. 几个知识点
将 HTML 转换成 Markdown
这里使用了一个开源的组件 Html2Markdown ,在控制台安装组件后就可以使用了,主要支持两个方法。
对字符串进行转换
var html = "Something to <strong>convert</strong>";
var converter = new Converter();
var markdown = converter.Convert(html);
对文件进行转换
var path = "file.html";
var converter = new Converter();
var markdown = converter.ConvertFile(path);
注意 Mac 和 Windows 以及 Linux 下的换行的区别
具体的区别可以看这里,可以根据自己的情况对源码进行修改。
unix、windows、mac 的换行习惯
unix / linux:用 LF (\n) 表示一行结束。
mac:用 CR (\r) 表示一行结束。
windows:用 CR LF (\r\n) 和起来表示一行结束。
文章分类、tag 的获取
分析后发现通过模拟请求 API 获取即可,需要的参数通过正则匹配获取,返回数据为 Unicode 进行转码提取。
文章中图片保存
你可以修改源码开启或关闭此功能,使用文章中文件名作为保存到本地的文件名,并将文章中的图片前缀进行了替换,你可以替换成你自己新的图床地址。输出的图片文件在程序启动的 images
文件夹。
4. 项目开源下载
项目源代码在 GitHub
需要注意的问题是,项目中可能因为新旧文章中某些格式的变化导致抓取出来的 Markdown 格式可能稍有偏差,以及图片、代码块的处理,你需要去根据自己的博客去进行对应的调整后使用。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
2011-01-24 [前端优化]使用Microsoft Ajax Minifier对资源文件进行压缩优化