0
点赞
收藏
分享

微信扫一扫

Python Flask定时调度疫情大数据爬取全栈项目实战使用-12 动态实时拉取统计数据及时间

海牙秋天 2022-08-14 阅读 40


动态实时拉取疫情数据

统计数据及时间

一.调整css样式

Python Flask定时调度疫情大数据爬取全栈项目实战使用-12  动态实时拉取统计数据及时间_ajax

调整css

.num{
width: 25%;
float: left;
display: flex;
align-items: center;
justify-content: center;
color: gold;
font-size: 20px;
/* margin-top: 20px; */
}

.txt{
width: 25%;
float: left;
font-family: "幼圆";
display: flex;
align-items: center;
justify-content: center;

}

.txt h2{
margin: 0;
}

调整html

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>疫情监控</title>
<link href="../static/css/main.css" rel="stylesheet"/>
<style>

</style>
</head>
<body>
<div id="title">全国疫情实时数据追踪</div>
<div id="time">我是时间</div>
<div id="l1">我是左1</div>
<div id="l2">我是左2</div>
<div id="c1">
<div class="num"><h1>123</h1></div>
<div class="num"><h1>123</h1></div>
<div class="num"><h1>123</h1></div>
<div class="num"><h1>123</h1></div>
<div class="txt"><h2>累计确诊</h2></div>
<div class="txt"><h2>剩余疑似</h2></div>
<div class="txt"><h2>累计治愈</h2></div>
<div class="txt"><h2>累计死亡</h2></div>
</div>
<div id="c2">我是中2</div>
<div id="r1">我是右1</div>
<div id="r2">我是右2</div>
</body>
</html>

调整c1样式的背景和颜色:

#c1{
position: absolute;
width: 40%;
height: 30%;
top: 10%;
left: 30%;
color: white;
}

修改时间time的样式

#time{
position: absolute;
height: 10%;
right: 2%;
top: 5%;
color: #FFFFFF;
font-size: 20px;
}

二.写页面web后台来获取数据

2.1获取时间数据

引入jquery

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>疫情监控</title>
<script src="../static/js/jquery.js"></script>

编写ajax脚本

<script>function gettime(){
$.ajax({
url:"/time",
timeout:10000,//超时时间设置为10秒;
success:function(data){
$("#time").html(data)
},
error:function(xhr,type,errorThrown){

}
});
}
setInterval(gettime, 1000)</script>

编写工具类获取服务器时间 ​​utils.py​

import  time

def get_time():
time_str = time.strftime("%Y{}%m{}%d{} %X")
return time_str.format("年","月","日")
pass

if __name__ == "__main__":
print(get_time())

​app.py​​编写ajax对应的后台接口代码:

import utils
@app.route('/time')
def get_time():
return utils.get_time()

修改主页面为 ​​main.html​

@app.route('/')
def hello_world():
return render_template("main.html")

2.2从数据库获取腾讯疫情数据

丰富​​utils.py​

import pymysql

def get_conn():
# 创建连接
conn = pymysql.connect(host="35.241.84.84",
user='root',
password='123qweasdzxc',
db='cov')
# 创建游标
cursor = conn.cursor()
return conn, cursor


def close_conn(conn, cursor):
if cursor:
cursor.close()
if conn:
conn.close()


def query(sql, *args):
"""
:封装通用查询
"""
conn, cursor = get_conn()
cursor.execute(sql, args)
res = cursor.fetchall()
close_conn(conn, cursor)
return res


def get_c1_data():
"""
:return 返回大屏div id=c1 的数据
"""
# 因为会更新多次数据,取时间戳最新的那组数据
sql = "select sum(confirm)," \
"(select suspect from history order by ds desc limit 1)," \
"sum(heal)," \
"sum(dead)" \
"from details" \
" where update_time=(select update_time from details order by update_time desc limit 1) "
res = query(sql)
return res[0]

测试get_c1_data()的返回结果

if __name__ == "__main__":
print(get_c1_data())

结果如下图所示:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-63uUCCou-1616337368528)(C:\Users\hbq\AppData\Roaming\Typora\typora-user-images\image-20210321214920255.png)]

app.py定义一个后端接口返回json

@app.route('/c1')
def get_c1_data():
data = utils.get_c1_data()
confirm_num = data[0].to_eng_string()
heal_num = data[2].to_eng_string()
dead_num = data[3].to_eng_string()
return jsonify({"confirm" : confirm_num, "suspect" : data[1], "heal" : heal_num,"dead" : dead_num})

​main.html​​添加ajax局部获取数据

function get_c1_data(){
$.ajax({
url:"c1",
success:function(data){
$(".num h1").eq(0).text(data.confirm);
$(".num h1").eq(1).text(data.suspect);
$(".num h1").eq(2).text(data.heal);
$(".num h1").eq(3).text(data.dead);
},
error:function(xhr,type,errorThrown){

}
})
}
setInterval(get_c1_data, 1000)

运行后台服务

Python Flask定时调度疫情大数据爬取全栈项目实战使用-12  动态实时拉取统计数据及时间_ajax_02


举报

相关推荐

0 条评论