公司与另外一个公司合作做项目,使用对方的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.爬取数据
先打开一个页面。
查看其页面源码的结构后发现,左侧部分是一个

这样,我们基本上就可以使用jsoup解析了,具体解析的过程就不放出来了。
需要注意的是showdoc的版本比较低,我没有看到具体的版本号,但是我后部署的新版本无法使用该方法获取。
这里就说一下具体的思路:
1.先解析一个url,获取document中的菜单列表,获取页面的url
2.由于显示页面只是展示html数据,没有markdown的文本,如果需要获取markdowm有两个方法:
- 如果有用户名密码。直接使用jsoup cookie相关功能模拟登录后访问编辑页面,可以直接获取markdown数据
- 无账号,需要使用转换工具将html转换成markdown。
两种方式我都用过。对于将html转换成markdown,我是从网上找了开源的代码自己修改了部分,可以看我的代码。
3.导入数据
数据抓取下来后我存到了mysql数据库中,然后将数据再导入到sqlite数据库中就行了.
showdoc的表结构非常简单,花了几分钟看了一下搞清楚了表关系
表 | 表名 | 说明 |
---|---|---|
item | 项目维护表 | 存项目的基本信息 |
catalog | 菜单表 | 存储左侧菜单,注意页面访问连接不属于菜单,关联项目 |
page | 页面信息表 | 存储页面信息包括markdown内容,关联菜单 |
使用navicat for sqlite 导入数据后将服务器上的sqlite数据库文件替换即可.
来源:CSDN
作者:老刀-007
链接:https://blog.csdn.net/lizhiyuan_eagle/article/details/90517855