首页 > 编程语言 >【python爬虫】从腾讯API爬取美国疫情数据+制表

【python爬虫】从腾讯API爬取美国疫情数据+制表

时间:2024-09-08 20:52:58浏览次数:11  
标签:plt confirm python heal dead 爬取 API line data

最近(文章撰写时间为2020/6/1 18:40)疫情在中国情况好转,却在美国暴虐。
本篇文章将爬取腾讯提供的美国疫情数据并制表。

1. 爬取数据

调用API接口

接口:https://api.inews.qq.com/newsqa/v1/automation/modules/list?modules=FAutoCountryMerge
观察得到的数据:

{
	...,
	"data": {
		"FAutoCountryMerge": {
			...,
			"美国": {
				"showDash":false,
				"list": [
					{"date":"01.28","confirm_add":0,"confirm":5,"heal":0,"dead":0},
					...,
					{"date":"05.29","confirm_add":25069,"confirm":1768461,"heal":510713,"dead":103330},
					{"date":"05.30","confirm_add":23290,"confirm":1793530,"heal":519569,"dead":104542},
					{"date":"05.31","confirm_add":20350,"confirm":1816820,"heal":535238,"dead":105557},
					{"date":"06.01","confirm_add":20350,"confirm":1837170,"heal":599867,"dead":106195}
				]
			},
			...
		}
	}
}

由如上代码所示,对于一个国家,获取其疫情数据只需要使用:

json['data']['FAutoCountryMerge']['<国名>']['list']

对于美国的数据,使用:

json['data']['FAutoCountryMerge']['美国']['list']

代码

上面都是干货,下面才是真正的code

from requests import get

url = 'https://api.inews.qq.com/newsqa/v1/automation/modules/list?modules=FAutoCountryMerge'
data = get(url).json()['data']['FAutoCountryMerge']['美国']['list']

处理数据

python中,其结果是一个list对象:

[
	{"date":"01.28","confirm_add":0,"confirm":5,"heal":0,"dead":0},
	...,
	{"date":"05.29","confirm_add":25069,"confirm":1768461,"heal":510713,"dead":103330},
	{"date":"05.30","confirm_add":23290,"confirm":1793530,"heal":519569,"dead":104542},
	{"date":"05.31","confirm_add":20350,"confirm":1816820,"heal":535238,"dead":105557},
	{"date":"06.01","confirm_add":20350,"confirm":1837170,"heal":599867,"dead":106195}
]

该对象中存放美国每天的疫情数据,
date:从1月28日至今的日期;
confirm_add:该日新增确诊;
confirm:该日累计确诊;
heal:该日累计治愈;
dead:该日累计死亡。

筛选数据

数据的筛选很重要。

  • confirm_add(该日新增确诊)明显没有用,去掉
  • 应该增加一个now_confirm(该日现存确诊),这样能清楚地看到美国治疗中人数。
    该值可以通过confirm - heal - head得到。

date:从1月28日至今的日期
confirm_add:该日新增确诊
confirm:该日累计确诊
heal:该日累计治愈
dead:该日累计死亡
now_confirm: 该日现存确诊

代码

由于最前面人数太少,数据会影响到最终绘图质量。
所以,我从第35个开始保存数据,当然如果您想使用所有数据,将data[35:]改为data即可。

dates = []
confirms = []
now_confirms = []
heals = []
deads = []

for day_data in data[35:]:
    dates.append(day_data['date'])
    confirms.append(day_data['confirm'])
    heals.append(day_data['heal'])
    deads.append(day_data['dead'])
    now_confirms.append(confirms[-1] - heals[-1] - deads[-1])

2. 绘图

参考文章:https://www.cnblogs.com/lone5wolf/p/10870200.html
由于我在绘图方面还是个小白,所以直接贴出代码,敬请谅解。。。

import matplotlib.pyplot as plt
from matplotlib.font_manager import FontProperties

# 绘制文本
plt.figure(figsize=(11.4, 7.7))

confirm_line, = plt.plot(dates, confirms, color='#8B0000')
now_confirm_line, = plt.plot(dates, now_confirms, color='red', linestyle=':')
heal_line, = plt.plot(dates, heals, color='green', linestyle='--')
dead_line, = plt.plot(dates, deads, color='black', linestyle='-.')

# 绘制图形
my_font = FontProperties(fname=r'fonts\msyh.ttc')
plt.legend(handles=[confirm_line, now_confirm_line, heal_line, dead_line], labels=['累计确诊', '现存确诊', '治愈', '死亡'], prop=my_font)
plt.xlabel('日期', fontproperties=my_font)
plt.ylabel('人数', fontproperties=my_font)
plt.title('美国2019-nCov疫情情况', fontproperties=my_font)
plt.gca().xaxis.set_major_locator(plt.MultipleLocator(7))

# 保存并显示统计图
plt.savefig('AmericaNCovData.png')
plt.show()

结果图片

美国nCov

3. 完整代码

# -*- coding: utf-8 -*-
from requests import get
import matplotlib.pyplot as plt
from matplotlib.font_manager import FontProperties

url = 'https://api.inews.qq.com/newsqa/v1/automation/modules/list?modules=FAutoCountryMerge'
data = get(url).json()['data']['FAutoCountryMerge']['美国']['list']

dates = []
confirms = []
now_confirms = []
heals = []
deads = []

for day_data in data[35:]:
    dates.append(day_data['date'])
    confirms.append(day_data['confirm'])
    heals.append(day_data['heal'])
    deads.append(day_data['dead'])
    now_confirms.append(confirms[-1] - heals[-1] - deads[-1])

# 绘制文本
plt.figure(figsize=(11.4, 7.7))

confirm_line, = plt.plot(dates, confirms, color='#8B0000')
now_confirm_line, = plt.plot(dates, now_confirms, color='red', linestyle=':')
heal_line, = plt.plot(dates, heals, color='green', linestyle='--')
dead_line, = plt.plot(dates, deads, color='black', linestyle='-.')

# 绘制图形
my_font = FontProperties(fname=r'fonts\msyh.ttc')
plt.legend(handles=[confirm_line, now_confirm_line, heal_line, dead_line], labels=['累计确诊', '现存确诊', '治愈', '死亡'], prop=my_font)
plt.xlabel('日期', fontproperties=my_font)
plt.ylabel('人数', fontproperties=my_font)
plt.title('美国2019-nCov疫情情况', fontproperties=my_font)
plt.gca().xaxis.set_major_locator(plt.MultipleLocator(7))

# 保存并显示统计图
plt.savefig('AmericaNCovData.png')
plt.show()

代码下载:GitHub

标签:plt,confirm,python,heal,dead,爬取,API,line,data
From: https://www.cnblogs.com/stanleys/p/18403439/pws-tencent-us-19ncov

相关文章

  • Python和MATLAB(Java)及Arduino和Raspberry Pi(树莓派)点扩展函数导图
    ......
  • 【Python使用】嘿马python高级进阶全体系教程第9篇:HTTP 协议,1. HTTP 协议的介绍【附
    本教程的知识点为:操作系统1.常见的操作系统4.小结ls命令选项2.小结mkdir和rm命令选项1.mkdir命令选项压缩和解压缩命令1.压缩格式的介绍2.tar命令及选项的使用3.zip和unzip命令及选项的使用4.小结编辑器vim1.vim的介绍2.vim的工作模式3.vim的末行模......
  • Python毕业设计基于Django的川剧戏剧京剧戏曲科普平台 含选座功能
    文末获取资源,收藏关注不迷路文章目录一、项目介绍1管理员功能模块前台系统功能模块二、主要使用技术三、研究内容四、核心代码五、文章目录一、项目介绍随着我国经济的高速发展与人们生活水平的日益提高,人们对生活质量的追求也多种多样。尤其在人们生活节奏不断加......
  • 【Python】对象(包括类、函数)取名方法
    先上干货,通用的:字母:A-Za-z下划线:_数字:0-9(注意:数字不能在开头)理论上可以使用中文变量名,但强烈不建议使用。合法名字举例abcdef GoodCoder AD_fhrygfuigfrA_a_007 __NAME123 _P_T__123456 Cc_Dd _不合法名字举例666Code C++ 1+1=2 (5)4654ty54F 0.123 [email protected]......
  • Python函数之def定义函数
    链接想研究Python函数?看这里函数怎样取名?看这里有参数的函数还可以怎么传参?看这里一、无参数函数结构def<函数名>():#强制要求 <函数体>#可省略 return<返回值>#可省略程序举例用函数的Helloworld程序:#prints'HelloWorld\nDone'#Author:GoodCoder666d......
  • Python函数之*[参数名]和**[参数名]的用处
    一、*[参数名]调用合法调用普通调用*参数名一般写成*args,如:deffunc(*args): print(args)可以试着调用func:>>>func(1)(1,)>>>func()()>>>func(1,2,3)(1,2,3)>>>func(dict(),set(),str(),int())({},set(),'',0)所以,我们发现,这......
  • 前端调取KimiAPI实现,快来看看
    准备阶段首先我们先登录MoonshotAI平台,获取我们所需要的Apikey这里可以注册一个新的APIKEY,而且是免费版的,并且可以看到使用的次数。  代码阶段HTML部分<template><div><div><inputtype="text"v-model="textcontent"placeholder="输入你的问题"/>......
  • 使用微信小程序-云开发时报错: Error: errCode: -401003 api parameter type error |
    错误Uncaught(inpromise)thirdScriptErrorerrCode:-401003apiparametertypeerror|errMsg:parameter.datashouldbeobjectinsteadofundefined;Error:errCode:-401003apiparametertypeerror|errMsg:parameter.datashouldbeobjectinsteadofundef......
  • PHP提供的高级抽象和API是什么意思?底层原理是什么?
    PHP提供的高级抽象和API是PHP语言核心及其扩展库中的一系列功能和结构的集合,它们为开发者提供了丰富的工具和接口,使得开发者能够更高效地编写代码、实现功能,并减少重复性工作。高级抽象高级抽象指的是PHP语言中那些将底层实现细节隐藏起来,只暴露给开发者简洁、易用接口的概念......
  • 手撕Python之序列类型
    1.列表---list索引的使用当我们有一个数据的时候,我们怎么将这个数据存储到程序呢?我们定义一个变量,将数据存储在变量中那么如果有100个数据呢?要定义100个变量吗?我们是可以用列表这个东西进行多个数据的存放列表的定义:[]空列表:[]列表:[元素1,元素2,元素3]列表中的内容......