社区微信群开通啦,扫一扫抢先加入社区官方微信群
社区微信群
今天没事干,在家里用Python语言实现了一下网上获取疫情,并生成csv文档。
现在全国的疫情数据网上一大堆,我们首先测试下数据地址看是否能正常显示。
可以显示最新的数据
好了,下面就用代码来整理并显示这些数据,并生成CSV文件。具体代码如下:
# -*- coding: utf-8 -*-
"""
Spyder Editor
This is a temporary script file.
"""
import requests
import json
import csv
def get_data():
url = 'https://view.inews.qq.com/g2/getOnsInfo?name=disease_h5&callback=jQuery341001657575837432268_1581070969707&_=1581070969708'
headers = {'user-agent': 'Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Mobile Safari/537.36'}
res = requests.get(url, headers=headers).text
a = res.split('jQuery341001657575837432268_1581070969707(')[1].split(')')[0]
c = json.loads(a)
data = json.loads(c['data'])
return data
def print_data_china():
data = get_data()
print('统计截至时间:'+str(data['lastUpdateTime']))
print('全国确诊人数:'+str(data['chinaTotal']['confirm']))
print('相较于昨天确诊人数:'+str(data['chinaAdd']['confirm']))
print('全国疑似病例:'+str(data['chinaTotal']['suspect']))
print('相较于昨天疑似人数:'+str(data['chinaAdd']['suspect']))
print('全国治愈人数:'+str(data['chinaTotal']['heal']))
print('相较于昨天治愈人数:'+str(data['chinaAdd']['heal']))
print('全国死亡人数:'+str(data['chinaTotal']['dead']))
print('相较于昨天死亡人数:'+str(data['chinaAdd']['dead']))
def print_data_path_china():
data = get_data()['areaTree'][0]['children']
path_data = []
path_china = []
path = str(input('请输入要查询的省份:'))
for i in data:
path_china.append(i['name'])
path_data.append(i['children'])
if path in path_china:
num = path_china.index(path)
data_path = path_data[num]
print('{:^10}{:^10}{:^10}{:^10}{:^10}{:^10}{:^10}{:^10}{:^10}'.format('地区','累计确诊人数','相较于昨日确诊人数','累计疑似病例','相较于昨日疑似病例','累计治愈人数','相较于昨日治愈人数','累计死亡人数','相较于昨日死亡人数'))
f = open('疫情统计.csv','w',encoding='gb2312')
csv_writer = csv.writer(f)
# 创建表头
csv_writer.writerow(["地区","累计确诊人数","相较于昨日确诊人数","累计疑似病例","相较于昨日疑似病例","累计治愈人数","相较于昨日治愈人数","累计死亡人数","相较于昨日死亡人数"])
for i in data_path:
name = i['name']
today = i['today']
total = i['total']
a = '{:^10}{:^15}{:^15}{:^15}{:^15}{:^15}{:^15}{:^15}{:^15}'
print(a.format(name, str(total['confirm']), str(today['confirm']), str(total['confirm']), str(today['suspect']), str(total['heal']), str(today['heal']), str(total['dead']), str(today['dead'])))
# 写入csv文件内容
csv_writer.writerow([name,total['confirm'], today['confirm'], total['confirm'], today['suspect'], total['heal'], today['heal'], total['dead'], today['dead']])
# 关闭文件
f.close()
if __name__ == '__main__':
get_data()
print_data_china()
print_data_path_china()
运行程序后在控制台打印结果如下
可以单独查询任意省市的数据并生成csv文档。
如拿内蒙古为例,最后生成的文档效果:
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!