flask+echarts+mysql_实战|Python爬虫并用Flask框架搭建可视化网站

news/2024/5/16 23:13:40/文章来源:https://blog.csdn.net/weixin_39943678/article/details/111217352
8de41df39a5889a9dab1b4b08dc2dee1.gif大家好,我是J哥,也可以叫我菜J,专注原创,致力于用浅显易懂的语言分享网络爬虫、数据分析、可视化等干货,希望人人都能学到新知识。项目背景事情是这样的,最近呢,一直有朋友问我有没有什么办法将每天获得的最新数据进行可视化,并且实现可视化图表自动更新,解放双手。72cacd9dbd043e74fa23eeaaeee0498d.png尤其对于金融行业,如果可以将每天获得的关键行情指标数据自建模型,然后将结果可视化至私有平台,实现每日更新,那确实是一件挺有意思的事情。d62c4129eeb1a77099dd2ac292672088.gif这不,这位金融大佬就找到了我:

cb93cf0c8943685658ea1581a306555d.png

其实解决的方案挺多,J哥简单总结了下:

c29de01039dc95d89ddc89b1bd54e395.png

OK,分析完优缺点,那咱就开始实操吧。本文以爬取豆瓣电影数据并搭建可视化网站为例进行讲解,考虑到很多朋友是结果导向心理,那就先看下最终实现的效果吧。

首先,看下可视化网站首页,长这样:

0252bf835971079457d387a942fb86a2.png

其次,简单用动画演示下可视化网站:

be4e6dd609298e56084d6b23934b4ef6.gif

项目实操J哥一直以来坚信实践来源于理论,要想用Python实现以上可视化网站效果,咱必须首先搞懂其中原理和方法。于是,作为灵魂画手的J哥,又悄悄拿起了画笔。

c4c77ab35b37e4c26ffb49a7fed23c44.png

怎么样,这次的图比之前文章里的画的好吧。387549c4ce847d04b4fa04f60c64b6a4.png理论部分讲完了,还是作图舒服,简单,直接。既然原理搞明白了,接下来就是一步步去实现了。一获取数据获取数据的方法很多,J哥更喜欢自己动手,写写爬虫脚本。本次项目数据来源为以下网站。

5d6fdb1f7d0740d2bbebf5d7f0786682.png

具体的爬虫怎么写,我这不做赘述,因为是简单的静态网页,你查看本公众号历史文章《实战|手把手教你用Python爬虫(附详细源码)》,自然而然就知道怎么搞了。4c4b374d0fa64811bec2bfe83b8814bc.png不过考虑到有些朋友还没入门,J哥还是啰嗦一句。由于url中的start参数表示每增加25翻页一次,而翻10次就可以获取到豆瓣电影TOP250数据,所以,你要这样构建url:
1#爬取网页
2baseurl = "https://movie.douban.com/top250?start="
3def getData(baseurl):
4    datalist = []
5    for i in range(0,10):    #调用获取页面信息的函数,10次
6        url = baseurl + str(i*25)
二存储数据数据爬下来之后,咱们得存储下来。一般的存储方式有csv、excel等,而J哥强烈建议存储到Mysql数据库。这个数据库开源好用,入门也极其简单,感兴趣的朋友可关注本公众号,从后台自动获取Mysql入门教程。咱们继续回到Python中来,安装并导入pymysql库以便对Mysql进行各种操作:
1import pymysql    #进行Mysql数据库操作
在数据库test中创建movie表,代码如下:
 1def mysql_create():
2    conn = pymysql.connect(host="localhost", user="你的", passwd="你的", db="test", port=3306, charset="utf8")
3
4    # 获取游标
5    cur = conn.cursor()
6
7    # 创建表sql语句
8    sql_create = """ 9                       create table movie10                        (11                        id INTEGER  PRIMARY KEY AUTO_INCREMENT,   #自增、主键注意字段属性必须大写12                        info_link TEXT,13                        pic_link TEXT,14                        cname VARCHAR(100),15                        ename VARCHAR(100),16                        score DECIMAL(10,2),17                        rated INTEGER,18                        instroduction TEXT,19                        info TEXT20                        )    21            """
22    # 执行创建表sql语句
23    cur.execute(sql_create)
24    conn.commit()
25    cur.close()
26    conn.close()
把爬取的数据写入movie表中:
 1#3、保存数据
2def saveData2DB(datalist):
3    mysql_create()
4    conn = pymysql.connect(host="localhost", user="你的", passwd="你的", db="test", port=3306, charset="utf8")
5    cur = conn.cursor()
6    for data in datalist:
7        for index in range(len(data)):
8            data[index] = '"'+data[index]+'"'  #每个数据加上双引号
9        sql = '''  #注意空格,这个sql要在for data in datalist:下遍历10                insert into movie(11                info_link,pic_link,cname,ename,score,rated,instroduction,info)12                values(%s)'''%",".join(data)    #",".join表示把数据连接并以逗号分隔
13        print(sql)   #先打印下sql看下有没有问题
14        cur.execute(sql)
15        conn.commit()
16    cur.close()
17    conn.close()
咱们用Mysql的图形化界面Navicat打开下这个movie表,截取部分,长这样:

561d34e1853d76dd8721c792c54df584.png

三选择web框架Python最为流行的web框架莫过于Django和Flask了,而两者的区别,J哥也找了很多文章去了解,大致总结为一句话:Django大而全,Flask小而灵活。做了对比之后,J哥最终选择了Flask框架来做这个可视化网站。专业版PyCharm可以直接创建Flask项目,但J哥比较菜,还没那么专业,所以还是用的社区版。912a4753e828f9be67b5b794ffa9b871.png不过问题也不大,咱自己创建Flask框架中的app.py文件、static文件以及templates文件也行呀。templates是前端网页模板,static是对templates的样式设置,app.py控制用户的请求和数据的返还。c6f2afea04f3b46f239512095c9d0531.gif那J哥就举个可能不太恰当的栗子,templates是素颜,static是美颜,而app.py是朋友圈。aa149b5bba9b6193b5adcb41c72c007d.png

我们来看看app.py长啥样:

 1#-*- coding = uft-8 -*-
2#@Time : 2020/5/24 11:57 上午
3#@Author : 菜J学Python
4#@File : app.py
5
6from flask import Flask,render_template
7
8app = Flask(__name__)
9
10@app.route("/index")
11def index():
12    return render_template("index.html")
13
14if __name__ == '__main__':
15    app.run(debug=True)
你没看错,Flask框架就这么简单。route是路由,用来控制用户的请求,index函数用来返还给用户网页数据,以上是返还了一个主页index.html。注意要开启debug模式,否则你代码出错了很难找到原因。接下来,我以制作score.html为例来具体介绍怎么实现的,也就是这个网页:

57fc95c339d5b4590cc3fd3e9b72249b.png

我从网上download了一个免费的Bootstrap前端模板,这样网页的结构、颜色等就不用自己搞了,当然前端大佬可以考虑自己写。在模板中找了个html,把没用的内容全删掉,留下可以放图表的位置。

接着,在score.html中加入图表,我这里采用的是Echarts的模板。

0d3013f6cea41ef8d29dbc82e99c0ce1.png

制作Echarts图表要先下载echarts.min.js文件,建议根据自己的需要在线定制下载,因为默认全部下载的话太大啦,大概率下载失败!!!下载完后,把它放在static文件夹里的js子目录。

30e73a178dd222d61820c53d511b5cee.png

咱们打开score.html,开始制作柱状图。首先把echarts.min.js引入进来:

9c3cbbff66014f75d2d7e0b4eda352b7.png

接着,我们需要为柱状图准备一个具备高宽的 DOM 容器。

7e8e6e7b18e79929b3fb9159992a4cfb.png

然后,我们就可以通过 echarts.init 方法初始化一个 echarts 实例并通过 setOption 方法生成一个简单的柱状图,其实就是加个script。
       
其他任何图表制作方法都类似,直接去Echarts官网copy它们的stript就好啦,咱们主要负责给图表传数据。四调用数据

眼尖的朋友可能已经发现我那柱状图stript里的两个data就是横纵坐标的数据,数据类型为list。Echarts官网默认给的数据我用注释掉了。而data里的score和num正是通过app.py调用的Mysql里的movie表数据。

@app.route("/score")
def score():
    score = [] #评分
    num = [] #每个评分所统计出的电影数量
    conn = pymysql.connect(host="localhost", user="你的", passwd="你的", db="test", port=3306, charset="utf8")
    cur = conn.cursor()
    sql = "select score,count(score) from movie group by score;"
    cur.execute(sql)
    data = cur.fetchall()   #mysql必须
    for item in data:
        score.append(item[0])
        num.append(item[1])
    cur.close()
    conn.close()
    return  render_template("/score.html",score=score,num=num)
柱状图stript里的store要转为json格式,否则前端显示会乱码,至此score.html就做完啦。你可以在一个html里添加多张图,无非就是多写几个sql语句罢了。但要注意不同图表要定义不同的id,否则前端只能显示一张图。举一反三,咱就可以很方便的制作其他网页了。无非就是加图表,写sql传数据,加图表,写sql传数据重复操作罢了。

f8939c4bfcffe3e8affdcc4e43a1b2b7.png

最后,就是在主页中给相应的内容添加href属性,以实现点击对应的栏目可以跳转到对应的网页。

f32f83b66c680d72570af5d8510bff37.png

至此,本地化的Flask框架制作的可视化网站搭建完成。五服务器部署

通过以上方法制作的网站你可以在自己的电脑里查看,只要每天运行下爬虫代码,你的网站内容就会实现自动更新啦。但如果你想要发布到互联网,随时随地让自己和别人查看,你还得把项目部署到服务器上,并给爬虫设置定时。你才可以实现每天躺着吃瓜,开心地看着你的网站自动更新。

fc8711ac446a4bed1224aeab31149092.gif

限于篇幅,本文暂不作服务器的购买、配置以及项目部署等操作介绍,感兴趣的朋友可以关注下此号,后续会有相关讲解,精彩不容错过哦~结 语Flask框架入门较简单,也比较轻巧灵活,很适合个人或者小团队快速搭建网站玩。但如果你要搭建大型的电商平台或者资讯平台,还是建议你学学Django,J哥最近也打算搞搞Django,毕竟也是有一颗好奇的心。最后,如果你在搭建Flask框架的时候遇到问题,可以后台加我WeChat,菜J也想学习下你的bug。

往期回顾

  • 实战|Python轻松实现动态网页爬虫(附详细源码)

  • 实战|Python轻松实现地图可视化(附详细源码)

  • 实战|Python轻松实现PDF格式转换(附详细源码)

  • 实战|Python轻松实现批量图片文字识别(附详细源码)

  • 实战|手把手教你用Python爬虫(附详细源码)

  • 实战|Python轻松实现绘制词云图(附详细源码)

59dc3fad110edda77fc4575cf746e1f1.gif

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_769083.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

服务器管理器建网站,搭建web服务器

打开一台windows 2008服务器(并保证已安装DNS服务器,Ip地址是192.168.6.1DNS指向自已)计算机右击管理打开服务器管理器点击角色选择添加角色,开始配置安装 ,单击“下一步”选择web(iis)在弹出的对话框中单击添加必须的功能,单击“…

上传图片配置控制大小_网站限制图片上传大小怎么办?巧用这个神器,瞬间突破限制...

现在很多网站都会限制图片的上传大小,怎么办呢?通常的做法是将图片压缩,那么问题又来了:压缩图片的同时,怎么保证图片的清晰度呢?这就要看你是怎么压缩图片大小的啦!接下来就向大家推荐一些不错…

域名服务器虚拟主机购买,如何注册网站域名和购买虚拟主机

如何注册网站1、注册网站会员进入2、如何注册网站域名首先,进到西部数码的域名注册页面,在搜索框中,输入想注册的域名名称,检测是否可以注册我们拿网站域名注册来测试下:wangzhanyumingzhuce,点击“查域名”…

工作四年,分享一些实用工具和网站

前言 今天来跟大家分享下常用的学习网站 & 各种小工具! 本文主要是针对那些学生党,相信有工作经验的大部分你应该都用过。 工欲善其事必先利其器,如果能帮到你,记得点赞、关注,谢谢! B 站 去哪里学…

Nginx网站服务 (web虚拟主机)

Nginx网站服务 实验材料 centos7一台Xshell连接,ip 192.168.100.102 vm1 win2008server一台,做dns解析 ip 192.168.100.66 vm1 安装及运行控制 1.编译安装Nginx 1)安装支持软件 [rootCentOS7-02 ~]# yum -y install pcre-devel zlib-dev…

Tomcat网站服务,和Nginx结合的群集

Tomcat网站服务 Tomcat,适用于JAVA语言的开放环境,而apache和Nginx适用于PHP环境的开发环境, Tomcat适用于访问量不是很大的生产环境下 实验材料 一台centos7 ip 192.168.100.102 Xshell连接 Tomcat软件包,我后面会提供百度云&…

apache优化:设置错误页面友好显示,mo_deflate网站压缩功能和mod_expires缓存功能

实验环境如下 一台centos7纯净,配置好yum源,IP为192.168.1.11,关闭防火墙 一.源码安装httpd服务 安装服务不是本次重点,这里就安装一下就可以 下面是apache的软件包,上传至服务器 链接:https://pan.baid…

概要设计和详细设计模板_网站模板不用设计 直接下载免费网站模板

今天给大家分享几个下载网站模板的网站,国外精品网站模板,设计风格大气,思路清晰,可下载,可学习别人的设计理念和制作方法,非常不错的几个网站,强烈建议收藏了。一.Awwwards精挑细选世界各地的最…

语种切换_完美的多语种网站插件WEGLOT

什么是 Weglot?Weglot在几分钟之内即可将您的网站变成多语种网站。Weglot只需在您的网站上添加一个语言切换器按钮,即可翻译内容而无需任何编码。如何安装Weglot?本文介绍以WordPress网站为例,介绍如何设置Weglot插件使您的网站具有多种语言…

华为云服务器几个网站,云服务器支持几个网站

云服务器支持几个网站 内容精选换一换香港节点和大陆节点的区别如下:香港节点购买域名后无需备案,可以直接在后台绑定域名并使用。大陆节点购买域名后需要先完成备案,才可以在后台绑定域名。香港节点支持绑定多个一级或者子域名,大…

如何用计算机建网站,如何在自己的电脑上建网站

我们要知道建一个网站,需要承载网站的容器,有了容器之后还要能让网站运作起来的环境;有了网站运作的环境之后,我们就需要一个能管理网站内容图片,用框架的形式展现出来的东西,也就是CMS;接下来我…

php模版前台加织梦后台,dedecms网站后台如何使用sql语句给dedecms模板添加自定义属性...

dedecms网站后台如何使用sql语句给dedecms模板添加自定义属性?织梦dedecms模板前台调用文章时经常会觉得属性不够用,我们可以自定义很多属性标签,这样前台调用时就可以做到非常精准,而添加也是非常简单的,下面是我网上…

html.partial mvc5,ASP.NET MVC5网站开发我的咨询列表及添加咨询(十二)

上次把咨询的架构搭好了,现在分两次来完成咨询:1、用户部分,2管理部分。这次实现用户部分,包含两个功能,查看我的咨询和进行咨询。一、菜单打开上次添加的ConsultationController控制器,添加Menu action&am…

网站服务器操作系统的用户数,服务器操作系统的用户数

服务器操作系统的用户数 内容精选换一换如果您需要使用毕昇编译器,则需要先在服务端安装毕昇编译器。毕昇编译器基于开源LLVM开发,并进行了优化和改进,同时将flang作为默认的Fortran语言前端编译器,是针对鲲鹏平台的高性能编译器。…

3dsmax子菜单无法选择_用这3招,将喜欢的网站固定在电脑的开始菜单和任务栏...

随着越来越多的生活围绕着Web浏览器中的网站和应用程序,大家都想希望将最重要的内容放在容易访问的地方,要想达到这个目的,一种最快捷的方法就是将最喜欢的网站固定在Windows电脑的桌面、任务栏或开始菜单上。要添加这些快捷方式并不是一件容…

ASP.NET 网站路径

使用网站中的资源时,通常必须指定资源的路径。例如,您可以使用 URL 路径引用页面中的图像文件或网站中其他位置处的页面的 URL。同样,Web 应用程序中的代码可以使用基于服务器的文件的物理文件路径对文件进行读写操作。ASP.NET 提供用于引用资…

Cisco官方网站悄然换标

10月2日,就在所有中国人欢度国庆佳节之际,可能是思科(cisco)历史上最大的市场活动悄然启动。就在今天,51cto.com记者发现,思科网站全面改版!其实,改版的内容不大,主要就是logo的改变。记者发现&…

服务器网站导航,网址导航的网站是如何把活动在自己服务器上的人导到其它服务器上去的?...

满意答案lmwyhpp2014.08.05采纳率:49% 等级:7已帮助:210人第一点:你的服务器的问题...1,什么是你的服务器系统,没有网站的运行环境,运行环境是非常重要的......那你会想看看各方面把书一合&a…

oracle 磁带备份,磁带备份 - Linux下实现自动备份Oracle数据库_数据库技术_Linux公社-Linux系统门户网站...

二、磁带备份tar—backup文件将用export命令导出的数据文件拷贝到磁带上。tar—backup文件内容:tar rvf /dev/rmt/0n/backup/本命令可将/backup目录下当天产生的文件备份到磁带上。本文件中,tar命令使用了三个参数,其中r选项表示向磁带上拷入…

圣斗士星矢ol外国服务器网站,国外粉丝狂热支持《圣斗士星矢ol》

二十五年的坚守,二十五年的期盼,圣斗士系列作品自面世以来,至今已经过去了二十五个年头。当年的小学生,如今已经步入社会,甚至已经成家立业,有了自己的孩子。时光如梭,你的书橱里、相册里&#…