博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[开源] 分享导出博客园文章成本地 Markdown 文件存储的工具
阅读量:6638 次
发布时间:2019-06-25

本文共 1332 字,大约阅读时间需要 4 分钟。

此文主要分享了如何将自己博客园的文章自动导出到 Markdown 文档进行存储,以便在本地进行归档管理,程序中也对文章的分类、tag、代码块以及文章中的图片进行了保存处理,以便上传到自己的图。

整理后的 Markdown 可以在本地整理成册或者发布到自己的个人博客上,比如我使用 Markdown 书写的 。

文章目录

  1. 支持的功能
  2. 基本原理
  3. 几个知识点
    • 将 HTML 转换成 Markdown
    • 注意 Mac 和 Windows 以及 Linux 下的换行的区别
    • 文章分类、tag 的获取
    • 文章中图片保存
  4. 项目开源下载

1. 支持的功能

  • 可以循环抓取自己博客园的所有文章导出到 Markdown 文件进行保存;
  • 在 Markdown 的头部保存了原文章的标题、发表时间、文章分类、文章 tag 元素;
  • 文章中的代码块会抽取出来包含在 codeblock 中,你也可以修改源码保存成其他的格式块;
  • 保存的文件名就是原文章的路径,如果你的文章都设置了 EntryName,那生成的文件名就会非常的友好;
  • 文章中的图片可选进行本地保存,命名的格式为源文件名,并可在原文中将链接进行图床前缀的替换,你可以修改源码按照自己的格式进行保存。

抓取保存后文件预览。

抓取后的文件预览

2. 基本原理

  1. 循环抓取博客的列表,获取到文章的链接;
  2. 循环文章的链接,进行抓取,提取元素;
  3. 保存抓取到的元素进行格式化并保存。

3. 几个知识点

将 HTML 转换成 Markdown

这里使用了一个开源的组件 ,在控制台安装组件后就可以使用了,主要支持两个方法。

对字符串进行转换

var html = "Something to convert";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. 项目开源下载

项目源代码在

需要注意的问题是,项目中可能因为新旧文章中某些格式的变化导致抓取出来的 Markdown 格式可能稍有偏差,以及图片、代码块的处理,你需要去根据自己的博客去进行对应的调整后使用。

转载地址:http://drivo.baihongyu.com/

你可能感兴趣的文章
查找表包含的页和页所在的表
查看>>
快速高效实现微信小程序图片上传与腾讯免费5G存储空间的使用
查看>>
vue实现PC端调用摄像头拍照人脸录入、移动端调用手机前置摄像头人脸录入、及图片旋转矫正、压缩上传base64格式/文件格式...
查看>>
mvc笔记(2012-11-02)
查看>>
求二叉排序树的镜像
查看>>
在StoryBoard对UICollectionViewCell 进行Autolayout是遇到的Xcode6.01的BUG
查看>>
后缀自动机板子和一些用法
查看>>
WPF 虚拟键盘
查看>>
正则表达式使用
查看>>
解决IE下返回json数据提示文件保存到问题
查看>>
Java设置session超时(失效)的时间
查看>>
New Concept English Two 17 43
查看>>
Java监听器
查看>>
带文字的GridView2Activity
查看>>
字符串、文件操作,英文词频统计预处理
查看>>
Error处理: android.media.MediaRecorder.start(Native Method) 报错:start failed: -19
查看>>
js history对象 手机物理返回键
查看>>
CentOS6.8搭建LNMP环境
查看>>
模拟+位运算 HDOJ 5491 The Next
查看>>
动态加载、移除js、css
查看>>