关键词:
之前博主通过python来爬取电影信息,今天,博主分享的项目是疫情监控可视化的项目
编程语言:python
框架:flask
数据库:MySQL
开发环境: python3.7 pycharm
涉及知识:爬虫+ajax+echart+flask
首先给大家看一下最终效果:
我们来梳理一下项目的流程:
爬取各个网站平台的数据
将所得数据进行处理并插入数据库中
从数据库中读取数据并使用echart视图展示
爬取数据
# 爬取并处理腾讯疫情数据
import requests
import json
import time
# 返回历史数据和当日详细数据
def get_tencent_data():
url1 = "https://view.inews.qq.com/g2/getOnsInfo?name=disease_h5"
url2 = "https://view.inews.qq.com/g2/getOnsInfo?name=disease_other"
headers =
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.70 Safari/537.36'
r1 = requests.get(url1, headers)
r2 = requests.get(url2, headers)
# json字符串转字典
res1 = json.loads(r1.text)
res2 = json.loads(r2.text)
data_all1 = json.loads(res1["data"])
data_all2 = json.loads(res2["data"])
# 历史数据
history =
for i in data_all2["chinaDayList"]:
ds = "2020." + i["date"]
tup = time.strptime(ds, "%Y.%m.%d") # 匹配时间
ds = time.strftime("%Y-%m-%d", tup) # 改变时间输入格式,不然插入数据库会报错,数据库是datatime格式
confirm = i["confirm"]
suspect = i["suspect"]
heal = i["heal"]
dead = i["dead"]
history[ds] = "confirm": confirm, "suspect": suspect, "heal": heal, "dead": dead
for i in data_all2["chinaDayAddList"]:
ds = "2020." + i["date"]
tup = time.strptime(ds, "%Y.%m.%d") # 匹配时间
ds = time.strftime("%Y-%m-%d", tup) # 改变时间输入格式,不然插入数据库会报错,数据库是datatime格式
confirm = i["confirm"]
suspect = i["suspect"]
heal = i["heal"]
dead = i["dead"]
history[ds].update("confirm_add": confirm, "suspect_add": suspect, "heal_add": heal, "dead_add": dead)
# 当日详细数据
details = []
update_time = data_all1["lastUpdateTime"]
data_country = data_all1["areaTree"] # list 25个国家
data_province = data_country[0]["children"] # 中国各省
for pro_infos in data_province:
province = pro_infos["name"] # 省名
for city_infos in pro_infos["children"]:
city = city_infos["name"]
confirm = city_infos["total"]["confirm"]
confirm_add = city_infos["today"]["confirm"]
heal = city_infos["total"]["heal"]
dead = city_infos["total"]["dead"]
details.append([update_time, province, city, confirm, confirm_add, heal, dead])
return history, details
his, de = get_tencent_data()
print(his)
print(de)
这段代码用于爬取数据并且将数据进行处理并输出
处理后的数据
接下来我们需要将数据插入到数据库中
数据库操作
数据基本配置:连接与关闭
def get_conn():
#建立连接
conn = pymysql.connect(host="127.0.0.1", user="root", password="px980305", db="cov", charset="utf8")
#创建游标
cursor = conn.cursor()
return conn,cursor
def close_conn(conn,cursor): #关闭连接
if cursor:
cursor.close()
if conn:
conn.close()
插入数据
#插入details数据
def update_details():
cursor = None
conn = None
try:
li = get_tencent_data()[1] #0是历史数据,1是当日详细数据
conn,cursor = get_conn()
sql = "insert into details(update_time,province,city,confirm,confirm_add,heal,dead) values(%s,%s,%s,%s,%s,%s,%s)"
sql_query = "select %s=(select update_time from details order by id desc limit 1)" #对比当前最大时间戳
#对比当前最大时间戳
cursor.execute(sql_query,li[0][0])
if not cursor.fetchone()[0]:
print(f"time.asctime()开始更新数据")
for item in li:
cursor.execute(sql,item)
conn.commit()
print(f"time.asctime()更新到最新数据")
else:
print(f"time.asctime()已是最新数据!")
except:
traceback.print_exc()
finally:
close_conn(conn,cursor)
插入结果如图所示
关于数据库数据分为三个,分别是疫情统计,疫情详情和当前疫情热度
完成数据库模块后,便是使用flask框架来设置路由并引入echart插件
Flask整合Web
app = Flask(__name__)
@app.route('/')
def hello_world():
return render_template('main.html')
@app.route('/c1')
def get_c1_data():
data = utils.get_c1_data()
return jsonify("confirm":data[0],"suspect":data[1],"heal":data[2],"dead":data[3])
@app.route('/c2')
def get_c2_data():
res = []
for tup in utils.get_c2_data():
res.append("name":tup[0],"value":int(tup[1]))
return jsonify("data":res)
@app.route("/l1")
def get_l1_data():
data = utils.get_l1_data()
day,confirm,suspect,heal,dead = [],[],[],[],[]
for a,b,c,d,e in data[7:]: #很多卫健委网站前7天都是没有数据的,所以把前7天砍掉了
day.append(a.strftime("%m-%d")) #a是datatime类型
confirm.append(b)
suspect.append(c)
heal.append(d)
dead.append(e)
return jsonify("day":day,"confirm": confirm, "suspect": suspect, "heal": heal, "dead": dead)
@app.route("/l2")
def get_l2_data():
data = utils.get_l2_data()
day, confirm_add, suspect_add = [], [], []
for a, b, c in data[7:]:
day.append(a.strftime("%m-%d")) # a是datatime类型
confirm_add.append(b)
suspect_add.append(c)
return jsonify("day": day, "confirm_add": confirm_add, "suspect_add": suspect_add)
@app.route("/r1")
def get_r1_data():
data = utils.get_r1_data()
city = []
confirm = []
for k,v in data:
city.append(k)
confirm.append(int(v))
return jsonify("city": city, "confirm": confirm)
@app.route("/r2")
def get_r2_data():
data = utils.get_r2_data() #格式 (('民警抗疫一线奋战16天牺牲1037364',), ('四川再派两批医疗队1537382',)
d = []
for i in data:
k = i[0].rstrip(string.digits) # 移除热搜数字
v = i[0][len(k):] # 获取热搜数字
ks = extract_tags(k) # 使用jieba 提取关键字
for j in ks:
if not j.isdigit():
d.append("name": j, "value": v)
return jsonify("kws": d)
完成这些后,我们对项目便完成了。
基于flask框架的新冠疫情数据可视化系统(代码片段)
...情情况中国地图分布、Echarts饼状图和树状图等,应用Python爬虫、Flask框架、Echarts等技术实现。目录基于flask框架的新冠疫情数据可视化系统一、系统概述二、系统实现的效果:三、项 查看详情
大数据毕设选题-flask疫情数据可视化系统(python)(代码片段)
文章目录1前言1课题背景2数据库设计实现3实现效果4Flask框架5爬虫6Ajax技术7Echarts1前言🔥Hi,大家好,这里是丹成学长的毕设系列文章!🔥对毕设有任何疑问都可以问学长哦!这两年开始,各个学校对毕设的... 查看详情
全国疫情防控监控平台开发
...气预报等功能。前端项目环境部署,在团队开发过程中中使用远程仓库gitee进行项目的管理和开发。技术栈项目采用Vue+VueRouter+Vuex+ElementUI+Axios+Nod 查看详情
计算机毕业设计之springboot+vue.js国内疫情实时追踪可视化系统疫情可视化疫情数据分析平台
...websocket实时前后端数据交互显示数据可视化-百度echarts的使用springboot微服务架构java爬虫数据库大表查询优化 开发技术前端技术:vue.js、百度echarts、websocket、axios后端技术:springboot、mybatis数据库:mysql5.7++ 运行截图疫情... 查看详情
实现python接口自动化平台并形成可视化界面(代码片段)
实现Python接口自动化平台并形成可视化界面的具体步骤如下:1.安装必要的Python库,例如Flask、Flask-RESTful、pytest等。2.设计平台的数据结构,例如测试用例、测试任务、测试结果等,可以使用Python的类来实现。3.使用Flask框架开发... 查看详情
基于python/flask框架的双色球数据采集(爬虫)及大数据可视化平台设计与实现
基于Python/Flask框架的双色球数据采集及可视化平台项目简介项目说明项目技术项目演示项目获取项目简介前几天看到,有位老哥中了双色球,往大街上一摊。神经兮兮的说:“终于不用上班了”。我也想神经兮兮的说... 查看详情
简单几行代码实现全国疫情数据可视化(python课程设计)(代码片段)
...疫情管控,我国有一系列良好的措施。下面我们通过python对疫情数据进行一个简单的爬取整理以及可视化。#导入模块importpandasaspdimportrequests#首先这是爬取数据和整理数据我们需要用到的第三方库,疫情数据来自腾讯新闻... 查看详情
「python」使用pyecharts生成疫情分布地图
...相应的江苏各个地级市的疫情数据,那么我们如何来使用Python实现将数据可视化在地图上呢?ApacheEcharts是一个由百度开源的数据可视化,凭借着良好的交互性,精巧的图表设计,得到了众多开发者的认可。而Python是一门富有表... 查看详情
计算机毕业设计python新冠疫情数据分析可视化平台
参考技术A前端开发:VUE、ElementUI、ECharts、Maptalks、D3js后端web开发:Flask、Mysql爬虫开发:request数据分析:pandas、numpy数据可视化、爬虫、数据清洗、大数据、3D视图 查看详情
flask使用pythonweb轻量级框架flask实现登录功能(代码片段)
1 前言最近学习了基于python 的flaskweb框架,能实现一个简单的登录界面。Flask是一个轻量级的可定微型制框架,使用python编写。其优点是灵活、轻便、安全,能在短时间内完成一个轻量级的网页。虽然Flask”微小”但... 查看详情
数据大屏python爬取全国及北京疫情数据实现可视化大屏(代码片段)
前言Python:print("Python祝程序员元旦快乐!")PHP:echo"PHP祝程序员元旦快乐!";JavaScript:document.write("JavaScript祝程序员元旦快乐!")Go:fmt.Printf("Go祝程 查看详情
react17+vite+echarts实现疫情数据可视化「03学习reacthooks」
...项目」文章目录学习ReactHooks介绍ReactReact特点介绍ReactHook使用useState基础知识代码示例使用useEffect基础知识注意事项代码示例代码示例联系&期待下一篇 查看详情
react17+vite+echarts实现疫情数据可视化「03学习reacthooks」
...项目」文章目录学习ReactHooks介绍ReactReact特点介绍ReactHook使用useState基础知识代码示例使用useEffect基础知识注意事项代码示例代码示例联系&期待下一篇 查看详情
react17+vite+echarts实现疫情数据可视化「06完成疫情地图绘制」
往期文章目录:React17+Vite+ECharts实现疫情数据可视化「01项目介绍篇」React17+Vite+ECharts实现疫情数据可视化「02快速搭建项目」React17+Vite+ECharts实现疫情数据可视化「03学习ReactHooks」React17+Vite+ECharts实现疫情数据可视化「04初始化项... 查看详情
react17+vite+echarts实现疫情数据可视化「06完成疫情地图绘制」
往期文章目录:React17+Vite+ECharts实现疫情数据可视化「01项目介绍篇」React17+Vite+ECharts实现疫情数据可视化「02快速搭建项目」React17+Vite+ECharts实现疫情数据可视化「03学习ReactHooks」React17+Vite+ECharts实现疫情数据可视化「04初始化项... 查看详情
react17+vite+echarts实现疫情数据可视化「05获取疫情数据」
往期文章目录:React17+Vite+ECharts实现疫情数据可视化「01项目介绍篇」React17+Vite+ECharts实现疫情数据可视化「02快速搭建项目」React17+Vite+ECharts实现疫情数据可视化「03学习ReactHooks」React17+Vite+ECharts实现疫情数据可视化「04初始化项... 查看详情
react17+vite+echarts实现疫情数据可视化「05获取疫情数据」
往期文章目录:React17+Vite+ECharts实现疫情数据可视化「01项目介绍篇」React17+Vite+ECharts实现疫情数据可视化「02快速搭建项目」React17+Vite+ECharts实现疫情数据可视化「03学习ReactHooks」React17+Vite+ECharts实现疫情数据可视化「04初始化项... 查看详情
使用python+flask开发博客项目,并实现内网穿透(代码片段)
前言Flask是一个使用python编写的轻量级Web框架,对比其他相同类型的框架而言,这个框架更加的灵活轻便。并且具有很强的定制性,用户可以根据自己的需求添加功能,有强大的插件库,这也是为什么这个框架... 查看详情