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实现把utf-8格式的文件转换成gbk格式的文件
Jan 22 Python
python登录pop3邮件服务器接收邮件的方法
Apr 30 Python
Django框架中处理URLconf中特定的URL的方法
Jul 20 Python
用不到50行的Python代码构建最小的区块链
Nov 16 Python
Django教程笔记之中间件middleware详解
Aug 01 Python
Python基本socket通信控制操作示例
Jan 30 Python
python下的opencv画矩形和文字注释的实现方法
Jul 09 Python
Python Tensor FLow简单使用方法实例详解
Jan 14 Python
深入浅析python变量加逗号,的含义
Feb 22 Python
django自定义非主键自增字段类型详解(auto increment field)
Mar 30 Python
python+requests实现接口测试的完整步骤
Oct 27 Python
python基础详解之if循环语句
Apr 24 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语法速查表
2006/12/06 PHP
七款最流行的PHP本地服务器分享
2013/02/19 PHP
基于PHP中的常用函数回顾
2013/07/11 PHP
php遍历文件夹下的所有文件和子文件夹示例
2014/03/20 PHP
twig里使用js变量的方法
2016/02/05 PHP
PHP中十六进制颜色与RGB颜色值互转的方法
2019/03/18 PHP
javascript插入样式实现代码
2012/02/22 Javascript
浅析js中2个等号与3个等号的区别
2013/08/06 Javascript
JavaScript中继承用法实例分析
2015/05/16 Javascript
基于jquery实现省市联动特效
2015/12/17 Javascript
JavaScript简单获取页面图片原始尺寸的方法
2016/06/21 Javascript
很棒的js选项卡切换效果
2016/07/15 Javascript
js中获取键盘事件的简单实现方法
2016/10/10 Javascript
基于js 本地存储(详解)
2017/08/16 Javascript
webpack+vue2构建vue项目骨架的方法
2018/01/09 Javascript
Parcel 打包示例(React HelloWorld)
2018/01/16 Javascript
electron-vue利用webpack打包实现多页面的入口文件问题
2019/05/12 Javascript
通过扫小程序码实现网站登陆功能
2019/08/22 Javascript
node.js中npm包管理工具用法分析
2020/02/14 Javascript
用Python编写一个每天都在系统下新建一个文件夹的脚本
2015/05/04 Python
python访问抓取网页常用命令总结
2017/04/11 Python
python如何定义带参数的装饰器
2018/03/20 Python
JavaScript实现一维数组转化为二维数组
2018/04/17 Python
numpy.linspace 生成等差数组的方法
2018/07/02 Python
对python内置map和six.moves.map的区别详解
2018/12/19 Python
python输出带颜色字体实例方法
2019/09/01 Python
使用OpenCV-python3实现滑动条更新图像的Canny边缘检测功能
2019/12/12 Python
Jmeter调用Python脚本实现参数互相传递的实现
2021/01/22 Python
HTML5 Plus 实现手机APP拍照或相册选择图片上传功能
2016/07/13 HTML / CSS
两年的个人工作自我评价
2014/01/10 职场文书
安全生产先进个人事迹材料
2014/12/30 职场文书
英语感谢信范文
2015/01/20 职场文书
会议接待欢迎词范文
2015/01/26 职场文书
新学期开学标语2015
2015/07/16 职场文书
导游词之苏州寒山寺
2019/12/05 职场文书
AJAX实现省市县三级联动效果
2021/10/16 Javascript