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中__call__用法实例
Aug 29 Python
Python中的zipfile模块使用详解
Jun 25 Python
使用Python读写文本文件及编写简单的文本编辑器
Mar 11 Python
Python实现的生成格雷码功能示例
Jan 24 Python
tensorflow 使用flags定义命令行参数的方法
Apr 23 Python
解决python读取几千万行的大表内存问题
Jun 26 Python
[原创]Python入门教程2. 字符串基本操作【运算、格式化输出、常用函数】
Oct 29 Python
Python魔法方法详解
Feb 13 Python
Pandas之Fillna填充缺失数据的方法
Jun 25 Python
Python matplotlib绘制饼状图功能示例
Sep 10 Python
pytorch 彩色图像转灰度图像实例
Jan 13 Python
Python Dict找出value大于某值或key大于某值的所有项方式
Jun 05 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(三)
2012/03/22 PHP
destoon之一键登录设置
2014/06/21 PHP
支付宝服务窗API接口开发php版本
2016/07/20 PHP
php微信公众号开发之关键词回复
2018/10/20 PHP
在textarea文本域中显示HTML代码的方法
2007/03/06 Javascript
asp批量修改记录的代码
2008/06/25 Javascript
用js遍历 table的脚本
2008/07/23 Javascript
用Jquery实现可编辑表格并用AJAX提交到服务器修改数据
2009/12/27 Javascript
JavaScript类和继承 constructor属性
2010/03/04 Javascript
JavaScript访问字符串中单个字符的两种方法
2015/07/03 Javascript
用window.onerror捕获并上报Js错误的方法
2016/01/27 Javascript
详解JS中的柯里化(currying)
2017/08/17 Javascript
JavaScript定时器setTimeout()和setInterval()详解
2017/08/18 Javascript
详解Vue2 SSR 缓存 Api 数据
2017/11/20 Javascript
Vue 路由切换时页面内容没有重新加载的解决方法
2018/09/01 Javascript
vue实现学生信息管理系统
2020/05/30 Javascript
js操作两个json数组合并、去重,以及删除某一项元素
2020/09/22 Javascript
vue + el-form 实现的多层循环表单验证
2020/11/25 Vue.js
[01:03:47]VP vs NewBee Supermajor 胜者组 BO3 第一场 6.5
2018/06/06 DOTA
利用Python如何生成随机密码
2016/04/20 Python
Python的collections模块中的OrderedDict有序字典
2016/07/07 Python
Python实现在线暴力破解邮箱账号密码功能示例【测试可用】
2017/09/06 Python
Python if语句知识点用法总结
2018/06/10 Python
python调用staf自动化框架的方法
2018/12/26 Python
Pyqt5 关于流式布局和滚动条的综合使用示例代码
2020/03/24 Python
Python和Bash结合在一起的方法
2020/11/13 Python
利用css3画个同心圆示例代码
2017/07/03 HTML / CSS
mysql有关权限的表都有哪几个
2015/04/22 面试题
视光学专业毕业生推荐信
2013/10/28 职场文书
翻译专业应届生求职信
2013/11/23 职场文书
转党组织关系介绍信
2014/01/08 职场文书
七年级音乐教学反思
2014/01/26 职场文书
2016年妇联“6﹒26国际禁毒日”宣传活动总结
2016/04/05 职场文书
Nginx配置SSL证书出错解决方案
2021/03/31 Servers
解决redis批量删除key值的问题
2022/03/23 Redis
Tomcat项目启动失败的原因和解决办法
2022/04/20 Servers