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使用sorted函数对列表进行排序的方法
Apr 04 Python
Python实现批量更换指定目录下文件扩展名的方法
Sep 19 Python
python获取酷狗音乐top500的下载地址 MP3格式
Apr 17 Python
Python中利用xpath解析HTML的方法
May 14 Python
对python GUI实现完美进度条的示例详解
Dec 13 Python
使用python读取.text文件特定行的数据方法
Jan 28 Python
python实现扫描ip地址的小程序
Apr 16 Python
django 自定义filter 判断if var in list的例子
Aug 20 Python
Django框架HttpRequest对象用法实例分析
Nov 01 Python
python 和c++实现旋转矩阵到欧拉角的变换方式
Dec 04 Python
Python利用PyPDF2库获取PDF文件总页码实例
Apr 03 Python
keras模型保存为tensorflow的二进制模型方式
May 25 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 smarty截取中文字符乱码问题?gb2312/utf-8
2011/11/07 PHP
php提示undefined index的几种解决方法
2012/05/21 PHP
精美漂亮的php分页类代码
2013/04/02 PHP
php实现利用phpexcel导出数据
2013/08/24 PHP
getimagesize获取图片尺寸实例
2014/11/15 PHP
Netbeans 8.2将支持PHP7 更精彩
2016/06/13 PHP
TNC vs IO BO3 第一场2.13
2021/03/10 DOTA
javascritp实现input输入框相关限制用法
2007/06/29 Javascript
javascript实现跳转菜单的具体方法
2013/07/05 Javascript
js里取容器大小、定位、距离等属性搜集整理
2013/08/19 Javascript
JavaScript中访问节点对象的方法有哪些如何使用
2013/09/24 Javascript
javascript实现行拖动的方法
2015/05/27 Javascript
使用jQuery给input标签设置默认值
2016/06/20 Javascript
JavaScript中BOM对象原理与用法分析
2019/07/09 Javascript
layui递归实现动态左侧菜单
2019/07/26 Javascript
Vue项目中Api的组织和返回数据处理的操作
2019/11/04 Javascript
Javascript实现鼠标移入方向感知
2020/06/24 Javascript
微信小程序实现时间戳格式转换
2020/07/20 Javascript
python通过zlib实现压缩与解压字符串的方法
2014/11/19 Python
Python运算符重载用法实例分析
2015/06/01 Python
Python多线程结合队列下载百度音乐的方法
2015/07/27 Python
pandas or sql计算前后两行数据间的增值方法
2018/04/20 Python
python topN 取最大的N个数或最小的N个数方法
2018/06/04 Python
pandas 小数位数 精度的处理方法
2018/06/09 Python
基于python绘制科赫雪花
2018/06/22 Python
python3基于OpenCV实现证件照背景替换
2018/07/18 Python
详解django中Template语言
2020/02/22 Python
Python-openpyxl表格读取写入的案例详解
2020/11/02 Python
基于HTML5 Canvas 实现商场监控实例详解
2017/11/20 HTML / CSS
利用HTML5绘制点线面组成的3D图形的示例
2015/05/12 HTML / CSS
跨域修改iframe页面内容详解
2019/10/31 HTML / CSS
化验室技术员岗位职责
2013/12/24 职场文书
合作协议书范文
2014/08/20 职场文书
PyQt5 显示超清高分辨率图片的方法
2021/04/11 Python
go web 预防跨站脚本的实现方式
2021/06/11 Golang
微软Win11什么功能最惊艳? Windows11新功能特性汇总
2021/11/21 数码科技