一键转换:由博客文章到markdown

630 阅读3分钟

背景

当阅读到一些好的博客文章时,按照惯例,习惯将其添加到浏览器的收藏夹。不幸的是,当重新翻找时,它们往往已经链接失效。另一方面,自己平时有整理markdown的习惯,但是通过阅读、摘录完成的markdown资料,也并不理想,而且十分花费时间。相信与我感同身受的也大有人在。基于这样的需求,我开始搜索是否有些便捷的方法。

过程

值得庆幸的是,这个需求并不特殊,很多网友也提到过类似的需求。

1

首先是资料1(同样来自掘金社区)的网友提供的灵感。由于最开始,我坚定认为自己实现个小工具,因此当看到文中提供的便捷方法,便有些不在意。另外,由于想使用java实现这个功能,最好能够集成到idea中使用,因此,该贴在最初并没有引起我较多的注意。

但是思路也很明确,就是拉取博客的文章,然后解析博客内容,最后将获取的HTML样式的博客内容,转为Markdown格式。于是,我试着按照这几个步骤前行。

2

首先获取网页内容较为简单,可以使用java常用的http库,比如httpclient等。解析HTML也较为简单,使用jsoup就可以获取对应的节点内容。真正的困难是如何将HTML转为Markdown。

搜索资料发现可以使用remark库实现转换,但是不得不说转换结果并不算好。

至此,我开始重新考虑是否有些依然存在的开源库。

3

实际上,确实有。而在资料1中提到的html2doc其实是有开源的,虽然当时这篇文章只是给了一个在线网站,告诉我们存在便捷方法。直到在搜索过程中,发现了资料2,我才确定这个网站开源可用。而我也很快在github找到相关的源码。

果断git clone,按照README.md启动应用。当然这个项目是基于nodejs的,虽然没有沿着最初java实现工具,并在idea集成的目标,但是该项目还是满足了我当前的基本需求。

下面是使用的截图

image.png

虽然在预览中,图片不可展示,但实际上问题不大。

但一个比较切实的问题是,这个博客的帖子依然会有被删除或移动的风险,此时使用原资源链接的图片就难免不可用。

因此,可以试着改动它的下载逻辑。目前,我还是老老实实的将图片做了本地保存,将资源路径替换为本地图片资源。

结论

永远可以相信开源的力量,如果期待的结果还未达成,可能是搜索不够造成的。

资料

  1. HTML 转 Markdown 如此简单
  2. 从零开发一款自动提取网页html并一键转换为md文件的工具(vue源码版)