天天看点

showDoc数据迁移-无数据库权限

公司与另外一个公司合作做项目,使用对方的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.爬取数据

先打开一个页面。

showDoc数据迁移-无数据库权限

查看其页面源码的结构后发现,左侧部分是一个

  • 菜单,菜单的url非常容易获取。
    showDoc数据迁移-无数据库权限

    这样,我们基本上就可以使用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数据库文件替换即可.