大屏数据可视化-疫情监控系统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爬虫概述

爬虫,就是给网站发起请求,并从响应中提取需要的数据自动化程序

  1. 发起请求,获取响应

    通过http库,对目标站点进行请求,等同于自己打开浏览器,输入网址

    常用库:urllib,urllib3,requests

    服务器会返回请求的内容,一般为html,二进制文件(音频或视频等),文档,json字符串等

  2. 解析内容

    寻找自己想要的信息,利用正则表达式或者其他库提取目标信息

    常用库:re,beautifulsoup4

  3. 保存数据

    将解析得到的数据持久化到文件或数据库

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操作

  1. mysql –h localhost –u root -p

  2. show databases;

  3. create database cov;

  4. show databases;

  5. use cov;

  6. 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;
  1. 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;
  1. show tables;
  2. desc history;
  3. select * from history;显示history内数据
  4. delete from history;删除history表

2.2 使用pymysql模块与数据库交互

安装:pip install pymysql

  • 建立连接
  • 创建游标
  • 执行操作
  • 关闭连接

在这里插入图片描述

出现的问题:

在这里插入图片描述

  1. “Duplicate entry ‘0’ for key ‘PRIMARY’”的错误提示,原因是主键重复,0主键已经存在,不能再进行添加了。
  2. 对于 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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

hahahahah123456

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值