Python获取丁香园疫情数据并解析json数据
Python获取丁香园疫情数据并解析json数据
在利用pyecharts V1.x版本,使用Map对象进行制图时,对数据格式的要求比较高,如果数据格式不正确可能达不到我们预期的效果。在我的前一篇文章中介绍了如何利用丁香园疫情数据制作地图,今天就为大家说下如何爬取、解析数据。
- 地址解析
丁香园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
- 爬虫实现
- 实现代码(更新于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))#死亡人数集合
- 爬取结果
反馈
在进行爬虫时,发现第一次爬取时有结果出现,第二次、第三次爬取…,可能被限制了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))#死亡人数集合
- 保存本地
将从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)
- 解析某省地级市的疫情数据(更新于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))#死亡人数集合
- 解析结果
- 结尾
喜欢的朋友们可以点个关注,后续将持续更新,精彩无限^ - ^
Python获取丁香园疫情数据并解析json数据相关推荐
- 在php中怎么解析json数据,php解析json数据
在我们使用编程语言的时候,对于数据的格式会出现不能直接使用的情况,所以就会有解析的操作.在php中有专门解析json的函数,那就是json_decode().想要进一步的运用这个函数,我们还需要对它的 ...
- java解析json数据_java解析JSON数据详解
JSON是目前最流行的轻量级数据交换语言(没有之一).尽管他是javaScript的一个子集.但由于其是独立与语言的文本格式,它几乎可以被所有编程语言所支持. 以下是对java语言中解析json数据的 ...
- java中的数据解析是_Java从网络中请求获取JSon数据以及解析JSON数据----(自创,请注明)...
Json数据是比较常用的数据类型解析,优点就不多说啦.来看看方法: public static JSONObject getJsonObject(String url) { JSONObject js ...
- js html 处理json数据,js 解析JSON数据
链接原文转自:http://www.w3cschool.cn/json/xumd1piw.html http://www.cnblogs.com/zoumiaomiao/p/4909539.html ...
- js解析json js获取json里面的某个节点的数据 js解析json数据
获取data里面的节点 $.ajax({type: "GET",url: '../api/数据接口.aspx',dataType: 'json',success: function ...
- R语言获取丁香园疫情数据动态网站
R语言获取丁香园疫情数据(动态网站) 这个文章已经更新了,请看我公众号文章: 链接为: 爬丁香园数据 对上面文章追加更改: 内容追加 历史数据也已经上线: 历史数据-公众号pypi 前篇数据可视化,数 ...
- Python 获取接口数据,解析JSON,写入文件
Python 获取接口数据,解析JSON,写入文件 用于练手的例子,从国家气象局接口上获取JSON数据,将它写入文件中,并解析JSON: 总的来说,在代码量上,python代码量要比java少很多.而 ...
- 【Python使用】Python解析JSON数据的基本方法/用MATLAB解析json格式数据
一 JSON数据格式介绍 JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式. JSON建构于两种结构:json是Javascript中的对象和数组中的对象, ...
- Python爬虫笔记——解析json数据(以周杰伦歌单为例)及Headers
一.Network Network能够记录浏览器的所有请求.我们最常用的是:ALL(查看全部)/XHR(仅查看XHR)/Doc(Document,第0个请求一般在这里),有时候也会看看:Img(仅查看 ...
最新文章
- oracle 授权 传递,Oracle基础学习4--Oracle权限传递
- DevOps案例研究:庖丁解牛,剖析Google持续交付之道
- MySQL Spatial Data Types
- 程序员,岂能被网站吞吐量难住?
- Hibernate的双向1-N关联(五)
- android授权新浪微博 服务端,android应用关于新浪微博授权登陆解决方案
- java实验室管理系统报告_基于JAVA的实验室信息管理系统设计与实现
- IT数学逻辑之正余弦定理指正弦定理和余弦定理
- win7文件夹加密_小编还原win7系统文件夹加密码的步骤
- 英文视频添加中英双语字幕(基于Whisper语音识别和Google翻译)
- Java操作MongoDB数据库(简明版)
- 常见鸟的种类及特点_鸟的分类
- css 随机 数,纯CSS实现随机效果
- 彻底删除的文件如何恢复?误删数据恢复,四种方法就可以解决
- 深度学习网络结构笔记----Depthwise卷积与Pointwise卷积--深度可分卷积-- GoogleNet,Xception,MobileNetv1--v3
- IOS企业版app部署到自己服务器,不通过AppStore,在iOS设备上直接安装应用程序
- ZooKeeper 可视化工具
- python编程常用英语单词_Python必备常用英语词汇1(吐血整理)
- 文本挖掘(超详细:数据获取 - 数据清洗 - 中文分词 - 去除停用词 - 词频统计 - 词云图 - 情感分析)
- 人工智能识别植物准确率高达80% 植物学家轻松了