新闻动态

Python获取江苏疫情实时数据及爬虫分析

发布日期:2022-02-19 19:23 | 文章来源:gibhub

1.引言

最近江苏南京、湖南张家界陆续爆发疫情,目前已波及8省22市,全国共有2个高风险地区,52个中风险地区。身在南京,作为兢兢业业的打工人,默默地成为了“苏打绿”。为了关注疫情状况,今天我们用python来爬一爬疫情的实时数据。

2.获取目标网站

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

网站分析:

  • 使用chrome浏览器 打开疫情发布页网址 ,如上图所示
  • 我们按F12 进入开发者模式,按 ctrl+R 刷新页面
  • 在Network下找到 getOnsInfo?name=disease_h5列,获得爬取目标网址

3.爬取目标网站

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

pip3 install requests

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

url = 'https://view.inews.qq.com/g2/getOnsInfo?name=disease_h5'
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. 解析江苏各地级市疫情情况

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

def parse_jiangsu_province(content,key_province):
 tmp_data = content["data"]
 area_data = json.loads(tmp_data)["areaTree"]
 data = area_data[0]['children']
 city_list = []
 for province in data:
  name = province["name"]
  if name == key_province:
children_list = province["children"]
for children in children_list:
 city = children["name"]
 today_new = children["today"]["confirm"]
 now_confirm = children["total"]["nowConfirm"]
 total_confirm = children["total"]["confirm"]
 total_heal = children["total"]["heal"]
 city_list.append([city, today_new, now_confirm, total_confirm, total_heal])
 return city_list

结果如下:

5.结果可视化

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

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

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

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

6. 代码

完整代码

https://github.com/sgzqc/wechat/tree/main/20210731

7. 参考

链接一

到此这篇关于Python获取江苏疫情实时数据及爬虫分析的文章就介绍到这了,更多相关Python江苏疫情内容请搜索本站以前的文章或继续浏览下面的相关文章希望大家以后多多支持本站!

美国服务器租用

版权声明:本站文章来源标注为YINGSOO的内容版权均为本站所有,欢迎引用、转载,请保持原文完整并注明来源及原文链接。禁止复制或仿造本网站,禁止在非www.yingsoo.com所属的服务器上建立镜像,否则将依法追究法律责任。本站部分内容来源于网友推荐、互联网收集整理而来,仅供学习参考,不代表本站立场,如有内容涉嫌侵权,请联系alex-e#qq.com处理。

相关文章

实时开通

自选配置、实时开通

免备案

全球线路精选!

全天候客户服务

7x24全年不间断在线

专属顾问服务

1对1客户咨询顾问

在线
客服

在线客服:7*24小时在线

客服
热线

400-630-3752
7*24小时客服服务热线

关注
微信

关注官方微信
顶部