背景
最近在做爬虫项目,其中一个需求是将网页上的帮助文档,下载至本地并形成Markdown文档,方便离线查阅。
探索及解决
找到两个具有该功能的Java类库,如下
<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语法。
// 将获取到的内容从HTML格式转换为Markdown格式
Remark remark = new Remark();
content = remark.convert(content);
转换前的Html
<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 总体架构 ###
WebMagic的结构分为`Downloader`、`PageProcessor`、`Scheduler`、`Pipeline`四大组件,并由Spider将它们彼此组织起来。这四大组件对应爬虫生命周期中的下载、处理、管理和持久化等功能。WebMagic的设计参考了Scapy,但是实现方式更Java化一些。
而Spider则将这几个组件组织起来,让它们可以互相交互,流程化的执行,可以认为Spider是一个大的容器,它也是WebMagic逻辑的核心。