获取腾讯公布的疫情数据并绘制疫情地图Python

# 爬取腾讯公布的疫情数据

#全国汇总
#现有  ... 更新时间

#每一个省份:
#新增   现有   累计   无症状  死亡  治愈

import json
import requests
from pyecharts.charts import Map,Geo
from pyecharts import options as opt
from pyecharts.globals import GeoType,RenderType

#定义需要获取数据的网址链接
url = "https://view.inews.qq.com/g2/getOnsInfo?name=disease_h5"

#获取网址里面的数据
resp = requests.get(url = url).json()
#resp不能直接使用该数据,需要用json转换一下
#json.loads(名字) 使用json转化数据
data = json.loads(resp["data"])
#print(data)   #打印为:data(key)的value值

#获取全国总数据
china_Info = data["chinaTotal"]
#print(china_Info)    #打印:全国数据汇总

#获取各省数据汇总
#"children"数据在"areaTree"数据的第一个里面,因此要加上[0]
china_children_Info = data["areaTree"][0]["children"]
#print(china_children_Info)

#打印各个省的名字及确诊数量到控制台
china_data = []

#定义结果(各省份死亡人数)
result = ""
DeathMax = 0

#循环每个省份提取名字和确诊数目
for i in range(len(china_children_Info)):
    name = china_children_Info[i]["name"]
    #累计在toal里的confirm里面
    confirm = china_children_Info[i]["total"]["confirm"]
    #print("%s: %s"%(name,confirm))

    '''
    #各省份死亡人数
    if (china_children_Info[i]["total"]["dead"] > DeathMax):
        DeathMax = china_children_Info[i]["total"]["dead"]
        result = china_children_Info[i]["name"]
    '''

    #-----------------------------------------------------------
    #取出数据之后(省份名字+确诊数量)
    china_data.append([name,confirm])

#用带数据的china_data绘图

#标题
china_total = "确诊%s\t疑似%s\t死亡%s\t治愈%s\t更新时间%s"%(
                china_Info["confirm"],china_Info["suspect"],
                china_Info["dead"],china_Info["heal"],
                data["lastUpdateTime"])
print(china_total)

geo = (
    Geo(init_opts=opt.InitOpts(          #初始化中国地图
        width="1200px",                  #宽度
        height="600px",                  #高度
        bg_color="#404a59",              #背景颜色
        page_title="全国疫情实时报告",   #标题
        renderer=RenderType.SVG,         #渲染风格,可选SVG和CANVAS两个值
        theme="white"                    #主题颜色
    ))
    .add_schema(                            #地图的基本配置
        maptype="china",                    #地图类型:中国
        itemstyle_opts=opt.ItemStyleOpts(   #地图区域样式
            color="rgb(49,60,72)",          #颜色
            border_color="rgb(0,0,0)"       #边界颜色
        )
    )
    .add(                               #设置数据
        series_name="Geo",              #系列名称
        data_pair=china_data,           #地图数据
        type_=GeoType.EFFECT_SCATTER    #设置地图的动画方式:EFFECT_SCATTER——水波纹
    )
    .set_series_opts(                            #设置系列配置
        label_opts=opt.LabelOpts(is_show=False), #标签,is_show=False 是否显示
        effect_opts=opt.EffectOpts(scale=6)      #动画的缩放比例
    )
    .set_global_opts(                       #设置全局配置
        visualmap_opts=opt.VisualMapOpts(   #视觉区域
            min_=0,                         #区域最小值
            max_=china_data[0][1]           #最大值
        ),
        title_opts=opt.TitleOpts(
            title="全国疫情地图",           #标题
            subtitle=china_total,           #副标题
            pos_left="center",              #相对于左边居中
            pos_top="20px",                 #相对于上边间隔20px
            title_textstyle_opts=opt.TextStyleOpts(color="#fff")  #设置字体颜色
        ),
        legend_opts=opt.LegendOpts(is_show=False)  #是否显示图例
    )
)

#将生成的图片创建成网页
geo.render("./中国疫情地图.html")  #注意后缀.html
geo.render_notebook()

获取腾讯公布的疫情数据并绘制疫情地图Python_第1张图片

你可能感兴趣的:(Python,python)