栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

爬取Arcconf文档教程并自动生成Gitbook文档显示

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

爬取Arcconf文档教程并自动生成Gitbook文档显示

1. Gitbook

    Gitbook可以将md文件自动做成类似电子书的形式,自动生成目录、风格简约,使用方便,建议写文档的同学都可以学习一下,书写方面同样是支持markdown和html语法的

2. 使用流程

网上大都能搜到更具体的教程,这里就不赘述了,主要就是

I. 安装NodeJS(推荐v4.0.0及以上版本)
II. npm install gitbook-cli -g,gitbook-cli是一个在同一系统上安装和使用多个版本的GitBook的实用程序。它将自动安装所需版本的GitBook来构建一本书。
III. 初始化书籍目录(有点类似git初始化仓库,执行一次即可,会生成README.md和SUMMARY.md文件,少一个都不行QAQ):gitbook init
IV. 网页上预览:git serve,执行后会返回一个网址,进入即可预览(linux下记得打开4000端口或者更改端口)
V. 书写方面主要是README.md作为图书简介,会自动放在整个文档的坐前面显示,SUMMARY的第一个板块也是README.md,如果你强行更改,README.md还是会出现在第一个位置(网页上显示的第一个位置,回到默认的Introduce,虽然SUMMARY中没有他),SUMMARY作为目录,按以下格式书写,[]()作为每一章或者某个大类的标题,前面加上二级强调符号则作为次级文档(每一篇文档的标题),后面的()中就是具体的包含文章的.md文档

# CATALOG —— Operations Notes

* [简介](README.md)

* [Arcconf ](arcconf.md)
  - [设置Spinup参数](设置Spinup参数.md)
  - [设置硬盘PowerSave功能](设置硬盘PowerSave功能.md)
  • 官方文档
  • 了解了这些基础后就可以着手开始操作了
3. 文件初始化

    我们新建一个目录作为书籍目录,做相应初始化以及数据保存,将各个文件的基础信息写入,注意这里的模式,初始化时可以直接用w覆盖,因为不需要保留之前的数据,调用subprocess执行gitbook init初始化书籍

def dir_init(dir, path='.'):
    if dir not in os.listdir(path):
 os.mkdir(dir)
    os.chdir(dir)
    subprocess.Popen('gitbook init', shell=True)
    with open('README.md', 'w', encoding='utf-8') as f:
 f.write("# Operations Notesn")
 f.write("n")
 f.write(">用以记录运维学习过程中的工作记录以及命令操作")
    with open('SUMMARY.md', 'w', encoding='utf-8') as f:
 f.write("# CATALOG —— Operations Notesn")
 f.write("n")
 f.write("* [简介](README.md)n")
 f.write("n")
 f.write("* [Arcconf ](arcconf.md)n")
    with open('arcconf.md', 'w', encoding='utf-8') as f:
 f.write("# Arcconf操作指南n")
 f.write("n")
 f.write(">记录Arcconf的命令操作n")
4. 数据写入

    这一步中我们将之前获取到的数据写入文件当中,并注意处理好换行符以及每个部分的代码格式,因为需要符合markdown规范,我们使用字符串构造,注意文件名的格式,有/的需要转换成其他的,这里我将/转换成了_,文件写入部分针对表格也不需要直接调用方法,文件中打开文件可能会产生冲突,所以直接写比较好。

def write_md(url):
    title, function, order, tabs, tutor, exams_title, exams = get_data_html(get_html(url))
    # 准备目录文件
    with open('SUMMARY.md', 'a', encoding='utf-8') as f:
 for title_ in title:
     f.write("  - [{}]({}.md)n".format(title_, title_.replace('/', '_')))

    for title__ in list(enumerate(title)):
 with open(title__[1].replace('/', '_') + '.md', 'a', encoding='utf-8') as f:
     # title__[0]是位置,title__[1]是名称
     f.write("# {}n".format(title__[1]))
     f.write("n")
     f.write("## 命令功能n")
     f.write(">{}n".format(function[title__[0]]))
     f.write("n")
     f.write("## 命令格式n")
     if len(order[title__[0]]) == 1:
  for data in order[title__[0]]:
      f.write("`{}`n".format(data))
     else:
  f.write("~~~n")
  for data in order[title__[0]]:
      f.write("{}n".format(data))
  f.write("~~~n")
     f.write("n")
     f.write("## 参数说明n")

     title, line, body = get_data(tabs[title__[0]])
     result = [" | ".join(data) for data in body]
     f.write("| " + "| ".join(title) + "|" + "n")
     f.write("| " + " | ".join(line) + "|" + "n")
     for data in result:
  f.write("| " + data + "|" + "n")
     # write_data(tabs[title__[0]], title__[1] + ".md")
     f.write("n")
     f.write("使用指南n")
     for data in tutor[title__[0]]:
  f.write("- {}n".format(data))
     f.write("n")
     f.write("使用实例n")
     f.write("~~~n")
     if len(exams_title[title__[0]]) > 1:
  f.write("{}n".format(str("&".join(exams_title[title__[0]]).replace("#", ""))))
     else:
  f.write("{}n".format(str(exams_title[title__[0]][0])))
     for data in exams[title__[0]]:
  f.write("{}n".format(data))
     f.write("~~~n")
    subprocess.Popen('gitbook serve', shell=True)
5. 预览


  • 代码参考
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/219944.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号