大屏数据可视化-疫情监控系统1-准备工作+数据网络爬虫
大屏数据可视化-疫情监控系统
本项目是一个基于Python+Flask+Echarts打造的一个疫情监控系统,涉及的知识有:
- Python网络爬虫
- 使用Python与MySQL数据库交互
- 使用Flask构建web项目
- 基于Echarts数据化展示
0. 准备工作
0.1 项目环境准备
- Python3.x
- MySQL数据库
- Pycahrm(Python IDE)
- Jupyter Notebook(Python IDE)
- Hbuider(国产前段IDE,http://www.dcloud.io/hbuilderx.html,可视化编辑时使用)
- 主机
0.2 notebook
1.设置Jupyter Notebook默认目录:
cmd、jupyter notebook --generate–config、编辑生成的jupyter notebook --generate–config.py文件、搜索找到notebook_dir、取消注释的c.NotebookApp.notebook_dir=r目标目录’、保存退出
2.打开方式:
(1)cmd、jupyter notebook
(2)点击菜单栏anaconda3下的jupyter notebook
(3)编辑脚本:start.cmd(编辑内容为jupyter notebook)
3.基本操作:
(1)新建文件:new 和 导入文件:Upload
(2)单元格分类:code、markdown
(3)命令模式(蓝色边框) 与 编辑模式(绿色模式)
(4)常用快捷键
- 单元格类型转换:Y/M
- 插入单元格:A/B
- 运行单元格:Ctel/shift/Alt+Enter
- 删除单元格:DD
- 进入命令模式:Esc
- 代码补全: Tab
4.markdown语法
-
标题:使用1~6个#跟随一个空格来表示
-
无序列表:使用*,-或+后跟随一个空格
-
有序列表:使用数字+点表示
-
换行:使用两个或以上的空行
-
代码:可以使用``来标记
-
代码块:可以使用``````来标记
-
分隔符:三个***或三个—
- 链接:[文字](链接地址)
- 图片:![图片的说明](图片的文件名)
1. 数据获取-爬虫
#### 1.1爬虫概述
爬虫,就是给网站发起请求,并从响应中提取需要的数据自动化程序
-
发起请求,获取响应
通过http库,对目标站点进行请求,等同于自己打开浏览器,输入网址
常用库:urllib,urllib3,requests
服务器会返回请求的内容,一般为html,二进制文件(音频或视频等),文档,json字符串等
-
解析内容
寻找自己想要的信息,利用正则表达式或者其他库提取目标信息
常用库:re,beautifulsoup4
-
保存数据
将解析得到的数据持久化到文件或数据库
1.2使用urllib发送请求
request.urlopen()
导入模块:
from urllib import request
url='http://www.baidu.com'
res = request.urlopen(url)#获取响应
print(res.info())#响应头
print(res.getcode())#状态码 2xx,3xx,4xx
print(res.geturl())#返回响应地址
1.3使用requests发送请求
2.数据储存-MySQL数据库
### 2.1MySQL操作
-
mysql –h localhost –u root -p
-
show databases;
-
create database cov;
-
show databases;
-
use cov;
-
history 表存储每日总数据
CREATE TABLE `history` (
`ds` datetime NOT NULL COMMENT '日期',
`confirm` int(11) DEFAULT NULL COMMENT '累计确诊',
`confirm_add` int(11) DEFAULT NULL COMMENT '当日新增确诊',
`suspect` int(11) DEFAULT NULL COMMENT '剩余疑似',
`suspect_add` int(11) DEFAULT NULL COMMENT '当日新增疑似',
`heal` int(11) DEFAULT NULL COMMENT '累计治愈',
`heal_add` int(11) DEFAULT NULL COMMENT '当日新增治愈',
`dead` int(11) DEFAULT NULL COMMENT '累计死亡',
`dead_add` int(11) DEFAULT NULL COMMENT '当日新增死亡',
PRIMARY KEY (`ds`) USING BTREE ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
- details 表存储每日详细数据
CREATE TABLE `details` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`update_time` datetime DEFAULT NULL COMMENT '数据最后更新时间',
`province` varchar(50) DEFAULT NULL COMMENT '省',
`city` varchar(50) DEFAULT NULL COMMENT '市',
`confirm` int(11) DEFAULT NULL COMMENT '累计确诊',
`confirm_add` int(11) DEFAULT NULL COMMENT '新增确诊',
`heal` int(11) DEFAULT NULL COMMENT '累计治愈',
`dead` int(11) DEFAULT NULL COMMENT '累计死亡',
PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
- show tables;
- desc history;
- select * from history;显示history内数据
- delete from history;删除history表
2.2 使用pymysql模块与数据库交互
安装:pip install pymysql
- 建立连接
- 创建游标
- 执行操作
- 关闭连接
出现的问题:
- “Duplicate entry ‘0’ for key ‘PRIMARY’”的错误提示,原因是主键重复,0主键已经存在,不能再进行添加了。
- 对于 ERROR 1045 (28000): Access denied for user [‘root’@‘localhost’] 此类错误返回时, (using password: ?)中?的关键字是YES还是NO,关键不在于用户是否存在,密码是否正确,它的结果取决于登录时,用户对于密码有没有字符串的输入,如果没有,MySQL数据库验证后,若出错返回此类信息,则应是 (using password: NO),若用户对密码有字符串的输入,返回的则是(using password: YES)。
2.3爬取百度热搜数据
百度的数据页面使用了动态渲染技术,我们可以用 selenium 来爬
2.3.1selenium
- selenium 是一个用于 web 应用程序测试的工具,直接运行在浏览器中,就像真正的用 户在操作一样
- 安装:
pip install selenium
- 安装浏览器(Firefox、Google等)
- 下载对应版本浏览器驱动:http://npm.taobao.org/mirrors/chromedriver/
- 创建浏览器对象
- 浏览器get()
- 浏览器find()
之后的步骤看下篇文章:大屏数据可视化-疫情监控系统2-web程序开发
https://blog.csdn.net/hahahahah123456/article/details/108090536
参考:
https://lfengting.gitee.io/blog/2020/03/24/python%E7%88%AC%E8%99%AB%E5%AE%9E%E6%88%98/
https://www.bilibili.com/video/BV177411j7qJ