【Java】Html转Markdown格式

背景

最近在做爬虫项目,其中一个需求是将网页上的帮助文档,下载至本地并形成Markdown文档,方便离线查阅。

探索及解决

找到两个具有该功能的Java类库,如下

1
2
3
4
5
6
7
8
9
10
<dependency>
<groupId>com.kotcrab.remark</groupId>
<artifactId>remark</artifactId>
<version>1.0.0</version>
</dependency>
<dependency>
<groupId>com.github.houbb</groupId>
<artifactId>html2md</artifactId>
<version>0.0.1</version>
</dependency>

相比较之下,我选择了remark。
使用html2md进行格式转换之后,最终文档与预期的格式差异较大。
而remark转换后则较为中规中矩,比较符合实际使用中的Markdown语法。

1
2
3
// 将获取到的内容从HTML格式转换为Markdown格式
Remark remark = new Remark();
content = remark.convert(content);

转换前的Html

1
2
3
<h3 id="12-总体架构">1.2 总体架构</h3> 
<p>WebMagic的结构分为<code>Downloader</code><code>PageProcessor</code><code>Scheduler</code><code>Pipeline</code>四大组件,并由Spider将它们彼此组织起来。这四大组件对应爬虫生命周期中的下载、处理、管理和持久化等功能。WebMagic的设计参考了Scapy,但是实现方式更Java化一些。</p>
<p>而Spider则将这几个组件组织起来,让它们可以互相交互,流程化的执行,可以认为Spider是一个大的容器,它也是WebMagic逻辑的核心。</p>

转换后的Markdown

1
2
3
4
5
### 1.2 总体架构 ###

WebMagic的结构分为`Downloader``PageProcessor``Scheduler``Pipeline`四大组件,并由Spider将它们彼此组织起来。这四大组件对应爬虫生命周期中的下载、处理、管理和持久化等功能。WebMagic的设计参考了Scapy,但是实现方式更Java化一些。

而Spider则将这几个组件组织起来,让它们可以互相交互,流程化的执行,可以认为Spider是一个大的容器,它也是WebMagic逻辑的核心。