公司与另外一个公司合作做项目,使用对方的showdoc管理接口文档,由于网络不好,想着干脆自己爬到本地搭个服务器。说干就干,走起!
1.准备工作
首先showdoc官网了解了一圈showdoc的内容,在本地服务器上部署了一套。使用的是apache2。
数据库是默认的sqlite,数据库文件为:Sqlite/下的showdoc.db.php文件
然后招了个sqllite的访问客户端,Navicat 12 for SQLite ,强烈推荐!使用方式和Navicat for Mysql基本一样,非常方便。
使用下载地址:
链接:https://pan.baidu.com/s/1p4F8D63xlcFS86D_K0_RJQ
提取码:w79w
2.爬取数据
先打开一个页面。
查看其页面源码的结构后发现,左侧部分是一个
- 菜单,菜单的url非常容易获取。
这样,我们基本上就可以使用jsoup解析了,具体解析的过程就不放出来了。
需要注意的是showdoc的版本比较低,我没有看到具体的版本号,但是我后部署的新版本无法使用该方法获取。
这里就说一下具体的思路:
1.先解析一个url,获取document中的菜单列表,获取页面的url
2.由于显示页面只是展示html数据,没有markdown的文本,如果需要获取markdowm有两个方法:
-
- 如果有用户名密码。直接使用jsoup cookie相关功能模拟登录后访问编辑页面,可以直接获取markdown数据
-
无账号,需要使用转换工具将html转换成markdown。
两种方式我都用过。对于将html转换成markdown,我是从网上找了开源的代码自己修改了部分,可以看我的代码。
3.导入数据
数据抓取下来后我存到了mysql数据库中,然后将数据再导入到sqlite数据库中就行了.
showdoc的表结构非常简单,花了几分钟看了一下搞清楚了表关系
使用navicat for sqlite 导入数据后将服务器上的sqlite数据库文件替换即可.表 表名 说明 item 项目维护表 存项目的基本信息 catalog 菜单表 存储左侧菜单,注意页面访问连接不属于菜单,关联项目 page 页面信息表 存储页面信息包括markdown内容,关联菜单