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 相关文章推荐
linux系统使用python监控apache服务器进程脚本分享
Jan 15 Python
简单介绍Python中的try和finally和with方法
May 05 Python
详解Python中expandtabs()方法的使用
May 18 Python
Django的信号机制详解
May 05 Python
对Python协程之异步同步的区别详解
Feb 19 Python
Python连接HDFS实现文件上传下载及Pandas转换文本文件到CSV操作
Jun 06 Python
Python 爬虫的原理
Jul 30 Python
详解python with 上下文管理器
Sep 02 Python
python 获取剪切板内容的两种方法
Nov 28 Python
PyQt5通过信号实现MVC的示例
Feb 06 Python
python快速安装OpenCV的步骤记录
Feb 22 Python
解决hive中导入text文件遇到的坑
Apr 07 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
改进的IP计数器
2006/10/09 PHP
PHP 输出简单动态WAP页面
2009/06/09 PHP
PHP入门教程之面向对象的特性分析(继承,多态,接口,抽象类,抽象方法等)
2016/09/11 PHP
Mac下快速搭建PHP开发环境步骤详解
2019/05/05 PHP
jQuery事件绑定.on()简要概述及应用
2013/02/07 Javascript
关于JS判断图片是否加载完成且获取图片宽度的方法
2013/04/09 Javascript
Egret引擎开发指南之编译项目
2014/09/03 Javascript
jQuery代码性能优化的10种方法
2016/06/21 Javascript
JavaScript编程中实现对象封装特性的实例讲解
2016/06/24 Javascript
jQuery使用animate实现ul列表项相互飘动效果示例
2016/09/16 Javascript
Radio 单选JS动态添加的选项onchange事件无效的解决方法
2016/12/12 Javascript
jQuery基于cookie实现换肤功能实例
2017/10/14 jQuery
详解微信小程序工程化探索之webpack实战
2020/04/20 Javascript
Vue点击切换Class变化,实现Active当前样式操作
2020/07/17 Javascript
[04:04]DOTA2亚洲邀请赛比赛场馆&酒店全攻略
2017/03/23 DOTA
使用python解析xml成对应的html示例分享
2014/04/02 Python
Python操作列表之List.insert()方法的使用
2015/05/20 Python
Python星号*与**用法分析
2018/02/02 Python
python实现定时自动备份文件到其他主机的实例代码
2018/02/23 Python
python RabbitMQ 使用详细介绍(小结)
2018/11/08 Python
python实现一个简单的ping工具方法
2019/01/31 Python
Python基于BeautifulSoup爬取京东商品信息
2020/06/01 Python
python如何爬取动态网站
2020/09/09 Python
几个解决兼容IE6\7\8不支持html5标签的几个方法
2013/01/07 HTML / CSS
国际知名设计师时装商店:Coggles
2016/09/05 全球购物
香港最大的洋酒零售连锁店:屈臣氏酒窖(Watson’s Wine)
2018/12/10 全球购物
巴西化妆品商店:Lojas Rede
2019/07/26 全球购物
八一建军节部队活动方案
2014/02/04 职场文书
幼儿园老师寄语
2014/04/03 职场文书
拓展策划方案
2014/06/03 职场文书
无房证明范本
2014/09/17 职场文书
支部书记四风问题对照检查材料
2014/10/04 职场文书
常务副县长“三严三实”对照检查材料思想汇报
2014/10/05 职场文书
nginx处理http请求实现过程解析
2021/03/31 Servers
Python使用psutil库对系统数据进行采集监控的方法
2021/08/23 Python
css3属性选择器 “~”(波浪号) “,”(逗号) “+”(加号)和 “>”(大于号)
2022/04/19 HTML / CSS