如何利用Python制作新型冠病毒实时疫情图?
一.数据采集
先找到数据,对数据进行数据采集
数据来源:新浪疫情实时监测
URL: https://news.sina.cn/zt_d/yiqing0121
数据采集:
1.访问https://news.sina.cn/zt_d/yiqing0121
2.打开Chrome开发者工具,点开network,刷新页面,点击各个请求,找到获取取json的请求。
例如:附图
https://interface.sina.cn/news/wap/fymap2020_data.d.json?1581410367084&&callback=sinajp_15814103671094932140955446096
返回的数据类型:
Headers:
Genneral
Request URL: https://interface.sina.cn/news/wap/fymap2020_data.d.json?1581410367084&&callback=sinajp_15814103671094932140955446096
Request Method: GET
Status Code: 200
Remote Address: 39.156.6.163:443
Referrer Policy: unsafe-url
Response Headers
content-type: text/html
返回的数据显示:
City中,cureNum是治愈数,deathNum是死亡人数。value是确诊数
二. 数据处理:
用到以下几个模块
1.requests模块 (用于网页访问)
2.re模块 (用于正则表达式,处理数据时需要)
3.json模块,读取数据
4.图表地图模块:pyecharts
数据包:echarts-china-provinces-pypkg
数据包:echarts-china-cities-pypkg
(用pip安装requests,pyecharts以及两个数据包),例如:pip install pyecharts
三.数据处理代码:
说明:响应返回数据包含在一个js变量中,需要用正则处理下,然后用python自带的json.loads方法转为dict。
import requests
json_str = re.search("\(+([^)]*)\)+", result.text).group(1)
|
生成地图代码:
For循环遍历json数据,把省名和确诊数存在data数据里传给map对象。
data=[] #这里不指定 max,表示max为无限大 map_p.add("中国确诊", data, maptype="china") |
生成图表如下:
max=1000,是指渲染指标,达到1000,就颜色越深。