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


Posted in Python onAugust 02, 2021

1.引言

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

2.获取目标网站

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

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

网站分析:

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

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

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)

打印爬去结果如下:

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

4.解析爬取内容

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

4.1. 解析全国今日总况

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

相应的解析代码如下:

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

打印结果如下:

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

输出太丑了,这里使用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

结果如下:

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

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

结果如下:

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

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

结果如下:

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

5.结果可视化

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

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

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

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

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

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

6. 代码

完整代码

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

7. 参考

链接一

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

Python 相关文章推荐
python基于phantomjs实现导入图片
May 13 Python
基于Python_脚本CGI、特点、应用、开发环境(详解)
May 23 Python
sublime text 3配置使用python操作方法
Jun 11 Python
python+pandas分析nginx日志的实例
Apr 28 Python
Python中pandas dataframe删除一行或一列:drop函数详解
Jul 03 Python
python之super的使用小结
Aug 13 Python
解决PyCharm的Python.exe已经停止工作的问题
Nov 29 Python
对Python获取屏幕截图的4种方法详解
Aug 27 Python
使用tensorflow进行音乐类型的分类
Aug 14 Python
python实现磁盘日志清理的示例
Nov 05 Python
python 使用Tensorflow训练BP神经网络实现鸢尾花分类
May 12 Python
python画条形图的具体代码
Apr 20 Python
Django对接elasticsearch实现全文检索的示例代码
Aug 02 #Python
浅谈Python3中datetime不同时区转换介绍与踩坑
Aug 02 #Python
python数字转对应中文的方法总结
Aug 02 #Python
Python List remove()实例用法详解
Aug 02 #Python
Python中基础数据类型 set集合知识点总结
Aug 02 #Python
python unittest单元测试的步骤分析
Aug 02 #Python
python元组打包和解包过程详解
Aug 02 #Python
You might like
PHP使用PHPMailer发送邮件的简单使用方法
2013/11/12 PHP
php获取Google机器人访问足迹的方法
2015/04/15 PHP
php调用淘宝开放API实现根据卖家昵称获取卖家店铺ID的方法
2015/07/29 PHP
php实现的证件照换底色功能示例【人像抠图/换背景图】
2020/05/29 PHP
JavaScript随机排序(随即出牌)
2010/09/17 Javascript
JavaScript获取图片的原始尺寸以宽度为例
2014/05/04 Javascript
Javascript 函数parseInt()转换时出现bug问题
2014/05/20 Javascript
简单谈谈Javascript中类型的判断
2015/10/19 Javascript
AngularJS向后端ASP.NET API控制器上传文件
2016/02/03 Javascript
拥有一个属于自己的javascript表单验证插件
2016/03/24 Javascript
jQuery纵向导航菜单效果实现方法
2016/12/19 Javascript
Javascript 实现匿名递归的实例代码
2017/05/25 Javascript
Angularjs实现下拉框联动的示例代码
2017/08/22 Javascript
jQuery实现的简单动态添加、删除表格功能示例
2017/09/21 jQuery
基于js中style.width与offsetWidth的区别(详解)
2017/11/12 Javascript
一步步教你利用Docker设置Node.js
2018/11/20 Javascript
Cordova(ionic)项目实现双击返回键退出应用
2019/09/17 Javascript
简单介绍Python中的JSON模块
2015/04/08 Python
python文件特定行插入和替换实例详解
2017/07/12 Python
python实现二叉树的遍历
2017/12/11 Python
Python的CGIHTTPServer交互实现详解
2018/02/08 Python
Python爬虫实现简单的爬取有道翻译功能示例
2018/07/13 Python
Python实现的建造者模式示例
2018/08/06 Python
python安装pil库方法及代码
2019/06/25 Python
Python3实现将一维数组按标准长度分隔为二维数组
2019/11/29 Python
pytorch 利用lstm做mnist手写数字识别分类的实例
2020/01/10 Python
Myprotein台湾官方网站:全球领先的运动营养品牌
2018/12/10 全球购物
会计毕业生求职简历的自我评价
2013/10/20 职场文书
统计学专业毕业生的自我评价分享
2013/11/28 职场文书
党员创先争优心得体会
2014/09/11 职场文书
刑事起诉书范文
2015/05/19 职场文书
肖申克的救赎观后感
2015/06/02 职场文书
redis实现的四种常见限流策略
2021/06/18 Redis
MySQL中存储时间的最佳实践指南
2021/07/01 MySQL
排查并解决MySQL生产库内存使用率高的报警
2022/04/11 MySQL
vue使用watch监听属性变化
2022/04/30 Vue.js