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实现一个简单的多线程TCP服务器的教程
May 05 Python
使用简单工厂模式来进行Python的设计模式编程
Mar 01 Python
Python实现GUI学生信息管理系统
Apr 05 Python
Python进程间通信Queue实例解析
Jan 25 Python
Python用于学习重要算法的模块pygorithm实例浅析
Aug 16 Python
对python:threading.Thread类的使用方法详解
Jan 31 Python
python单线程下实现多个socket并发过程详解
Jul 27 Python
关于python pycharm中输出的内容不全的解决办法
Jan 10 Python
在服务器上安装python3.8.2环境的教程详解
Apr 26 Python
Keras预训练的ImageNet模型实现分类操作
Jul 07 Python
详解如何使用Pytest进行自动化测试
Jan 14 Python
python内置进制转换函数的操作
Jun 02 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
使用eAccelerator加密PHP程序
2008/10/03 PHP
PHP Curl出现403错误的解决办法
2014/05/29 PHP
PHP实现多图片上传类实例
2014/07/26 PHP
使用PHP反射机制来构造"CREATE TABLE"的sql语句
2019/03/21 PHP
PHP实现简易用户登录系统
2020/07/10 PHP
JavaScript高级程序设计
2006/12/29 Javascript
jquery学习笔记二 实现可编辑的表格
2010/04/09 Javascript
jquery tab插件精简版分享
2011/09/10 Javascript
JS下拉框内容左右移动效果的具体实现
2013/07/10 Javascript
JavaScript控制table某列不显示的方法
2015/03/16 Javascript
动态加载jQuery的两种方法实例分析
2015/07/17 Javascript
10个JavaScript中易犯小错误
2016/02/14 Javascript
js 博客内容进度插件详解
2017/02/19 Javascript
温故知新——JavaScript中的字符串连接问题最全总结(推荐)
2017/08/21 Javascript
ES6/JavaScript使用技巧分享
2017/12/14 Javascript
通过cordova将vue项目打包为webapp的方法
2019/02/02 Javascript
JS实现数组深拷贝的方法分析
2019/03/06 Javascript
Vue $mount实战之实现消息弹窗组件
2019/04/22 Javascript
JS获取本地地址及天气的方法实例小结
2019/05/10 Javascript
关于layui时间回显问题的解决方法
2019/09/24 Javascript
Vue中函数防抖节流的理解及应用实现
2020/04/24 Javascript
[51:29]完美世界DOTA2联赛循环赛 Matador vs Forest BO2第一场 11.05
2020/11/05 DOTA
Python实现曲线点抽稀算法的示例
2017/10/12 Python
Python装饰器知识点补充
2018/05/28 Python
python数据库编程 ODBC方式实现通讯录
2020/03/27 Python
解决pycharm编辑区显示yaml文件层级结构遇中文乱码问题
2020/04/27 Python
Python configparser模块常用方法解析
2020/05/22 Python
python正则表达式 匹配反斜杠的操作方法
2020/08/07 Python
css3 2D图片转动样式可以扩充到Js当中
2014/04/29 HTML / CSS
HTML5中的Web Notification桌面通知功能的实现方法
2019/07/29 HTML / CSS
五年级学生评语
2014/04/22 职场文书
企业安全生产月活动总结
2014/07/05 职场文书
2014年前台接待工作总结
2014/12/05 职场文书
财务总监岗位职责范本
2015/04/03 职场文书
企业百日安全活动总结
2015/05/07 职场文书
Tomcat用户管理的优化配置详解
2022/03/31 Servers