自动将博客园文章导出到 Markdown 文件
此文主要分享了如何将自己博客园的文章自动导出到 Markdown 文档进行存储以便在本地进行归档管理程序中也对文章的分类、tag、代码块以及文章中的图片进行了保存处理以便上传到自己的图床。基于 C# 语言开发测试调用为 C# Console 程序。支持的功能可以循环抓取自己博客园的所有文章导出到 Markdown 文件进行保存在 Markdown 的头部保存了原文章的标题、发表时间、文章分类、文章 tag 元素文章中的代码块会抽取出来包含在codeblock中你也可以修改源码保存成其他的格式块保存的文件名就是原文章的路径如果你的文章都设置了EntryName那生成的文件名就会非常的友好文章中的图片可选进行本地保存命名的格式为源文件名并可在原文中将链接进行图床前缀的替换你可以修改源码按照自己的格式进行保存。导出函数的定义以及参数。{% codeblock lang:csharp%}////// 导出博客园的文章成本地 Markdown 进行保存////// 博客起始页码即 http://www.cnblogs.com/parry/default.html?page{0}/// 博客结束页码即 http://www.cnblogs.com/parry/default.html?page{0}/// 是否将文章中的图片保存到本地保存后文件夹在程序运行的 images 文件夹/// 替换文章中的图片为自己图床的前缀 Url/// 在抓取到的文章 separateLineLocation参数 处添加 分隔符用于博客展示文章时用于抽取描述以及使用。/// 添加分隔符的位置/// 是否执行完成public static bool ExportToMarkdown(int pageStart, int pageEnd, bool isSaveImage, string imagePrefixUrl “”, bool isAddMoreSeparateLine false, int separateLineLocation 300){}{% endcodeblock %}抓取保存后文件预览。[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tQw1va6J-1578979620035)(https://image.devopen.club/blog_670d31b91107e48bdaf1f033d055a987.png)]基本原理循环抓取博客的列表获取到文章的链接循环文章的链接进行抓取提取元素保存抓取到的元素进行格式化并保存。几个知识点将 HTML 转换成 Markdown这里使用了一个开源的组件 Html2Markdown ,在控制台安装组件后就可以使用了主要支持两个方法。对字符串进行转换{% codeblock lang:csharp%}var html “Something toconvert”;var converter new Converter();var markdown converter.Convert(html);{% endcodeblock %}对文件进行转换{% codeblock lang:csharp%}var path “file.html”;var converter new Converter();var markdown converter.ConvertFile(path);{% endcodeblock %}注意项目中添加此组件引用的方法项目中已经迁入了 bin 文件夹其中包含Html2Markdown.dll和HtmlAgilityPack.dll (Html2Markdown的依赖)直接添加到项目中引用即可在包管理控制台中使用Install-Package Html2Markdown进行安装。注意 Mac 和 Windows 以及 Linux 下的换行的区别具体的区别可以看这里可以根据自己的情况对源码进行修改。{% blockquote XOR http://www.cnblogs.com/lihaozy/archive/2011/12/08/2280780.html unix、windows、mac 的换行习惯%}unix / linux用 LF (\n) 表示一行结束。mac用 CR (\r) 表示一行结束。windows用 CR LF (\r\n) 和起来表示一行结束。{% endblockquote %}文章分类、tag 的获取分析后发现通过模拟请求 API 获取即可需要的参数通过正则匹配获取返回数据为 Unicode 进行转码提取。文章中图片保存你可以修改源码开启或关闭此功能使用文章中文件名作为保存到本地的文件名并将文章中的图片前缀进行了替换你可以替换成你自己新的图床地址。输出的图片文件在程序启动的images文件夹。源代码项目开源在了 GitHub。需要注意的问题是项目中可能因为新旧文章中某些格式的变化导致抓取出来的 Markdown 格式可能稍有偏差以及图片、代码块的处理你需要去根据自己的博客去进行对应的调整后使用。