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实现包含min函数的栈
Apr 29 Python
python僵尸进程产生的原因
Jul 21 Python
python学习笔记--将python源文件打包成exe文件(pyinstaller)
May 26 Python
利用Python将文本中的中英文分离方法
Oct 31 Python
详解Python使用Plotly绘图工具,绘制甘特图
Apr 02 Python
浅谈python的输入输出,注释,基本数据类型
Apr 02 Python
python实现socket+threading处理多连接的方法
Jul 23 Python
对django的User模型和四种扩展/重写方法小结
Aug 17 Python
python使用梯度下降算法实现一个多线性回归
Mar 24 Python
Python操作Elasticsearch处理timeout超时
Jul 17 Python
termux中matplotlib无法显示中文问题的解决方法
Jan 11 Python
粗暴解决CUDA out of memory的问题
May 22 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读取XML值的代码(推荐)
2011/01/01 PHP
使用php+Ajax实现唯一校验实现代码[简单应用]
2011/11/29 PHP
php object转数组示例
2014/01/15 PHP
php实现mysql数据库分表分段备份
2015/06/18 PHP
yii2 RBAC使用DbManager实现后台权限判断的方法
2016/07/23 PHP
php常用正则函数实例小结
2016/12/29 PHP
jQuery 可以拖动的div实现代码 脚本之家修正版
2009/06/26 Javascript
读jQuery之九 一些瑕疵说明
2011/06/21 Javascript
js拆分字符串并将分割的数据放到数组中的方法
2015/05/06 Javascript
浅谈jQuery的offset()方法及示例分享
2015/07/17 Javascript
js实现适合新闻类图片的轮播效果
2017/02/05 Javascript
Canvas实现动态的雪花效果
2017/02/13 Javascript
JS简单实现父子窗口传值功能示例【未使用iframe框架】
2017/09/20 Javascript
vue实现公告栏文字上下滚动效果的示例代码
2020/06/16 Javascript
解决vue axios跨域 Request Method: OPTIONS问题(预检请求)
2020/08/14 Javascript
vue实现打地鼠小游戏
2020/08/21 Javascript
[01:22:19]EG vs TNC Supermajor小组赛B组败者组第一轮 BO3 第二场 6.2
2018/06/03 DOTA
Python xlwt设置excel单元格字体及格式
2020/04/18 Python
Django高级编程之自定义Field实现多语言
2019/07/02 Python
wxpython绘制圆角窗体
2019/11/18 Python
python创建n行m列数组示例
2019/12/02 Python
python装饰器的特性原理详解
2019/12/25 Python
PyQt5如何将.ui文件转换为.py文件的实例代码
2020/05/26 Python
python 实现性别识别
2020/11/21 Python
python3字符串输出常见面试题总结
2020/12/01 Python
TripAdvisor台湾:全球最大旅游网站
2018/08/26 全球购物
潘多拉意大利官方网上商城:网上选购PANDORA珠宝
2018/10/07 全球购物
事业单位公务员的职业生涯规划
2014/01/15 职场文书
舞蹈专业求职信
2014/06/13 职场文书
国贸专业求职信
2014/06/28 职场文书
营销经理工作检讨书
2014/11/03 职场文书
社区党务工作总结2015
2015/05/19 职场文书
CSS3常见动画的实现方式
2021/04/14 HTML / CSS
浅谈python数据类型及其操作
2021/05/25 Python
Oracle11g r2 卸载干净重装的详细教程(亲测有效已重装过)
2021/06/04 Oracle
Linux中文件的基本属性介绍
2022/06/01 Servers