Python获取丁香园疫情数据并解析json数据

在利用pyecharts V1.x版本,使用Map对象进行制图时,对数据格式的要求比较高,如果数据格式不正确可能达不到我们预期的效果。在我的前一篇文章中介绍了如何利用丁香园疫情数据制作地图,今天就为大家说下如何爬取、解析数据。

    1. 地址解析

丁香园Github-疫情数据下载地址

https://github.com/BlankerL/DXY-2019-nCoV-Data/blob/master/json/DXYArea.json

  • 爬虫爬取数据的页面

https://raw.githubusercontent.com/BlankerL/DXY-2019-nCoV-Data/master/json/DXYArea.json

    1. 爬虫实现
  • 实现代码(更新于2020-04-01)
# -*- coding: utf-8 -*-"""
@File    : JsonCrawlerRelativeData.py
@Author  : fungis@163.com
@Time    : 2020/2/10 19:10
"""import json
import requests#爬取丁香园数据页面
url = 'https://raw.githubusercontent.com/BlankerL/DXY-2019-nCoV-Data/master/json/DXYArea.json'
response = requests.get(url)
# 将响应信息进行json格式化
versionInfo = response.text
print(versionInfo)#打印爬取到的数据
print("------------------------")#一个从文件加载,一个从内存加载#json.load(filename)#json.loads(string)
jsonData = json.loads(versionInfo)#用于存储数据的集合
dataSource = []
provinceShortNameList = []
confirmedCountList = []
curedCount = []
deadCountList = []
#遍历对应的数据存入集合中
for k in range(len(jsonData['results'])):if(jsonData['results'][k]['countryName'] == '中国'):provinceShortName = jsonData['results'][k]['provinceShortName']if("待明确地区" == provinceShortName):continue;confirmedCount = jsonData['results'][k]['confirmedCount']# 存储数据为键值对点形式([['江苏', 492], ['安徽', 830]])dataSource.append("['"+provinceShortName+"',"+str(confirmedCount)+"]")provinceShortNameList.append(provinceShortName)#省份名称简称confirmedCountList.append(confirmedCount)curedCount.append(jsonData['results'][k]['curedCount'])deadCountList.append(jsonData['results'][k]['deadCount'])# print(jsonData['results'][k]['provinceName'])#打印省份全称print("data = "+str(dataSource).replace('"',''))#省份,确认人数集合data =[省份,确诊人数],[省份,确诊人数]...]
print("columns = "+str(provinceShortNameList))#省份集合
print("confirmedCount = "+str(confirmedCountList))#确诊人数集合
print("curedCount = "+str(curedCount))#治愈人数集合
print("deadCount = "+str(deadCountList))#死亡人数集合
  • 爬取结果
格式化JSON数据变成制图所需格式
  • 反馈
    在进行爬虫时,发现第一次爬取时有结果出现,第二次、第三次爬取…,可能被限制了IP。不过等个一个小时就又可以进行了。由于制图所需数据有限,爬一次就足够了。

  • 本地方式获取(更新于2020-04-01)
    如果不能爬下来,建议把今日份的JSON数据给保存到本地,然后通过读取本地文件的方式进行解析。

# -*- coding: utf-8 -*-"""
@File    : JsonLoadProvinceData.py
@Author  : fungis@163.com
@Time    : 2020/2/10 16:32
"""import json#数据下载地址
#https://github.com/BlankerL/DXY-2019-nCoV-Data/blob/master/json/DXYArea.json#读取本地疫情JSON数据
f = open("./file/dat/data20200401.json",encoding='utf-8')  # 设置以utf-8解码模式读取文件,encoding参数必须设置,否则默认以gbk模式读取文件,当文件中包含中文时,会报错
jsonData = json.load(f)#用于存储数据的集合
dataSource = []
provinceShortNameList = []
confirmedCountList = []
curedCount = []
deadCountList = []
#遍历对应的数据存入集合中
for k in range(len(jsonData['results'])):if(jsonData['results'][k]['countryName'] == '中国'):provinceShortName = jsonData['results'][k]['provinceShortName']if("待明确地区" == provinceShortName):continue;confirmedCount = jsonData['results'][k]['confirmedCount']# 存储数据为键值对点形式([['江苏', 492], ['安徽', 830]])dataSource.append("['"+provinceShortName+"',"+str(confirmedCount)+"]")provinceShortNameList.append(provinceShortName)#省份名称简称confirmedCountList.append(confirmedCount)curedCount.append(jsonData['results'][k]['curedCount'])deadCountList.append(jsonData['results'][k]['deadCount'])# print(jsonData['results'][k]['provinceName'])#打印省份全称print("data = "+str(dataSource).replace('"',''))#省份,确认人数集合data =[省份,确诊人数],[省份,确诊人数]...]
print("columns = "+str(provinceShortNameList))#省份集合
print("confirmedCount = "+str(confirmedCountList))#确诊人数集合
print("curedCount = "+str(curedCount))#治愈人数集合
print("deadCount = "+str(deadCountList))#死亡人数集合
    1. 保存本地

将从github爬到的数据保存到本地磁盘上。

  • 实现代码
# -*- coding: utf-8 -*-"""
@File    : JsonCrawlerLocal.py
@Author  : fungis@163.com
@Time    : 2020/2/10 18:41
"""
# 数据下载地址
import datetime
import json
import requests# 获取所有数据json文件def download_Json(url):print("-----------正在下载json文件 %s" % (url))# try:# 将响应信息进行json格式化response = requests.get(url)versionInfo = response.textversionInfoPython = json.loads(versionInfo)# print(versionInfo)path = './file/data' + str(datetime.datetime.now().strftime('%Y%m%d')) + '.json'# 将json格式化的数据保存with open(path, 'w', encoding='utf-8') as f1:f1.write(json.dumps(versionInfoPython, indent=4))# except Exception as ex:
#     print("--------出错继续----")
#     pass# url = 'https://github.com/BlankerL/DXY-2019-nCoV-Data/blob/master/json/DXYArea.json'
url = 'https://raw.githubusercontent.com/BlankerL/DXY-2019-nCoV-Data/master/json/DXYArea.json'# 获取疫情数据json文件
download_Json(url)
    1. 解析某省地级市的疫情数据(更新于2020-04-01)

这是一个基于本地下载好的,丁香园疫情github-JSON数据的解析。如果爬虫不能用可以手动复制到本地进行解析。本次以河南省为例,进行解析。

  • 实现代码(更新于2020-04-01)
# -*- coding: utf-8 -*-"""
@Author  : fungis@163.com
@Time    : 2020/2/10 16:32
"""import json#数据下载地址
#https://github.com/BlankerL/DXY-2019-nCoV-Data/blob/master/json/DXYArea.json#读取本地JSON数据
f = open("./file/dat/data20200401.json",encoding='utf-8')  # 设置以utf-8解码模式读取文件,encoding参数必须设置,否则默认以gbk模式读取文件,当文件中包含中文时,会报错
jsonData = json.load(f)#用于存储数据的集合
dataSource = []
cityNameList = []
confirmedCountList = []
curedCount = []
deadCountList = []
#遍历对应的数据存入集合中
for k in range(len(jsonData['results'])):if(jsonData['results'][k]['countryName'] == '中国'):provinceShortName = jsonData['results'][k]['provinceShortName']#去除没有归属区域的数据if( "河南" != provinceShortName):continue;for j in range(len(jsonData['results'][k]['cities'])):confirmedCount = jsonData['results'][k]['cities'][j]['confirmedCount']# 存储数据为键值对点形式([['江苏', 492], ['安徽', 830]])cityName = jsonData['results'][k]['cities'][j]['cityName']if ("待明确地区" == cityName or '境外输入' == cityName):continue;dataSource.append("['"+cityName+"市',"+str(confirmedCount)+"]")cityNameList.append(cityName)#地级市名称confirmedCountList.append(confirmedCount)#确诊人数curedCount.append(jsonData['results'][k]['cities'][j]['curedCount'])#治愈人数deadCountList.append(jsonData['results'][k]['cities'][j]['deadCount'])#死亡人数# print(jsonData['results'][k]['provinceName'])#打印省份全称print("data = "+str(dataSource).replace('"',''))#地级市,确认人数集合data =[[地级市,确诊人数],[地级市,确诊人数]...]
print("columns = "+str(cityNameList))#地级市集合
print("confirmedCount = "+str(confirmedCountList))#确诊人数集合
print("curedCount = "+str(curedCount))#治愈人数集合
print("deadCount = "+str(deadCountList))#死亡人数集合
  • 解析结果
河南省丁香园疫情数据解析结果-2020/02/11
    1. 结尾

喜欢的朋友们可以点个关注,后续将持续更新,精彩无限^ - ^

Python获取丁香园疫情数据并解析json数据相关推荐

  1. 在php中怎么解析json数据,php解析json数据

    在我们使用编程语言的时候,对于数据的格式会出现不能直接使用的情况,所以就会有解析的操作.在php中有专门解析json的函数,那就是json_decode().想要进一步的运用这个函数,我们还需要对它的 ...

  2. java解析json数据_java解析JSON数据详解

    JSON是目前最流行的轻量级数据交换语言(没有之一).尽管他是javaScript的一个子集.但由于其是独立与语言的文本格式,它几乎可以被所有编程语言所支持. 以下是对java语言中解析json数据的 ...

  3. java中的数据解析是_Java从网络中请求获取JSon数据以及解析JSON数据----(自创,请注明)...

    Json数据是比较常用的数据类型解析,优点就不多说啦.来看看方法: public static JSONObject getJsonObject(String url) { JSONObject js ...

  4. js html 处理json数据,js 解析JSON数据

    链接原文转自:http://www.w3cschool.cn/json/xumd1piw.html http://www.cnblogs.com/zoumiaomiao/p/4909539.html ...

  5. js解析json js获取json里面的某个节点的数据 js解析json数据

    获取data里面的节点 $.ajax({type: "GET",url: '../api/数据接口.aspx',dataType: 'json',success: function ...

  6. R语言获取丁香园疫情数据动态网站

    R语言获取丁香园疫情数据(动态网站) 这个文章已经更新了,请看我公众号文章: 链接为: 爬丁香园数据 对上面文章追加更改: 内容追加 历史数据也已经上线: 历史数据-公众号pypi 前篇数据可视化,数 ...

  7. Python 获取接口数据,解析JSON,写入文件

    Python 获取接口数据,解析JSON,写入文件 用于练手的例子,从国家气象局接口上获取JSON数据,将它写入文件中,并解析JSON: 总的来说,在代码量上,python代码量要比java少很多.而 ...

  8. 【Python使用】Python解析JSON数据的基本方法/用MATLAB解析json格式数据

    一 JSON数据格式介绍 JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式. JSON建构于两种结构:json是Javascript中的对象和数组中的对象, ...

  9. Python爬虫笔记——解析json数据(以周杰伦歌单为例)及Headers

    一.Network Network能够记录浏览器的所有请求.我们最常用的是:ALL(查看全部)/XHR(仅查看XHR)/Doc(Document,第0个请求一般在这里),有时候也会看看:Img(仅查看 ...

最新文章

  1. oracle 授权 传递,Oracle基础学习4--Oracle权限传递
  2. DevOps案例研究:庖丁解牛,剖析Google持续交付之道
  3. MySQL Spatial Data Types
  4. 程序员,岂能被网站吞吐量难住?
  5. Hibernate的双向1-N关联(五)
  6. android授权新浪微博 服务端,android应用关于新浪微博授权登陆解决方案
  7. java实验室管理系统报告_基于JAVA的实验室信息管理系统设计与实现
  8. IT数学逻辑之正余弦定理指正弦定理和余弦定理
  9. win7文件夹加密_小编还原win7系统文件夹加密码的步骤
  10. 英文视频添加中英双语字幕(基于Whisper语音识别和Google翻译)
  11. Java操作MongoDB数据库(简明版)
  12. 常见鸟的种类及特点_鸟的分类
  13. css 随机 数,纯CSS实现随机效果
  14. 彻底删除的文件如何恢复?误删数据恢复,四种方法就可以解决
  15. 深度学习网络结构笔记----Depthwise卷积与Pointwise卷积--深度可分卷积-- GoogleNet,Xception,MobileNetv1--v3
  16. IOS企业版app部署到自己服务器,不通过AppStore,在iOS设备上直接安装应用程序
  17. ZooKeeper 可视化工具
  18. python编程常用英语单词_Python必备常用英语词汇1(吐血整理)
  19. 文本挖掘(超详细:数据获取 - 数据清洗 - 中文分词 - 去除停用词 - 词频统计 - 词云图 - 情感分析)
  20. 人工智能识别植物准确率高达80% 植物学家轻松了

热门文章

  1. 格式工厂 wav 比特率_DRmare Audio Converter Mac(音频格式转换工具)
  2. SciChart 5.4 安装包及KeyGen
  3. IC类元件创建、接插件座子原件、晶体
  4. 异步实现:回调回调和消息队列
  5. (人机对战)原创棋类小游戏OOXX(与五子棋有些许类似)
  6. 算法 排序4 统计工龄
  7. plt画多个图,图片的位置如何摆放
  8. android资料(闪光灯手电筒)
  9. 【Windows10】查看电池健康
  10. 南京师范大学地信/GIS/地图学与地理信息系统考研经验