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函数的周期性执行实现方法
Aug 13 Python
python3实现抓取网页资源的 N 种方法
May 02 Python
Python数据结构与算法之图结构(Graph)实例分析
Sep 05 Python
Python button选取本地图片并显示的实例
Jun 13 Python
Django 实现图片上传和显示过程详解
Jul 18 Python
Window10下python3.7 安装与卸载教程图解
Sep 30 Python
python脚本实现mp4中的音频提取并保存在原目录
Feb 27 Python
浅谈Python中的继承
Jun 19 Python
详解Python中import机制
Sep 11 Python
Python字符串三种格式化输出
Sep 17 Python
浅谈Python数学建模之线性规划
Jun 23 Python
python中urllib包的网络请求教程
Apr 19 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学习之PHP变量
2006/10/09 PHP
MySQL数据源表结构图示
2008/06/05 PHP
php中$_SERVER[PHP_SELF] 和 $_SERVER[SCRIPT_NAME]之间的区别
2009/09/05 PHP
jquery1.4 教程二 ajax方法的改进
2010/02/25 Javascript
疯狂Jquery第一天(Jquery学习笔记)
2012/05/11 Javascript
Javascript中找到子元素在父元素内相对位置的代码
2012/07/21 Javascript
js实现iframe跨页面调用函数的方法
2014/12/13 Javascript
深入理解JavaScript系列(44):设计模式之桥接模式详解
2015/03/04 Javascript
javascript格式化日期时间方法汇总
2015/06/19 Javascript
浅谈js for循环输出i为同一值的问题
2017/03/01 Javascript
详解Vue监听数据变化原理
2017/03/08 Javascript
AngularJS路由切换实现方法分析
2017/03/17 Javascript
Vue之Watcher源码解析(1)
2017/07/19 Javascript
layui表格checkbox选择全选样式及功能的实例
2018/03/07 Javascript
React之PureComponent的使用作用
2018/07/10 Javascript
vue 根据数组中某一项的值进行排序的方法
2018/08/30 Javascript
微信小程序 flexbox layout快速实现基本布局的解决方案
2020/03/24 Javascript
[01:56]无止竞 再出发——中国军团出征2017年DOTA2国际邀请赛
2017/07/05 DOTA
python fabric使用笔记
2015/05/09 Python
磁盘垃圾文件清理器python代码实现
2020/08/24 Python
在pyqt5中QLineEdit里面的内容回车发送的实例
2019/06/21 Python
python 使用装饰器并记录log的示例代码
2019/07/12 Python
python可视化篇之流式数据监控的实现
2019/08/07 Python
解决Python3.8用pip安装turtle-0.0.2出现错误问题
2020/02/11 Python
利用python绘制中国地图(含省界、河流等)
2020/09/21 Python
详解Html5 监听拦截Android返回键方法
2018/04/18 HTML / CSS
美国卡车、吉普车和SUV零件网站:4 Wheel Parts
2016/11/24 全球购物
美国餐厅用品和厨房设备批发网站:KaTom Restaurant Supply
2018/01/27 全球购物
查找廉价航班和发现新目的地:Kiwi.com
2019/02/25 全球购物
德国珠宝和配件商店:Styleserver
2021/02/23 全球购物
J2EE中的容器都包括哪些
2013/08/21 面试题
经理助理岗位职责
2014/03/05 职场文书
党员干部廉政承诺书
2015/04/28 职场文书
python脚本框架webpy模板控制结构
2021/11/20 Python
Nginx防盗链与服务优化配置的全过程
2022/01/18 Servers
vue ref如何获取子组件属性值
2022/03/31 Vue.js