今天和大家分享的是Python爬取网易实时疫情数据利用pyechart做中国各省份实时疫情分布地图。这是和前面发布的一篇推文一个系列的。部分代码请看前面的文章。
本文选取的网易提供的API:
http://c.m.163.com/ug/api/wuhan/app/index/feiyan-data-list
返回的数据格式如下图:
爬取网易API接口实时数据
# 爬取疫情数据def geturl(url):try:
response = requests.get(url, headers=headers)print(response.status_code)if response.status_code == 200:
content_field = json.loads(response.text)
list_datas_1 = content_field['data']['list']return list_datas_1else:print('返回代码:' + response.status_code)return None except Exception as e:print('此页有问题!', e)return None
获取各个省份疫情数据
def makedict_pro(list,province_name):
dict1 = {}
dict2 = {}for item in list:for k,v in item.items():if json.dumps(item["confirm"]) != "null":
dict2[v] =dict2.get(v,0) +item["confirm"]return dict1,dict2
把获取的数据传入绘图函数,绘制各省份疫情地图:
def makemap_china(dict):# 省和直辖市 province_distribution = dictvalue=province_distribution.values()# maptype='china' 只显示全国直辖市和省级 title = str(int(time.strftime("%Y%m%d"))-1)+"中国疫情地图" map = Map()
map.set_global_opts(title_opts=opts.TitleOpts(title=title), visualmap_opts=opts.VisualMapOpts(max_=200, is_piecewise=True, pieces=[
{"min": 191, "label": ">190", "color": "#780707"}, #数据范围分段,分颜色,可以根据数据大小具体分配大小 {"max": 190, "min": 151, "label": "190-151", "color": "#8A0808"}, {"max": 150, "min": 121, "label": "150-121", "color": "#B40404"}, {"max": 120, "min": 91, "label": "120-91", "color": "#CD1111"}, {"max": 90, "min": 61, "label": "30-21", "color": "#DF0101"}, {"max": 60, "min": 31, "label": "60-31", "color": "#F68181"}, {"max": 30, "min": 1, "label": "30-1", "color": "#F5A9A9"}, {"max": 0, "min": 0, "label": "0", "color": "#FFFFFF"}, ], ) #最大数据范围,分段 )
map.add(title, data_pair=province_distribution.items(), maptype="china", is_roam=True)
map.render('中国疫情地图.html')
调用函数完成项目需求
list_data = geturl(url)
pdataList = {'四川': 0, '浙江':0, '福建': 0, '江苏': 0, '湖南': 0, '山东': 0, '安徽': 0, '广东': 0, '河北': 0, '湖北': 0, '吉林': 0,'上海': 0, '江西': 0, '广西': 0, '贵州': 0, '北京': 0, '云南': 0, '重庆': 0, '河南': 0, '陕西': 0, '山西': 0, '辽宁': 0, '新疆': 0, '内蒙古': 0, '黑龙江': 0, '天津':0, '甘肃': 0, '海南': 0, '青海': 7.0, '宁夏': 0, '西藏': 0}for p in pdataList:
dict_data1,dict_data2 = makedict_pro(list_data,p)
makemap_pro(dict_data1,p)
makemap_china(dict_data2)
运行项目就可以生成全国各省疫情地图的网页了。效果如图:
生成的网页默认引用地图资源的是
https://assets.pyecharts.org/assets/echarts.min.js
https://assets.pyecharts.org/assets/maps/guangdong.js
网站有时候请求资源不稳定,建议自己把资源本地化。
假如您觉得还不错,扫码帮忙关注一下呗: