对一个静态的网页进行爬取。

要获取的内容分别为 paths 标签下的

1./quota/开头的路径

2. get 这样的httpmode

3 description对应的描述

4 summary

5 tags 里存放着的服务名

6 服务名所对应的副描述(不在paths标签下)

7总的title(只有一个

  1. import requests
  2. import json
  3. import pymysql
  4. import urllib
  5. from urllib.request import urlopen
  6. from bs4 import BeautifulSoup
  7. import re
  8.  
  9. url = 'http://192.168.101.213:7027/v2/api-docs'
  10. headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36)"}
  11. response = requests.get(url,headers=headers).text
  12. json_str = json.loads(response)#转化为字符串
  13. aa1 = json_str['info']['title']#大title
  14. aa2=[]
  15. aa2.append(aa1)
  16. aa=aa2*42
  17. cc1 = json_str['paths']#提取在整个paths标签下的数据
  18. cc = [] #微服务路径
  19. dd = [] #获取方式
  20. for key in cc1.keys():#获得字典的key
  21. cc.append(key)
  22. for m in cc:
  23. dd1 = json_str['paths'][m]#在cc这个list中进行遍历
  24. for key2 in dd1.keys():
  25. dd.append(key2)
  26. ee = []#扩展操作
  27. bb = []#微服务名
  28. gg = []#微服务描述
  29. ff = []#主描述
  30. for o,p in zip(cc,dd):#同时遍历 ccdd两个list zip对他们进行封装
  31. try:
  32. ee1 = json_str['paths'][o][p]['summary']
  33. bb1 = json_str['paths'][o][p]['tags'][0]
  34. gg1 = json_str['paths'][o][p]['description']
  35. bb.append(bb1)
  36. ee.append(ee1)
  37. gg.append(gg1)
  38. except(KeyError):#因为有两个要爬取的内容是没有 description这个key值的 所以遇到keyerror时继续爬取
  39. continue
  40. hh=[]#这一部爬取6个微服务名 因为相应description没有被一起存放在paths标签下面
  41. for n1 in range (0,6):
  42. hh1 = json_str['tags'][n1]['name']
  43. hh.append(hh1)
  44.  
  45. list3 = [hh.index(num) for num in bb]#将存放在bb中的微服务名拿到hh中进行对比 获得他们的num值存放在list3
  46. for n3 in list3:
  47. ff1 = json_str['tags'][n3]['description']#遍历list3获得他们想对应的description
  48. ff.append(ff1)
  49. db = pymysql.connect('localhost', 'root', '******', 'languid')
  50. cursor = db.cursor()
  51. for z, x, c, v, z1, x1 ,c1 in zip(aa,bb,gg,cc,dd,ff,ee):#遍历6个列表并对他们封装
  52. sql = """insert into swaggerui(Platform,Microservice,Microservicedescrption,MicroPaths,Httpmode,Microdescrption,MicroNotes)VALUES ('%s','%s','%s','%s','%s','%s','%s')"""%(z, x, c, v, z1, x1, c1)
  53. cursor.execute(sql)
  54. db.commit()

1).主要在于标签名字的获取,因为想要获取的内容被存放在了标签名。

  1. for key in cc1.keys():
  2.         cc.append(key) 

所以要用for循环来获得字典的键值。

相当于

  1. dic ={"name"="香蕉","种类"=“水果","sales”=“1000”}
  2. for ke in dic.keys():
  3. print(ke)
  4.  
  5. name
  6. 种类
  7. sales
  8.  
  9. 也可以用items()的方法
  10. for ke in dic.items():
  11. print(ke[0])
  12.  
  13. name
  14. 种类
  15. sales

2).用一个if语句 对比两个list取得需要的值

  1. list1=[a,b,c,d,e,a,c,e,a,b,d,c,a,e,b,c,e,a,d,e](顺序是随机的但是都是a-e
  2. list2=[a,b,c,d,e]

用索引的方法我们可以获得对应的num值

  1. list3 = [list2.index(num) for num in list1]
  2.  
  3. [0, 1, 2, 3, 4, 0, 2, 4, 0, 1, 3, 2, 0, 4, 1, 2, 4, 0, 3, 4]

再用一个for循环遍历list3就可以获得相应的数据了。

最后存放到mysql里面的显示是这样的

爬取json Swaggerui界面的更多相关文章

  1. 豆瓣电影信息爬取(json)

    豆瓣电影信息爬取(json) # a = "hello world" # 字符串数据类型# b = {"name":"python"} # ...

  2. 基于nodejs模拟浏览器post请求爬取json数据

    今天想爬取某网站的后台传来的数据,中间遇到了很多阻碍,花了2个小时才请求到数据,所以我在此总结了一些经验. 首先,放上我所爬取的请求地址http://api.chuchujie.com/api/?v= ...

  3. 2019-04-23-Python爬取有声小说

    目录 Python爬取有声小说 摘要 1.获取下载链接 2.分析规律,循环爬取 3.保存到本地,批量命名 4.界面设计 5.效果展示 Python爬取有声小说 通过python爬取网站的资源,实现批量 ...

  4. python 手机app数据爬取

    目录 一:爬取主要流程简述 二:抓包工具Charles 1.Charles的使用 2.安装 (1)安装链接 (2)须知 (3)安装后 3.证书配置 (1)证书配置说明 (2)windows系统安装证书 ...

  5. 直接请求json文件爬取天眼查企业信息(未解决验证码问题)——python3实现

    几个月前...省略一堆剧情...直接请求json文件爬取企业信息未成功,在知乎提问后,得到解决,有大佬说带上全部headers和cookie是可以的,我就又去试了下,果然可以(之前自己试的时候不行,没 ...

  6. 关于爬取数据保存到json文件,中文是unicode解决方式

    流程: 爬取的数据处理为列表,包含字典.里面包含中文, 经过json.dumps,保存到json文件中, 发现里面的中文显示未\ue768这样子 查阅资料发现,json.dumps 有一个参数.ens ...

  7. 第三天,爬取伯乐在线文章代码,编写items.py,保存数据到本地json文件中

        一. 爬取http://blog.jobbole.com/all-posts/中的所有文章     1. 编写jobbole.py简单代码 import scrapy from scrapy. ...

  8. <day003>登录+爬取淘宝商品信息+字典用json存储

    任务1:利用cookie可以免去登录的烦恼(验证码) ''' 只需要有登录后的cookie,就可以绕过验证码 登录后的cookie可以通过Selenium用第三方(微博)进行登录,不需要进行淘宝的滑动 ...

  9. android高仿抖音、点餐界面、天气项目、自定义view指示、爬取美女图片等源码

    Android精选源码 一个爬取美女图片的app Android高仿抖音 android一个可以上拉下滑的Ui效果 android用shape方式实现样式源码 一款Android上的新浪微博第三方轻量 ...

随机推荐

  1. java循环1

    public class f_w { public static void main(String []args) { int a=0; System.out.print("_info__w ...

  2. 第一个Appium脚本

    测试环境 Win 10 64bit Python 3.5 Appium 1.7.2 Andriod 5.1.1 模拟器& Android 5.1 MX4 测试App:考研帮Android版 3 ...

  3. rpm打包要点

    1. 查看变量: rpmbuild --showrc 2. spec文件 头部 多行的部分,如 %changelog 或 %description 由指令下一行开始,空行结束.一些不需要的行 (如 B ...

  4. How To Configure NetScaler AppFlow for SolarWinds

    How To Configure NetScaler AppFlow for SolarWinds 来源  https://support.citrix.com/article/CTX227300 A ...

  5. vue stylus 格式化问题

    IDE是vscode 安装了.vetur插件 由于stylus可以仅用缩进不用写大括号之类的,所以十分方便, 但有个问题,按alt shift F 格式化时,vetur这个插件会默认添加上正常css的 ...

  6. VS2010查看源码对应的汇编语言

    在学习c++中const关键字的过程中,经常会看到各种寄存器.汇编指令分析,像下面的图这样 左图是g++中反汇编的效果,右图是vs中反汇编的效果. 如果我们想要查看源码所对应的汇编语言,应该怎么操作呢 ...

  7. FTP文件上传 支持断点续传 并 打印下载进度(二) —— 单线程实现

    这个就看代码,哈哈哈哈哈  需要用到的jar包是: <dependency> <groupId>commons-net</groupId> <artifact ...

  8. Matlab安装完成后,出现错误licensing error:-8523的解决方法

    Matlab2018安装成功后,打开出现licensing error:-8523解决方法 https://blog.csdn.net/qq_41634276/article/details/8000 ...

  9. 三、Dockerfile的说明和编写

    一.docker hub的使用和说明: 我们要去找镜像,一般都会 https://hub.docker.com  的网站中去找,目前linux的容器,我们目前首选是alpine,因为容器非常小,可以满 ...

  10. CountDownLatch、CyclicBarrier、Semaphore共同之处与区别以及各自使用场景

    区别 CountDownLatch 使一个线程A或是组线程A等待其它线程执行完毕后,一个线程A或是组线程A才继续执行.CyclicBarrier:一组线程使用await()指定barrier,所有线程 ...