# 新冠肺炎疫情实时监控
## 1.项目概况
### 1.1 项目名称
新冠肺炎疫情实时监控。项目地址:[http://121.41.228.239](http://121.41.228.239:5000)
### 1.2 项目介绍
疫情在家期间独立开发此项目。该项目是一个基于 **Python + Flask + Echarts** 打造的一个全球疫情监控系统,它能够实时监控并统计**中国**以及**全世界各国**新冠肺炎的**确诊人数**,同时**以图表和地图的形式**展现出来。项目完成的功能如下:
- 统计全国各省市地区每日疫情数据,并以图表形式展现。
- 统计全国疫情历史数据,并以图表形式展现。
- 统计百度热搜数据,并以词云图形式展现。
- 统计全球各国疫情数据。
项目涉及的主要技术栈有:
- Python 网络爬虫
- Python 与 MySQL 数据库交互
- Flask 构建 Web 项目
- 基于 Echarts 数据可视化展示
- 在阿里云部署 Web 项目以及爬虫
### 1.3 项目流程图
![](https://www.writebug.com/myres/static/uploads/2021/12/12/a685140b47367aa03a3522c2d9910bba.writebug)
## 2.理论基础与实践
### 2.1 腾讯疫情数据爬取
有一定爬虫基础的同学,可以尝试去全国各地的卫健委网站上爬取各省市地区的疫情数据,不过部分卫健委网站反爬虫手段很高明,需要专业的反反爬手段,**所以本文采用直接去各大疫情报告平台直接爬取最终的疫情数据**,例如**腾讯(本项目数据来源)**、百度、丁香园。
2.1.1 爬虫概述
爬虫是一个给网站发起请求,并从网站的响应中提取需要的数据的自动化程序。
爬虫的基本流程如下:
1. **向网站发起请求,获取网站的响应**
通过一些常用库(urllib、urllib3、**requests**)等对目标站点进行请求,等同于自己打开浏览器,输入网址访问。服务器返回的响应内容的格式通常为:HTML、二进制文件(视频、音频)、文档、JSON 字符串等。
2. **解析网站响应的内容(数据清洗)**
寻找自己需要的内容,就是利用正则表达式或者其他库提取目标信息
常用库(re、beautifulsoup4)
3. **保存数据至数据库中**
将解析得到的数据持久化到文件或者数据库中。
#### 2.1.2 爬取腾讯疫情数据
利用谷歌浏览器开发者选项分析腾讯疫情数据网站,经过解析,我们发现网站上所有疫情的数据都来源于以下几个 url 对应的 API 接口,由于网站提供了数据的 API 接口,利用 *postman* 工具测试可得返回的数据为 JSON 格式,所以我们只需要调用 JSON 库中相应的方法就可以完成数据解析。
```http
https://view.inews.qq.com/g2/getOnsInfo?name=disease_h5 # 全国各省市地区每日疫情数据
https://view.inews.qq.com/g2/getOnsInfo?name=disease_other # 全国疫情历史数据
https://api.inews.qq.com/newsqa/v1/automation/foreign/daily/list?country=国家名字 # 国外各国疫情数据
```
全国各省市地区每日疫情数据
![](https://www.writebug.com/myres/static/uploads/2021/12/12/b0cccade44abb19b4257eb3a7956d303.writebug)
全国疫情历史数据
![](https://www.writebug.com/myres/static/uploads/2021/12/12/186811382b305a76f2e214d5973bb393.writebug)
世界各国疫情历史数据(以加拿大为例)
![](https://www.writebug.com/myres/static/uploads/2021/12/12/f2a4a46e5a8f7ce1fba413dfe84b9b63.writebug)
#### 2.1.3 数据解析
从 2.1.2 中分析可得,虽然我们成功得到了目标网址的响应,但是得到的内容第一眼看上去是杂乱无章的,所以我们需要对网址响应进行解析,从中提取我们需要的数据,同时也可以根据这些数据字段完成数据库表的构建。解析数据的基本原理如下:
- 我们可以发现 API 返回的数据格式为 JSON 格式,所以我们可以利用 python 第三方库将 JSON 格式转化为 python 中我们熟悉的字典格式,然后利用熟悉的字典键值对相关操作获取我们想要的数据,整个过程比较繁琐,只要是耐心一点最终是可以获取到我们想要的数据,此时爬取的数据目前存在内存中,我们必须对这么数据进行持久化操作。
### 2.2 百度热搜数据爬取
如果还利用常规的爬虫方法对百度疫情热搜页面进行爬取,我们会发现爬取的结果如下
![](https://www.writebug.com/myres/static/uploads/2021/12/12/1d91517407fda5e084b278e19cac362e.writebug)
对百度热搜数据进行分析之后可以发现**百度的数据页面使用了 `JS动态渲染技术`**(换句话说:这些数据是网站动态加载的),所以我们用普通的爬虫方法是行不通的,所以我们可以采用 `selenium` 工具来爬取。
#### 2.2.1 selenium 介绍
`Selenium` 是一个用于 Web 应用程序测试的工具。**Selenium 测试直接运行在浏览器中,就像真正的用户在操作一样**。要想利用该工具,还需要你安装对应的浏览器(谷歌、火狐)和[浏览器驱动](http://npm.taobao.org/mirrors/chromedriver/)。
`Selenium` 使用的三个步骤:
- 创建浏览器对象
- 浏览器.get()
- 浏览器.find()
#### 2.2.2 爬取结果
![](https://www.writebug.com/myres/static/uploads/2021/12/12/4658d9ede72a51d3e4a38ad17214a765.writebug)
与爬取腾讯疫情数据一样,我们对这些爬取到的数据结果一样要进行解析以及持久化操作,解析和持久化过程与处理腾讯疫情数据原理同上。
### 2.3 世界各国疫情数据爬取
前文分析到,世界各国疫情数据的 API 接口为 [https://api.inews.qq.com/newsqa/v1/automation/foreign/daily/list?country](https://api.inews.qq.com/newsqa/v1/automation/foreign/daily/list?country)= + 国家名字,所以要爬取世界各国疫情数据也比较容易,具体步骤如下:
1. 将世界各国国家名字存在数组中
2. 遍历数组,将国家名字拼接至 API 接口
3. 对爬取的数据进行解析,并持久化至数据库中。
至此,完成了数据爬取工作,接下来需要对保存在内存中的数据进行持久化操作。
### 2.4 Python 与 MySQL 数据库交互
#### 2.4.1 连接数据库
使用 `pymysql` 第三方模块与数据库交互 ,数据库交互简单来说就是 4 个步骤:
- 建立连接
- 创建游标
- 根据游标执行操作
- 关闭连接
```python
def get_conn():
# 建立连接,可以连接本地数据库或者直接连接服务器的数据库
conn = pymysql.connect(host = "127.0.0.1", user= "root", password = "123456", db ="cov",charset="utf8")
# 创建游标
cursor = conn.cursor()
return conn, cursor
def close_conn(conn, cursor):
if cursor:
cursor.close()
if conn:
conn.close()
```
#### 2.2.2 数据库建表
根据爬取的**腾讯疫情数据**、**百度热搜数据**以及**世界各国疫情数据**,我们需要在数据库中建立四张表格,分别名为 **details(各省市疫情数据)、fforeign(世界各国疫情数据)、history(中国疫情历史数据)、hotsearch(热搜数据)**,数据库中四张表格如下:
![](https://www.writebug.com/myres/static/uploads/2021/12/12/d12824c811bda8237f3fc3ab2e78c331.writebug)
details 表字段如下:
![](https://www.writebug.com/myres/static/uploads/2021/12/12/1a8d0d3902ed5b59e2c7a4506cad30ba.writebug)
history 表字段如下:
![](https://www.writebug.com/myres/static/uploads/2021/12/12/32bfd65a1be7965fd4b039ca0d96e3f3.writebug)
hotsearch 表字段如下:
![](https://www.writebug.com/myres/static/uploads/2021/12/12/589e0741dcab1ac471fa391ef566b52e.writebug)
#### 2.2.3 数据库交互
数据持久化过程中最难是建表,在建表的过程中需要考虑主键以及其他属性等等,而与数据库交互的过程就是 CURD 逻辑代码的书写。唯一要注意的就是**数据库中时间字段的类型与 python 中时间字段类型是不一致的,所以在与数据库交互之前,必须进行类型
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
基于 Python + Flask + Echarts 的疫情监控系统 1.1 项目名称 新冠肺炎疫情实时监控。项目地址:http://121.41.228.239 1.2 项目介绍 疫情在家期间独立开发此项目。该项目是一个基于 Python + Flask + Echarts 打造的一个全球疫情监控系统,它能够实时监控并统计中国以及全世界各国新冠肺炎的确诊人数,同时以图表和地图的形式展现出来。项目完成的功能如下: • 统计全国各省市地区每日疫情数据,并以图表形式展现。 • 统计全国疫情历史数据,并以图表形式展现。 • 统计百度热搜数据,并以词云图形式展现。 • 统计全球各国疫情数据。 项目涉及的主要技术栈有: • Python 网络爬虫 • Python 与 MySQL 数据库交互 • Flask 构建 Web 项目 • 基于 Echarts 数据可视化展示 • 在阿里云部署 Web 项目以及爬虫 1.3 项目流程图
资源推荐
资源详情
资源评论
收起资源包目录
基于 Python + Flask + Echarts 的疫情监控系统 (1118个子文件)
activate 2KB
.bashrc 76B
activate.bat 972B
deactivate.bat 347B
sysconfig.cfg 3KB
pyvenv.cfg 79B
style.css 6KB
main.css 2KB
style.css 709B
setuptools-39.1.0-py3.7.egg 550KB
chromedriver.exe 7.7MB
python.exe 511KB
pythonw.exe 510KB
chardetect.exe 100KB
flask.exe 100KB
t64.exe 100KB
w64.exe 97KB
t32.exe 91KB
w32.exe 87KB
pip.exe 73KB
easy_install-3.7.exe 73KB
pip3.exe 73KB
pip3.7.exe 73KB
easy_install.exe 73KB
FONT_LICENSE 5KB
main.html 1KB
world.html 654B
Epidemic Map.iml 851B
INSTALLER 4B
INSTALLER 4B
INSTALLER 4B
INSTALLER 4B
INSTALLER 4B
INSTALLER 4B
INSTALLER 4B
INSTALLER 4B
INSTALLER 4B
INSTALLER 4B
INSTALLER 4B
INSTALLER 4B
INSTALLER 4B
echarts.min.js 701KB
jquery.js 274KB
world.js 144KB
worldcloud.js 125KB
jquery.js 86KB
china.js 61KB
isDisplayed.js 43KB
debugger.js 6KB
getAttribute.js 6KB
world-map.js 5KB
ec_left1.js 4KB
ec_left2.js 3KB
controller.js 2KB
ec_center.js 1KB
ec_right2.js 1KB
ec_right1.js 789B
world-controller.js 494B
webdriver_prefs.json 3KB
metadata.json 2KB
metadata.json 1KB
pip-selfcheck.json 59B
LICENSE 11KB
LICENSE 1KB
LICENSE 1KB
LICENSE 1KB
README.md 18KB
METADATA 40KB
METADATA 9KB
METADATA 7KB
METADATA 6KB
METADATA 5KB
METADATA 5KB
METADATA 4KB
METADATA 3KB
METADATA 3KB
METADATA 3KB
METADATA 3KB
METADATA 3KB
METADATA 3KB
not-zip-safe 1B
cacert.pem 276KB
cacert.pem 265KB
PKG-INFO 3KB
source.png 818B
console.png 507B
more.png 200B
less.png 191B
Activate.ps1 1KB
easy-install.pth 53B
setuptools.pth 30B
pyparsing.py 220KB
uts46data.py 197KB
uts46data.py 181KB
html5parser.py 116KB
__init__.py 101KB
datastructures.py 98KB
app.py 96KB
tarfile.py 90KB
constants.py 82KB
共 1118 条
- 1
- 2
- 3
- 4
- 5
- 6
- 12
资源评论
程序员奇奇
- 粉丝: 3w+
- 资源: 294
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功