实时抓取网页数据(之前抓取百度疫情数据的代码已经无法运行,怎么办?)
优采云 发布时间: 2021-12-05 12:00实时抓取网页数据(之前抓取百度疫情数据的代码已经无法运行,怎么办?)
有朋友反映,抓取百度疫情数据的代码不能用了。没有看过的朋友可以点击下方链接查看。
Python抓取实时数据并绘制地图
我看了一下,因为百度调整了部分页面信息,代码调整后就可以使用了。如果下次调整呢?你觉得这个概率大吗?
我觉得它很大,那么有没有办法稳定它?
这样问,肯定有一些,就是用另一种方式获取疫情的实时数据。
这次我们将抓取网易JSON流行病数据。
链接是这个
打开网站,看到是这样的。如果您是第一次接触 JSON 数据,您会感到困惑。不过没关系,如果你用的是火狐,还可以发现上面有JSON,美化输出等功能。
这就是美化输出的效果。看起来好一点了,但是还是傻眼了,因为你还没有接触到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)
查看抓到的数据结果,可以看到是一个字典,我们要的数据在key=data中。
继续双击打开数据,我们要的数据在areaTree中。
继续双击打开areaTree,这个areaTree是一个列表,在我们想要的数据的第一行。
继续双击打开areaTree的第一行。这次又变成了字典。你看到中国了吗?哈哈,我们要的数据在key=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')
然后地图绘制结果出来了。
如果你喜欢这篇文章,可以点击右下角查看
如果您正在关注学习,请在留言区留言:签到
如果你刚看完这篇文章,你可以查看这个系列的历史文章 并关注:
从小白-Anaconda安装学习Python数据分析
从小白学Python数据分析-使用spyder
从小白学Python数据分析-数据导入1
从小白学Python数据分析-数据导入2
从小白学Python数据分析-描述性统计分析
从小白-群分析学Python数据分析
8行Python代码轻松映射新冠疫情
动态新冠疫情图Python易画
Python绘制16个省份支持湖北地图
湖北动态新冠疫情地图Python易画
Python抓取实时数据并绘制地图
世界动态疫情图Python易画