程序代码
import time
import json
import requests
from datetime import datetime
import pandas as pd
import numpy as np
#########数据抓取
def catch_cityinfo():
url = 'https://view.inews.qq.com/g2/getOnsInfo?name=disease_h5&callback=&_=%d'%int(time.time()*1000)
city_data = requests.get(url=url).json()['data']
city_data = json.loads(city_data)
return city_data
#############
#########数据的提取
citydata=catch_cityinfo()
##更新日期
gx_data=citydata['lastUpdateTime']
##取出所有市新增 累计 治愈 死亡 病死率
citydata=citydata['areaTree'][0]['children']
#各个城市数据
csdata={}
#数据可视化所用数据
dtdata=[]
for char in citydata:
dtdata.append([char['name'], char['total']['confirm']])
char=char['children']
for char1 in char:
csdata[char1['name']]=[char1['today']['confirm'],char1['total']['confirm'],char1['total']['dead']]
cs_data=pd.DataFrame.from_dict(csdata,orient='index',columns=['新增人数','累计人数','死亡人数'])
#################
#########数据展示
from pyecharts import options as opts
from pyecharts.charts import *
from pyecharts.globals import ThemeType
area_map = Map()
area_map .add("",dtdata, "china",is_map_symbol_show=False)
area_map.set_global_opts(title_opts=opts.TitleOpts(title="Map-疫情地图"),visualmap_opts=opts.VisualMapOpts(max_=3000,is_piecewise=True,
pieces=[
{"min": "0", "max": "10", "label": "0-10", "color": "#FFA07A"},
{"min": "10", "max": "100", "label": "10-100", "color": "#FF7F50"},
{"min": "100", "max": "1000", "label": "100-1000", "color": "#FF4500"},
{"min": "1000", "max": "10000", "label": "1000-10000", "color": "#FF0000"},
{"min": "10000", "max": "5000000", "label": ">10000", "color": "#B22222"},
]))
area_map.render("疫情地图.html")
##############
print("******************************************************************************")
print(" 欢迎使用实时疫情数据查询系统")
print(" 数据更新时间:"+gx_data)
print("1.查询所有省数据")
print("2.查询所有市数据")
print("3.查询指定市数据")
print("4.查询指定省数据")
print("5.疫情实时热力图")
print("6.退出查询系统")
print("******************************************************************************")
while True:
xh=int(input("请输入您要选择功能的序号:"))
if xh==1:
shuju={}
for char in dtdata:
shuju[char[0]]=char[1]
pd.set_option('display.max_rows', None)
print(pd.DataFrame.from_dict(shuju,orient="index",columns=["累计人数"]))
if xh==2:
pd.set_option('display.max_rows', None)
print(cs_data)
if xh==3:
cs=input("输入指定城市:")
sfzd=False
for key in csdata:
if key==cs:
print("新增人数:"+str(csdata[key][0]))
print("累计人数:"+str(csdata[key][1]))
print("死亡人数:"+str(csdata[key][2]))
sfzd=True
if sfzd==False:
print("请检查输入的市区是否正确")
if xh==4:
sf = input("输入指定省份:")
sfzd=False
for char in dtdata:
if(char[0]==sf):
print("累计人数:"+str(char[1]))
sfzd=True
if sfzd==False:
print("请检查输入的省份是否正确")
if xh==5:
print("疫情实时热力图(将地址直接复制到浏览器即可)")
print("D:\pycharmXM\Test\疫情地图.html")
if xh==6:
print("感谢您的使用")
break