众志成城抗疫情:Python获取疫情实时数据!!

148 阅读4分钟

​前文

防护篇:

各自家庭聚团圆,不要外出相互窜。
注意洗手衣勤换,戴上口罩防感染。
野生动物传染源,千万不要因嘴馋。
每天食用调配餐,清热食物桌上端。
防寒添衣要保暖,通风透气舒适感。
清洁卫生干一干,适当运动多出汗。
若有不适测体温,指定医院随就诊。
非常时期莫怨烦,目标明确防扩散。
科学防护专家言,从我做起保平安。

最近江苏南京、湖南张家界陆续爆发疫情。作为一个张家界本地人,听到这个消息还是很震惊的。

身在长沙,作为兢兢业业的打工人,默默地为江苏、张家界加油打气,为了关注疫情状况,今天我们用python来爬一爬疫情的实时数据!!

​2.获取目标网站

为了使用python来获取疫情数据,我们需要找一个疫情实时追踪数据发布网站,国内比较有名的是腾讯新闻、网易新闻等,这些网站疫情内容都大同小异,主要包括国内疫情、海外疫情,每日新增确诊趋势,疫苗接种情况等,这里我们选用腾讯新闻疫情发布页来进行数据爬取分析。

网站分析:

  • 使用chrome浏览器 打开疫情发布页网址 。

  • 我们按F12 进入开发者模式,按 ctrl+R 刷新页面。

  • 在Network下找到 getOnsInfo?name=disease_h5列,获得爬取目标网址。

在这里插入图片描述​​

3.爬取目标网站

我们写爬虫爬取网站数据,需要安装requests库,安装命令如下:

pip install  requests 

如安装报错,超时,可以试试镜像源安装速度很快。

带豆瓣镜像源的安装:requests库

例如:豆瓣:pypi.douban.com/simple/

使用:pip install -i pypi.douban.com/simple/ requests

只需要三行代码就可以获取该网页内容,代码如下:

url = 'view.inews.qq.com/g2/getOnsIn…' req = requests.get(url=url) content = json.loads(req.text) 

打印之后爬取的效果:

​​

4.解析爬取内容

上述网站内容我们虽然爬取成功,接下来我们需要对爬取的结果进行解析,从中找出我们感兴趣的部分。

4.1. 解析全国今日总况

在这里插入图片描述​​相应的解析代码如下:

def get_all_china(content): 

 tmp_data = content["data"] 

 area_data = json.loads(tmp_data)["areaTree"] 

 country = area_data[0] country_list = [] 

 name = country["name"] 

 today_confirm = country["today"]["confirm"] 

 now_confirm = country["total"]["nowConfirm"] 

 total_confirm = country["total"]["confirm"] 

 total_heal = country["total"]["heal"] country_list.append([name, today_confirm, now_confirm, total_confirm, total_heal]) return country_list 

打印结果如下:

在这里插入图片描述​​

输出不行,这里使用PrettyTable库对输出进行美化,代码如下:

 def format_list_prettytable(title,province_list): 

 table = PrettyTable(title) for province in province_list: table.add_row(province) 

 table.border = True return table 

结果如下:

在这里插入图片描述

4.2. 解析全国各省份疫情情况

依次类推,可解析全国各省市疫情情况,代码如下:

def get_all_province(content): 

 tmp_data = content["data"] 

 area_data = json.loads(tmp_data)["areaTree"] 

 data = area_data[0]['children'] province_list = [] for province in 

data: name = province["name"] 

 today_confirm = province["today"]["confirm"] 

 now_confirm = province["total"]["nowConfirm"] 

 total_confirm = province["total"]["confirm"] 

 total_heal = province["total"]["heal"] 

 province_list.append([name, today_confirm, now_confirm, 

total_confirm, total_heal]) return province_list 

结果如下:

​​

4.3. 解析江苏各地级市疫情情况

最后,我们获取江苏省各地级市的疫情数据,代码如下:

​​结果如下:

​​

5.结果可视化

使用matplotlib对上述爬去的江苏各地级市疫情分布可视化,得到结果如下:

今日新增可视化结果如下:

​​​​​​

现有确诊可视化结果如下:

​​

从上述图表可以看出,今日疫情已扩散至扬州,扬州今日新增感染人数最多,需引起重视。

结尾

完整代码可私信小编:06即可获取。

​​