Python获取江苏疫情实时数据及爬虫分析
作者:赵卓不凡 发布时间:2022-09-19 02:12:30
目录
1.引言
2.获取目标网站
3.爬取目标网站
4.解析爬取内容
4.1. 解析全国今日总况
4.2. 解析全国各省份疫情情况
4.3. 解析江苏各地级市疫情情况
5.结果可视化
6. 代码
7. 参考
1.引言
最近江苏南京、湖南张家界陆续爆发疫情,目前已波及8省22市,全国共有2个高风险地区,52个中风险地区。身在南京,作为兢兢业业的打工人,默默地成为了“苏打绿”。为了关注疫情状况,今天我们用python来爬一爬疫情的实时数据。
2.获取目标网站
为了使用python来获取疫情数据,我们需要找一个疫情实时追踪数据发布网站,国内比较有名的是腾讯新闻、网易新闻等,这些网站疫情内容都大同小异,主要包括国内疫情、海外疫情,每日新增确诊趋势,疫苗接种情况等,这里我们选用腾讯新闻疫情发布页来进行数据爬取分析。
网站分析:
使用chrome浏览器 打开疫情发布页网址 ,如上图所示
我们按F12 进入开发者模式,按 ctrl+R 刷新页面
在Network下找到 getOnsInfo?name=disease_h5列,获得爬取目标网址
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)
打印爬去结果如下:
4.解析爬取内容
上述网站内容我们虽然爬取成功,接下来我们需要对爬取的结果进行解析,从中找出我们感兴趣的部分。
4.1. 解析全国今日总况
相应的解析代码如下:
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
打印结果如下:
输出太丑了,这里使用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
结果如下:
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
结果如下:
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
结果如下:
5.结果可视化
使用matplotlib对上述爬去的江苏各地级市疫情分布可视化,得到结果如下:
今日新增可视化结果如下:
现有确诊可视化结果如下:
从上述图表可以看出,今日疫情已扩散至扬州,扬州今日新增感染人数最多,需引起重视。
6. 代码
完整代码
https://github.com/sgzqc/wechat/tree/main/20210731
7. 参考
链接一
来源:https://blog.csdn.net/sgzqc/article/details/119278703


猜你喜欢
- MySQL支持单向、异步复制,复制过程中一个服务器充当主服务器,而一个或多个其它服务器充当从服务器。主服务器将更新写入二进制日志文件,并维
- 说在前面突发奇想,想了解一下mysql order by排序是以什么规则进行的? 好了,话不多说,直接进入正题吧。MySql order b
- 为了获取ROC曲线的最佳阈值,需要使用一个指标--约登指数,也称正确指数。借助于matlab的roc函数可以得出计算。% 1-specifi
- PPT链接说实话,看到这个题目时我觉得这有什么好讨论的,肯定会是场一边倒的讨论。因为个人比较倾向于短命名,简单优雅,可能是出于程序员的洁癖,
- 1:构图图形的层次感图形和元素之间的层次感,可以在干扰视觉的同时,突出自身所想体现的主题,这种表现方式往往是比较直接而且有效的方式。我们所说
- 有框计算器这个计算器我们用到了Python自带的Tkinter库# 导入tkinter库import tkinter我们要对窗口进行一些基本
- 有一个txt文本如下:151 151 1234561 156421 214156 1523132 031320现希望将两行合并为一行,并将
- 在处理表格型数据时,常会用到排序,比如,按某一行或列的值对表格排序,要怎么做呢?这就要用到 pandas 中的 sort_values()
- 脚手架是啥从前我总觉得脚手架是个很高大上的东西,好像得牛叉:ox:一点的人才写的出来,可望而不可即。其实并不是因为困难使我们放弃,而是因为放
- 1.reshapereshape是重塑,常用的三种写法如下:numpy.arange(n).reshape(a, b) &nb
- 前言前文讲述了ppi-cpi和m0-m1-m2的图形绘制,在本文中继续分享一个反映经济活动景气度的指标PMI,在本文中还是采用爬虫的方式获取
- button元素在过去一直没有被重视,其实它比<input type="button">的语义强许多,制定性
- 如下所示:#!/usr/bin/env pythonimport osimport sysclass CConsole: M_MAP_COL
- 近段时间由于修改一个ASP程序(有SQL注入漏洞),在网上找了很多相关的一些防范办法,都不近人意,所以我将现在网上的一些方法综合改良了一下,
- 页面上有些重要内容需要提醒客户,可采用的方法有很多。提醒用户关注某一区域(div),可以给该div加上边框闪烁的效果,达到吸引用户眼球的效果
- 目录一、CentOS7+MySQL8.0,yum源安装二、登录mysql以及修改密码三、远程登录1.MySQL yum源安装2.安装后,首次
- CREATE TABLE table1( [ID] [bigint] IDENTITY(1,1) NOT NULL, [Name] [nva
- 本文为大家分享了路由嵌套的SPA实现的步骤:A(/a)组件需要嵌套B组件(/b)和C组件(/c)①准备嵌套其它组价的父组件 指定一个容器在A
- 本文实例讲述了Python实现动态给类和对象添加属性和方法操作。分享给大家供大家参考,具体如下:动态给类和对象添加属性定义一个Person类
- 在python的时间使用时,我们无非就是输出字符串的形式,又或者是其他的形式跟字符串之间的来回转换。时间数组对于我们获取具体的年或是天数,都