Python抓取网易实时疫情数据

有朋友反馈之前抓取百度疫情数据的代码已经无法运行,没看过的朋友可以点击下列链接查看。

Python抓取实时数据绘制地图

看了下,因为百度调整了部分页面信息,代码要调整下就可以使用了,那如果下次再调整呢?你说这概率大不大?

我觉得是相当的大,那有没有稳定点的方法呢?

这样问,肯定是有的,就是换种方式获取疫情实时数据。

这次我们来抓取网易JSON疫情数据。

链接是这个

https://c.m.163.com/ug/api/wuhan/app/data/list-total

打开网址,看到是这样的,如果你是第一次接触JSON数据,包你看的一脸懵逼。不过不要紧,如果你用的是火狐浏览器,你还可以发现上方还有JSON、美化输出等功能。

Python抓取网易实时疫情数据

这是点美化输出的效果,看起来是不是好一点,不过还是一脸懵逼对不对,因为你就没接触过JSON数据嘛。

 

这是点JSON的效果,有不同颜色了,看起来更舒服了

好了,我们开始进行数据抓取与导入了。先导入需要用的模块。

import json
import requests
from pandas.io.json import json_normalize

然后开始抓数据

url="https://c.m.163.com/ug/api/wuhan/app/data/list-total"
headers = {'user-agent''Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.106 Safari/537.36'}
ret=requests.get(url, headers=headers)
result=json.loads(ret.content)

查看下抓到的数据result,可以看到是个字典,我们要的数据在key=data里面。

继续双击点开data,我们要的数据在areaTree里面。

Python抓取网易实时疫情数据

继续双击点开areaTree,这是areaTree是个列表,我们要的数据第一行里面。

继续双击点开areaTree的第一行,这时候又变成一个字典了,看到中国没有?哈哈,我们要的数据在key=children里面。

继续双击点开children,这就是我们要的数据啦,这又变成了一个列表,每一行就是一个省的数据

我们点开第一行看看,看到没有,湖北出现了。

如果继续点children,就是湖北各城市的数据啦,不点不点了,我们就只要省份数据,怎么提出来呢?继续进行数据处理,提取出我们要的数据。

t= result['data']['areaTree'][0]['children']
sf=json_normalize(t)

就这么两句代码就其出来了,哈哈!我们来看下数据。

然后我们要的字段就是name、total.confirm,name就是省份名,total.confirm就是累计确诊人数,如果换成taday.confirm就是新增确诊人数。直接把name、total.confirm替换之前绘制地图的代码相应位置。

# 将数据转换为二元的列表
list1 = list(zip(sf['name'],sf['total.confirm']))
# 创建一个地图对象
map_1 = Map()
#对全局进行设置
map_1.set_global_opts(
#设置标题
title_opts=opts.TitleOpts(title="全国疫情地图"),
#设置最大数据范围
visualmap_opts=opts.VisualMapOpts(max_=2500,range_color=["#FFFFFF","#FFCC00","#CC0000"]))

# 使用add方法添加地图数据与地图类型
map_1.add("累计确诊人数", list1, maptype="china")
# 地图创建完成后,通过render()方法可以将地图渲染为html

map_1.render('全国疫情地图.html')

然后地图绘制结果就出来了

THE END
分享
二维码
海报
Python抓取网易实时疫情数据
有朋友反馈之前抓取百度疫情数据的代码已经无法运行,没看过的朋友可以点击下列链接查看。 Python抓取实时数据绘制地图 看了下,因为百度调整了部分页面信息……
<<上一篇
下一篇>>