Python获取2019-nCoV疫情实时追踪数据

戳蓝字“CSDN云计算”关注我们哦!

来源 | 三行科创

责编 | Carol

出品 | CSDN云计算(ID:CSDNcloud) 

2019-nCoV新型冠状病毒引发的肺炎牵动全国人民的心,无数无畏的英雄儿女逆行而上奔赴前线,作者也于2020年2月2号回上海了开启居家办公模式。2月3日上午部门开了电话会议后,晚上刷手机刷这刷着觉得也要像那些医务人员一样勇敢,为疫情做点什么,于是有了这次2019-nCoV项目,本项目包括如下三部分。

  • 第一部分 获取疫情数据

  • 第二部分 地理可视化

  • 第三部分 病例数据规律探索

本篇主要讲如何获取实时疫情数据。

分析与操作

很多大型门户网站和手机应用都开设了专门的疫情实时追踪数据网站和功能,比较友好的有腾讯新闻,网易新闻,新浪新闻,三者网页感官大体差不多,有疫情最新总数,疫情地图,疫情病例曲线等,数据来源于国家及各地卫生健康委员会每日发布的信息,今天我们就以腾讯新闻为例来获取疫情实时数据。

具体操作

1、打开目标网站

2、按住F12,进入开发者模式,再按Ctrl+R刷新

3、在NetWork下找到getOnsInfo?name=disease_h5列

4, 双击该条目,跳转到一个类似于https://view.inews.qq.com/g2/getOnsInfo?name=disease_h5&callback=jQuery34106817348088859214_1580806762734&_=1580806762735网站,发现里面网站都是非常工整的json格式数据,即我们想要获取的疫情数据,但是我们请求的url为https://view.inews.qq.com/g2/getOnsInfo?name=disease_h5即可,因为后面callback参数只是记录你访问的一个标识。

完整代码

疫情数据找到了,接下来就是通过requests模块访问并获取并加以整理数据的事情了。

# -*- coding: utf-8 -*-
"""
Created on Tue Feb  4 10:27:51 2020
project name:2019-nCoV
@author: 帅帅de三叔
"""
import json, csv, requests #导入请求模块
def get_data(): #定义获取数据并写入csv文件里的函数url = "https://view.inews.qq.com/g2/getOnsInfo?name=disease_h5" #请求网址response=requests.get(url).json() #发出请求并json化处理#print(response) #测试一下是否获取数据了data = json.loads(response['data']) #提取数据部分#print(data.keys()) #获取数据组成部分['chinaTotal', 'chinaAdd', 'lastUpdateTime', 'areaTree', 'chinaDayList', 'chinaDayAddList']update_time=data["lastUpdateTime"]chinaDayList=data["chinaDayList"] #历史数据 with open("每日病例.csv","w+",newline="") as csv_file:writer=csv.writer(csv_file)header=["date","confirm","suspect","dead","heal", "update_time"] #定义表头writer.writerow(header)for i in range(len(chinaDayList)):data_row1=[chinaDayList[i]["date"],chinaDayList[i]["confirm"],chinaDayList[i]["suspect"],chinaDayList[i]["dead"],chinaDayList[i]["heal"], update_time]writer.writerow(data_row1) chinaDayAddList=data["chinaDayAddList"] #历史新增数据        with open("每日新增病例.csv","w+",newline="") as csv_file:writer=csv.writer(csv_file)header=["date","confirm","suspect","dead","heal","update_time"] #定义表头writer.writerow(header)for i in range(len(chinaDayAddList)):data_row2=[chinaDayAddList[i]["date"],chinaDayAddList[i]["confirm"],chinaDayAddList[i]["suspect"],chinaDayAddList[i]["dead"],chinaDayAddList[i]["heal"], update_time]writer.writerow(data_row2)areaTree=data["areaTree"] #各地方数据with open("全国各城市病例数据.csv","w+",newline="") as csv_file:writer=csv.writer(csv_file)header=["province", "city_name", "total_confirm", "total_suspect", "total_dead", "total_heal", "today_confirm", "today_suspect", "today_dead", "today_heal","update_time"]writer.writerow(header)china_data=areaTree[0]["children"] #中国数据for j in range(len(china_data)):province=china_data[j]["name"]  #省份city_list=china_data[j]["children"] #该省份下面城市列表for k in range(len(city_list)): city_name=city_list[k]["name"] #城市名称total_confirm=city_list[k]["total"]["confirm"] #总确认病例total_suspect=city_list[k]["total"]["suspect"] #总疑似病例total_dead=city_list[k]["total"]["dead"] #总死亡病例total_heal=city_list[k]["total"]["heal"] #总治愈病例today_confirm=city_list[k]["today"]["confirm"] #今日确认病例today_suspect=city_list[k]["total"]["suspect"] #今日疑似病例today_dead=city_list[k]["today"]["dead"] #今日死亡病例today_heal=city_list[k]["today"]["heal"] #今日治愈病例            print(province, city_name, total_confirm, total_suspect, total_dead, total_heal, today_confirm, today_suspect, today_dead, today_heal,update_time)data_row3=[province, city_name, total_confirm, total_suspect, total_dead, total_heal, today_confirm, today_suspect, today_dead, today_heal, update_time]writer.writerow(data_row3)if __name__=="__main__":get_data()

代码解读

这里主要用到json, csv, requests三个模块,用requests发出请求,获取返回的json格式数据,我们可以用data.keys()打印出数据构成,一共有’chinaTotal’, ‘chinaAdd’, ‘lastUpdateTime’, ‘areaTree’, ‘chinaDayList’ 和 ‘chinaDayAddList’ 6部分数据,分别对应中国疫情总数,当日新增疫情总数,最近一次更新时间,各地方疫情明细,历史疫情总数和历史新增总数,其中areaTree还包括海外数据,在厘清数据组成之后就需要把各部分数据分别弄下来,对于’chinaTotal’, ‘chinaAdd’, ‘lastUpdateTime’这三部分数据都只有一条数据,对后面的研究不大,故这次只准备获取后面三部分’areaTree’, ‘chinaDayList’ 和 ‘chinaDayAddList’ ,采取了3次分别写入csv文件中,并在每次写入的时候增加了更新时间字段,使得字段完备。

数据截图

后续

1、获取数据后接下来工作是可视化了,有两个方向,一个是pyecharts, 一个是basemap。

2、这里代码每次获取都是获取三份数据,一份是每日总病例,一份是每日新增病例,这两份都是全国汇总数据,第三份是全国各城市病例数据,这个有明细,如果要看地图变迁的话需要不同日期的数据。

3、在探索病例曲线特征的时候,可以简单的按照[时间序列拟合出logistic模型,求解模型参数,再对未来时日加以预测。

福利扫描添加小编微信,备注“姓名+公司职位”,入驻【CSDN博客】,加入【云计算学习交流群】,和志同道合的朋友们共同打卡学习!
推荐阅读:GitHub 标星 14000+,阿里开源的 SEATA 如何应用到极致?
Serverless 终结 Kubernetes?
享受梦幻技术盛宴,相约 Unite 2020
JavaScript 造就年薪超过 10 万美元的开发者们!
只需1分钟,这个网站用AI分离歌曲的人声、伴奏和乐器声
10 大趋势带你预见 DeFi 2020!
真香,朕在看了!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/519311.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

idea菜单栏消失如何调整回来

有一天, 把idea中 view下面的Appearance里面的Main Menu 给反选了 导致idea顶部的菜单栏给消失了, 就像下图这样 可以双击shift键,输入view,选择action里面的View 选择Appearance里面的Main Menu 即可把菜单栏调回来.

这款神秘的移动端OCR引擎,如何做到“所见即所得”?

阿里妹导读:随着深度学习,尤其是CNN和RNN等技术的飞速发展,文字识别技术(OCR)近几年得到了迅速的提升。与此同时,在智能化终端的大趋势下,本地化智能识别凭借更高效快捷的体验以及高度的隐私保护和零流量消耗等优势备受…

想要AI优先?数据优先才行

戳蓝字“CSDN云计算”关注我们哦!来源 | forbes编译 | shawn责编 | Carol出品 | CSDN云计算(ID:CSDNcloud) 开展人工智能和机器学习项目的人很早就知道,机器学习项目不是应用程序开发项目。机器学习项目的大部分价值在…

Cloud Toolkit 部署应用到阿里云轻量应用服务器

在之前的文章《在 Intellij IDEA 中部署 Java 应用到 阿里云 ECS》中讲解了如何将一个本地应用部署到阿里云 ECS 上去,有些读者反馈目前正在使用阿里云轻量应用服务器,咨询是否可以通过 Cloud Toolkit 插件将应用部署到这些服务器上去?最新版…

springboot 排除 默认的loggback 和slf4j的依赖

文章目录异常现象:解决方案:总结异常现象: SLF4J: Class path contains multiple SLF4J bindings. SLF4J: Found binding in [jar:file:/D:/Program%20Files/JavaEclipse/repo/ch/qos/logback/logback-classic/1.2.3/logback-classic-1.2.3.…

Node.js 应用故障排查手册 —— Node.js 性能平台使用指南

楔子 前一节中我们借助于 Chrome devtools 实现了对线上 Node.js 应用的 CPU/Memory 问题的排查定位,但是在实际生产实践中,大家会发现 Chrome devtools 更加偏向本地开发模式,因为显然 Chrome devtools 不会负责去生成分析问题所需要的 Dum…

懂编译真的可以为所欲为|不同前端框架下的代码转换

背景 整个前端领域在这几年迅速发展,前端框架也在不断变化,各团队选择的解决方案都不太一致,此外像小程序这种跨端场景和以往的研发方式也不太一样。在日常开发中往往会因为投放平台的不一样需要进行重新编码。前段时间我们需要在淘宝页面上…

面试稳了!网易资深工程师揭秘运维面经!

作者 | 阿文责编 | 伍杏玲出品 | 程序人生(ID:coder_life)受新型冠状病毒影响,很多企业都推迟了复工时间或集体开始远程办公,而一些企业本来计划春节过后开始春季招聘,但是受疫情影响已做出了调整&#xff…

java.lang.NumberFormatException: null

public static void main(String[] args) {String str null;try {int a Integer.parseInt(str);} catch (NumberFormatException e) {e.printStackTrace();}}

Pick!闲鱼亿级商品库中的秒级实时选品

一、业务背景 在电商运营工作中,营销活动是非常重要的部分,对用户增长和GMV都有很大帮助。对电商运营来说,如何从庞大的商品库中筛选出卖家优质商品并推送给有需要的买家购买是每时每刻都要思索的问题,而且这个过程需要尽可能快和…

一文看懂Microsoft Azure的十年变迁

来源 | forbes编译 | 火火酱责编 | Carol出品 | CSDN云计算(ID:CSDNcloud)当微软前首席软件架构师雷奥兹(Ray Ozzie)在2008年的PDC大会上发布Windows Azure时,没人能预估这个软件平台将会为该公司和整个行业…

74HC595

脚位图及说明 管脚说明: 14脚:DS(SER),串行数据输入引脚 13脚:OE,输出使能控制脚,它是低电才使能输出,所以接GND 12脚:RCK(STCP)&…

UI2Code智能生成Flutter代码——机器生成代码

背景 在《UI2CODE--整体设计》篇中,我们提到UI2Code工程的整体流程。前步图片分析之后,我们可以得到对应的DSL布局描述。利用DSL的资讯,结合IntelliJ Plugin介面工具,面向使用者提供生成对应Flutter代码。 本篇主要介绍我们如何…

初始化java工具失败,“初始化 Java 工具”期间发生了内部错误, java.lang.NullPointerException...

今天刚打开eclipse就报了这个错误,我怀疑是昨晚想关电脑的时候,关闭eclipse太快,没有等待工作空间保存就关了电脑的缘故错误如图:(图片来自下方链接博客,因为忘记截图了) 我百度后按照提示,删除了eclipse工…

Node.js 应用故障排查手册 —— 正确打开 Chrome devtools

楔子 前面的预备章节中我们大致了解了如何在服务器上的 Node.js 应用出现问题时,从常规的错误日志、系统/进程指标以及兜底的核心转储这些角度来排查问题。这样就引出了下一个问题:我们知道进程的 CPU/Memory 高,或者拿到了进程 Crash 后的核…

钉钉流量暴增百倍,阿里云抗住了!

2月12日,钉钉已连续在苹果应用商店霸榜7天。记者采访获悉,春节以来,在家办公及在家上课的强需求,使得钉钉后台系统峰值流量暴增百倍。钉钉通过阿里云连续扩容10万台云服务器,成功抗住这一巨大的流量冲击! 2…

PB 级数据处理挑战,Kubernetes如何助力基因分析?

引言 James Watson 和 Francis Crick 于 1953 年发现了 DNA 的双螺旋结构,从此揭开了物种进化和遗传的神秘面纱,开启了人类对数字化遗传的认知,但是人类基因奥秘却是一点点被读懂的。 1956 年,一则癌症和染色体相关性的发现令整…

Nginx 外的另一选择,轻量级开源 Web 服务器 Tengine 发布新版本

新版发布 近日,轻量级开源 Web 服务器 Tengine 发布了2.3.0版本,新增如下特性: ngx_http_proxy_connect_module [1] ,该模块让 Tengine 可以用于正向代理场景,支持对 CONNECT 方法请求的处理;HTTP2 Serve…

腾讯云数据库Redis助力百万企业远程办公

受疫情影响,多数企业员工目前无法回到写字楼办公,学生推迟开学,稳定高效的远程办公和直播授课成为2020年的开年刚需。腾讯从1月24日开始向全国免费开放可支持300人同时在线会议的“腾讯会议”,直至疫情结束。央视新闻联播对此也给…

打通前后端逻辑,客户端Flutter代码一天上线

一、前沿 ​ 随着闲鱼的业务快速增长,运营类的需求也越来越多,其中不乏有很多界面修改或运营坑位的需求。闲鱼的版本现在是每2周一个版本,如何快速迭代产品,跳过窗口期来满足这些需求?另外,闲鱼客户端的包…