侵权投诉

Flask + Vue的Web 框架 Flask 开发的词云生成应用

马哥Linux运维 2021-06-28 09:30 次阅读

前言这是一个前端用 Vue,后端用 Python 的 Web 框架 Flask 开发的词云生成应用,代码已上传到 flask-vue-word-cloud

项目地址:https://github.com/77Y/flask-vue-word-cloud

写这个小项目的起因是最近团队年终述职,有一些大佬的 PPT 上用了词云来展示自己团队一年的工作成果;还有大佬说不要守着自己的一亩三分地,在技术上拓宽视野可以帮助我们更好的成长

正好之前接触过 Python 和 R 生成词云,于是作为一个移动端开发者,想在本地跑一个生成词云的服务,就有了这个项目

目录结构先简单看一下项目的目录结构,backend 是 Flask 实现的服务端,frontend 是 Vue 实现的前端。

├── backend

│ ├── app

│ └── venv

└── frontend

├── README.md

├── build

├── config

├── dist

├── index.html

├── node_modules

├── package-lock.json

├── package.json

├── src

└── static

开发环境硬件:

macOS Mojave 10.14.6

软件:

nodejs v11.6.0

Python 3.7.4

请确保已经安装好了node js 环境,可参考nodejs官网进行安装。

前端开发1、安装vue-cli安装 vue-cliVue CLI 是一个基于 Vue.js 进行快速开发的完整系统。

$ npm install -g vue-cli

2、创建项目新建目录

$ mkdir word-cloud

$ cd word-cloud/

创建项目

$ vue init webpack frontend

执行完上面的命令后,会让你设置项目的基本信息,我的配置如下:

4985dc94-d79b-11eb-9e57-12bb97331649.jpg

然后等待安装一些基本的依赖,完成之后进入到 frontend 目录

$ cd frontend

$ npm run dev

执行完后会在控制台提示

Your application is running here: http://localhost:8080

说明我们现在已经可以跑起来了,可以访问一下http://localhost:8080

这时我们再看一下 frontend 的目录结构,已经默认帮我们生成了一些目录和代码。

├── README.md

├── build

├── config

├── index.html

├── node_modules

├── package-lock.json

├── package.json

├── src

└── static

3、安装element-uiElement 是一套为开发者、设计师和产品经理准备的基于 Vue 2.0 的桌面端组件库。

$ npm i element-ui -S

使用插件

在 vue-cli 帮我们生成的目录中/src/main.js中导入ElementUI

import ElementUI from‘element-ui’import‘element-ui/lib/theme-chalk/index.css’

最后使用

Vue.use(ElementUI)

4、安装axios因为是前后端分离的应用,所以还要安装请求的库axios。axios 是基于 promise 的 HTTP 客户端。

$ npm install --save axios

同样在/src/main.js导入axios

import axios from ‘axios’

注册axios

Vue.prototype.axios = axios

之后我们就可以使用 axios 发送请求了。

5、编写页面先找到App.vue,把我们不需要的 logo 删掉。

《template》《div id=“app”》《!-- 《img src=“。/assets/logo.png”》 --》《router-view/》《/div》《/template》

新建WordCloud.vue,这就是我们的主要页面。一个标题,一个输入框,两个按钮。

《template》《div》《h2》小词云《/h2》《div id=“word-text-area”》《el-input type=“textarea” :rows=“10” placeholder=“请输入内容” v-model=“textarea”》《/el-input》《div id=“word-img”》《el-image :src=“‘data:image/png;base64,’+pic” :fit=“fit”》《div slot=“error” class=“image-slot”》《i class=“el-icon-picture-outline”》《/i》《/div》《/el-image》《/div》《div id=“word-operation”》《el-row》《el-button type=“primary” @click=“onSubmit” round》生成词云《/el-button》《el-button type=“success” @click=“onDownload” round》下载图片《/el-button》《/el-row》《/div》《/div》《/div》《/template》

实现点击事件并发送请求

《script》

exportdefault {

name: ‘wordcloud’,

data() {

return {

textarea: ‘’,

pic: “”,

pageTitle: ‘Flask Vue Word Cloud’,

}

},

methods: {

onSubmit() {

var param = {

“word”: this.textarea

}

this.axios.post(“/word/cloud/generate”, param).then(

res =》 {

this.pic = res.data

console.log(res.data)

}

).catch(res =》 {

console.log(res.data.res)

})

},

onDownload() {

const imgUrl = ‘data:image/png;base64,’ + this.pic

const a = document.createElement(‘a’)

a.href = imgUrl

a.setAttribute(‘download’, ‘word-cloud’)

a.click()

}

}

}

《/script》

最后在src/router中找到index.js修改一下路由。

export default new Router({

routes: [{

path: ‘/’,

name: ‘index’,

component: WordCloud

}]

})

打包资源

$ npm run build

执行完成后会将资源打包到dist目录。

至此,前端的开发工作就完成了。

后端开发1、安装Python3先安装一下Python3,这里我使用 homebrew 安装。

brew install python3

由于我之前已经安装过了,执行完成之后出现警告,按照提示操作

Warning: python 3.7.4_1 is already installed, it‘s just not linked You can use brew link python to link this version.

Linking /usr/local/Cellar/python/3.7.4_1.。。 Error: Permission denied @ dir_s_mkdir - /usr/local/Frameworks

再次出现错误,没有权限

参考处理:stackoverflow.com/questions/2…

sudo chown -R $USER:admin /usr/local

再次执行

brew link python

Linking /usr/local/Cellar/python/3.7.4_1.。。 1 symlinks created

错误解决,执行 python3 可以正确显示版本号。

$ python3

Python 3.7.4 (default, Sep 7 2019, 1802)

[Clang 10.0.1 (clang-1001.0.46.4)] on darwin

Type “help”, “copyright”, “credits” or “license” for more information.

2、创建虚拟环境Python 虚拟环境可以为 Python 项目提供独立的运行环境,使得不同的应用使用不同的 Python 版本,我们使用虚拟环境开发一个 Python 应用。

新建后端目录

$ mkdir backend

$ cd backend/

创建虚拟环境

python3 -m venv venv

激活虚拟环境

source venv/bin/activate

关闭虚拟环境的命令如下

deactivate

3、安装 flask关于 flask 我们在文章最开始已经介绍过。

pip install flask

如果没有报错,那就就安装成果了。

4、安装词云生成库wordcloud 是 python 优秀的词云生成库。词云以词语为基本单位更加直观的展示文本。

pip install wordcloud

4、编写代码关于 flask 代码部分参考了The Flask Mega-Tutorial教程,看完第一章就可以写出应用了。这里我解释一下关键代码。

在__init__.py中修改python默认html和静态资源目录,这个资源就是我们上面在前端开发中通过npm run build生成的资源目录。

app = Flask(__name__,

template_folder=“。。/。。/frontend/dist”,

static_folder=“。。/。。/frontend/dist/static”)

修改完成之后再启动 Flask,访问的就是 vue 的页面了。

routes.py 里面的代码,就是主页面和生成词云的接口

# 真正调用词云库生成图片def get_word_cloud(text):# font = “。/SimHei.ttf”# pil_img = WordCloud(width=500, height=500, font_path=font).generate(text=text).to_image()

pil_img = WordCloud(width=800, height=300, background_color=“white”).generate(text=text).to_image()

img = io.BytesIO()

pil_img.save(img, “PNG”)

img.seek(0)

img_base64 = base64.b64encode(img.getvalue()).decode()

return img_base64

# 主页面@app.route(’/‘)@app.route(’/index‘)def index():return render_template(’index.html‘)

# 生成词云图片接口,以base64格式返回@app.route(’/word/cloud/generate‘, methods=[“POST”])def cloud():

text = request.json.get(“word”)

res = get_word_cloud(text)

return res

最后执行flask run就可以跑起来了

当然这是用半天时间跑起来的一个简陋的应用,但是具备了基本的前后端分离应用的功能

编辑:jq

原文标题:实战:Flask + Vue 生成漂亮的词云

文章出处:【微信号:magedu-Linux,微信公众号:马哥Linux运维】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
分享:

评论

相关推荐

关于Python18个你不知道的高效编程技巧

初识Python语言,觉得python满足了我上学时候对编程语言的所有要求。python语言的高效编....
的头像 马哥Linux运维 发表于 10-15 11:23 197次 阅读

用Python实现3D地图教程

前言 本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题....
的头像 马哥Linux运维 发表于 10-13 10:09 162次 阅读
用Python实现3D地图教程

关于Python对交通路口的红绿灯进行颜色检测

转自 |   Python联盟 1.视频读取 首先把视频读取进来,因为我测试的视频是4k的所以我用r....
的头像 新机器视觉 发表于 10-13 09:32 228次 阅读
关于Python对交通路口的红绿灯进行颜色检测

如何制作数据可视化大屏

经常有小伙伴问,如何制作数据可视化大屏? 今天将手把手带你爬取奥运会相关信息,并利用 可视化大屏 为....
的头像 Linux爱好者 发表于 10-12 16:31 150次 阅读
如何制作数据可视化大屏

什么是MicroPython 它能做什么有什么局限

随着Python成为主流的编程语言,MicroPython在嵌入式系统领域也越来越热门起来,尤其是大....
的头像 电子森林 发表于 10-12 11:44 223次 阅读

10具有挑战性的Python项目创意

你知道 Python 是被称为 全能编程语言 的吗?是的,它确实是,虽然不应该在每个项目中都使用它。....
的头像 Android编程精选 发表于 10-12 10:43 256次 阅读

如何把Python和Excel两大数据工具进行集成

  这次我们会介绍如何使用xlwings将Python和Excel两大数据工具进行集成,更便捷地处理....
的头像 数据分析与开发 发表于 10-12 09:41 153次 阅读
如何把Python和Excel两大数据工具进行集成

如何在Colab中使用SQL

如今,编码测试在数据科学面试过程中几乎是标准的。 作为一名数据科学招聘经理,我发现一个20-30分钟....
的头像 智能感知与物联网技术研究所 发表于 10-12 09:39 168次 阅读
如何在Colab中使用SQL

Python开发中Pycharm的实用小技巧

  Pycharm作为Python开发最常用的IDE之一,不仅兼容性好,而且功能也相当丰富,比如调试....
的头像 马哥Linux运维 发表于 10-12 09:36 140次 阅读

Python的时间处理模块中处理日期与时间的全面总结

Python的时间处理模块在日常的使用中用的较多,但是使用的时候基本上都是要查资料,还是有些麻烦的,....
的头像 马哥Linux运维 发表于 10-12 09:24 188次 阅读
Python的时间处理模块中处理日期与时间的全面总结

Python中最常用的几种线程锁你会用吗

前言本文将继续围绕 threading 模块讲解,基本上是纯理论偏多。 对于日常开发者来讲很少会使用....
的头像 马哥Linux运维 发表于 10-11 16:07 157次 阅读

优秀的 Verilog/FPGA开源项目介绍(一)

优秀的 Verilog/FPGA开源项目介绍(一)-PCIe通信 今天开始会陆续介绍一些优秀的开源项....
的头像 OpenFPGA 发表于 10-11 15:31 253次 阅读
优秀的 Verilog/FPGA开源项目介绍(一)

Python入门知识汇总

Python代码生成EXE文件的方法是什么?
发表于 10-11 06:00 0次 阅读

智慧高校防控墙的作用

2021年9月,兰和联网智能门锁中标永强中学,使用联网指纹门锁对永强中学办公室、实验室门锁进行物联网....
发表于 10-09 14:31 23次 阅读

Python版test1实战说明

上一篇文章已经带着大家安装 DeepStream 的 Python 开发环境,并且执行最简单的 de....
的头像 NVIDIA英伟达企业解决方案 发表于 10-09 14:28 153次 阅读

教你们如何用 Python 快速制作海报级地图附代码

 1 简介 基于 Python 中诸如 matplotlib 等功能丰富、自由度极高的绘图库,我们可....
的头像 Linux爱好者 发表于 10-09 11:36 262次 阅读

什么是Python中的流程控制?

什么是Python中的流程控制?
发表于 10-09 07:24 0次 阅读

Nginx软件location目录匹配详解

Nginx作为一个轻量级的,高性能的web服务软件,因其占有内存少,并发能力强的特点,而广受欢迎和使....
的头像 马哥Linux运维 发表于 10-08 17:10 256次 阅读

Python定时任务的实现方式

在日常工作中,我们常常会用到需要周期性执行的任务,一种方式是采用 Linux 系统自带的 crond....
的头像 马哥Linux运维 发表于 10-08 15:20 1233次 阅读

如何在没有正式培训的情况下学习编程

从编程小白到完成第一款 Web 应用,我只用了 90 天,而且大多数时间都是在苦恼自己是否能成为开发....
的头像 程序人生 发表于 10-08 10:22 159次 阅读

Python的矩阵传播机制

一、Python的矩阵传播机制(Broadcasting) 我们知道在深度学习中经常要操作各种矩阵(....
的头像 Linux爱好者 发表于 09-30 16:53 300次 阅读

Python提供了几个级别访问的网络服务呢

Python提供了几个级别访问的网络服务呢?
发表于 09-30 08:09 0次 阅读

如何用python实现贪吃蛇游戏

贪吃蛇 具体实现部分,大致分为三个模块来介绍:游戏初始化、游戏运行(蛇移动、吃掉食物)、游戏结束 1....
的头像 马哥Linux运维 发表于 09-29 18:05 460次 阅读
如何用python实现贪吃蛇游戏

python导出excel格式的oracle数据报表讲解

python导出excel格式的oracle数据报表讲解(通信电源技术期刊官网)-该文档为pytho....
发表于 09-28 13:10 24次 阅读
python导出excel格式的oracle数据报表讲解

在鸿蒙上使用Python进行物联网编程

在上一篇帖子《使用 Python 开发鸿蒙设备程序(1-GPIO 外设控制)》中,已经成功的使用 P....
的头像 HarmonyOS技术社区 发表于 09-28 09:55 459次 阅读
在鸿蒙上使用Python进行物联网编程

怎样去实现一种基于Python的OPC UA编程

怎样去实现一种基于Python的OPC UA编程? 如何通过FreeOpcUa创建自己的地址空间? ...
发表于 09-28 09:35 0次 阅读

用Python完成鸿蒙开发板外设控制

话说很久以前,我将 MicroPython 的解释器给“挖”了出来,然后做了适配,成功运行于鸿蒙设备....
的头像 HarmonyOS技术社区 发表于 09-28 09:22 327次 阅读

请问如何选择合适机械的伺服电机?

请问如何选择合适机械的伺服电机?
发表于 09-27 07:57 0次 阅读

pandas筛选数据的8个小技巧

  日常用 Python 做数据分析最常用到的就是查询筛选了,按各种条件、各种维度以及组合挑出我们想....
的头像 数据分析与开发 发表于 09-26 11:04 1096次 阅读
pandas筛选数据的8个小技巧

Python连接Oracle数据库

Python连接Oracle数据库(深圳市核达中远通电源技术股份有限公司招聘)-该文档为Python....
发表于 09-24 17:20 27次 阅读
Python连接Oracle数据库

深刻理解Python中的元类(metaclass)

深刻理解Python中的元类(metaclass)(大工20春电源技术在线作业2)-该文档为深刻理解....
发表于 09-24 16:12 22次 阅读
深刻理解Python中的元类(metaclass)

分享Python 流畅的Python

目录: 第一部分 序幕 第 1 章 Python 数据模型 1.1 一摞Python风格的纸牌 1.2 如何使用特殊方法 1.2.1 模拟数值...
发表于 09-23 20:39 707次 阅读
分享Python 流畅的Python

Python后端项目的协程是什么

最近公司 Python 后端项目进行重构,整个后端逻辑基本都变更为采用“异步”协程的方式实现。看着满....
的头像 Linux爱好者 发表于 09-23 14:38 271次 阅读

Python中三个json组件的安装方式

在 Python 使用用 json.dumps(data) 时突然发现特别慢,data 本身不大,但....
的头像 马哥Linux运维 发表于 09-23 14:35 280次 阅读
Python中三个json组件的安装方式

IP知识百科之URL过滤

URL过滤 URL过滤是一种针对用户的URL请求进行上网控制的技术,通过允许或禁止用户访问某些网页资....
的头像 华为产品资料 发表于 09-23 11:08 241次 阅读

魔方网表,使用无代码软件赋能团队

授之以鱼不如授之以渔。教会别人如何钓鱼,他们将获得吃不完的鱼。帮别人自定义钓具,针对性的自定义鱼竿、....
的头像 话说科技 发表于 09-23 09:56 275次 阅读
魔方网表,使用无代码软件赋能团队

如何利用Python语言来控制电机

如何利用Python语言来控制电机? 如何利用L298N驱动板来控制电机? ...
发表于 09-22 08:32 0次 阅读

初学者如何去选择一种编程语言

Python是什么?JavaScript有何优点? 对于初学者什么是最好的编程语言?...
发表于 09-22 06:26 0次 阅读

什么是工业物联网架构 构建工业物联网架构需要投资哪4种技术

工业物联网架构由交互层定义,其中包括以下层 1、设备层 架构的底层是设备层。设备可以是各种类型,作为....
的头像 Les 发表于 09-19 10:04 256次 阅读

在Anaconda中安装python包seaborn

在Anaconda中安装python包seaborn(现代电源技术题库)-在Anaconda中安装p....
发表于 09-18 15:01 29次 阅读
在Anaconda中安装python包seaborn

Python科学计算利器Anaconda

Python科学计算利器Anaconda(开关电源技术毕业设计)-Python科学计算利器Anaco....
发表于 09-18 14:26 34次 阅读
Python科学计算利器Anaconda

Python主要有哪几大应用领域

Python是什么?Python的特点是什么? Python有哪些应用领域? ...
发表于 09-18 06:19 0次 阅读

Web-App应用前端开发技术交流-lastest.pdfx

Web-App应用前端开发技术交流-lastest.pdfx(电源技术与应用期刊)-文档为Web-A....
发表于 09-17 15:47 28次 阅读
Web-App应用前端开发技术交流-lastest.pdfx

如何使用工业树莓派做ython的PWM控制

虹科工业树莓派 准备工作 硬件: 虹科工业树莓派1台 DIO模块1个 Windows系统电脑1台 L....
的头像 广州虹科电子科技有限公司 发表于 09-16 10:57 1944次 阅读
如何使用工业树莓派做ython的PWM控制

Python解释器的基本结构

简介Byterun是一个用Python实现的Python解释器。通过对Byterun的研究,我惊奇地发现Python解释器的基本结构很容易符合500行...
发表于 09-16 06:42 0次 阅读

基于Python-casacore的射电测量集文件生成方法

基于Python-casacore的射电测量集文件生成方法(开关电源技术试卷)-该文档为基于Pyth....
发表于 09-15 13:11 38次 阅读
基于Python-casacore的射电测量集文件生成方法

符合IEPE标准的CbM机器学习赋能平台

CbM需要捕获全带宽数据,以确保时域和频域中的所有谐波、混叠及其他机械相互作用都得到考虑。这种数据收....
发表于 09-13 12:45 3922次 阅读
符合IEPE标准的CbM机器学习赋能平台

如何通过Python脚本实现WIFI密码的暴力破解

前言 本文将记录学习下如何通过 Python 脚本实现 WIFI 密码的暴力破解,从而实现免费蹭网。....
的头像 马哥Linux运维 发表于 09-10 17:09 703次 阅读
如何通过Python脚本实现WIFI密码的暴力破解

IP知识百科之Web过滤

Web过滤 Web过滤是一种控制用户Web访问的技术,包括访问哪些网站、查看哪些内容、下载哪些文件等....
的头像 华为产品资料 发表于 09-06 09:33 208次 阅读

如何在环境安装使用Python操作word

作者丨超级大洋葱806 https://tangxing.blog.csdn.net/article....
的头像 Android编程精选 发表于 09-05 15:13 523次 阅读
如何在环境安装使用Python操作word

如何利用Python抓取用户发的话题

大多数APP里面返回的是json格式数据,或者一堆加密过的数据 。这里以超级课程表APP为例,抓取超....
的头像 马哥Linux运维 发表于 09-05 09:37 292次 阅读
如何利用Python抓取用户发的话题

分享一个最新的的Python对象序列化方式

许多Python标准库都有一些未被赏识的精华。其中之一是允许简单优雅的基于参数类型的函数分发。这一特....
的头像 马哥Linux运维 发表于 09-01 15:19 1014次 阅读
分享一个最新的的Python对象序列化方式

从零开始搭建Kubernetes集群步骤

虽然网上有大量从零搭建 K8S 的文章,但大都针对老版本,若直接照搬去安装最新的 1.20 版本会遇....
的头像 Linux爱好者 发表于 09-01 14:33 894次 阅读
从零开始搭建Kubernetes集群步骤

jsonpath库中的常规功能介绍

1 简介 在日常使用Python的过程中,我们经常会与json格式的数据打交道,尤其是那种嵌套结构复....
的头像 Linux爱好者 发表于 09-01 14:11 267次 阅读
jsonpath库中的常规功能介绍

Python 代码加速运行的的小技巧

Python 是一种脚本语言,相比 C/C++ 这样的编译语言,在效率和性能方面存在一些不足。但是,....
的头像 Android编程精选 发表于 09-01 11:28 350次 阅读

简述DNS服务的作用及记录类型

域名系统英文全称为:Domain Name System 缩写为DNS。是一种可以将域名和IP地址相....
的头像 Les 发表于 08-31 14:56 403次 阅读

如何过滤掉MySQL大批量插入的重复数据

线上库有6个表存在重复数据,其中2个表比较大,一个96万+、一个30万+,因为之前处理过相同的问题,....
的头像 阿铭linux 发表于 08-27 11:00 367次 阅读

基于Rust基础上如何去编写一个Linux内核模块

编者按:近些年来 Rust 语言由于其内存安全性和性能等优势得到了很多关注,尤其是 Linux 内核....
的头像 开关电源芯片 发表于 08-27 09:59 1305次 阅读

女友让翻译化妆品标签 看大佬如何用Python轻松解决

最近小编遇到一个生存问题,女朋友让我给她翻译英文化妆品标签。美其名曰:“程序猿每天英语开发,英文一定....
的头像 阿铭linux 发表于 08-25 17:27 336次 阅读

利用Python和PyTorch处理面向对象的数据集

本篇是利用 Python 和 PyTorch 处理面向对象的数据集系列博客的第 2 篇。 如需阅读第....
的头像 FPGA开发圈 发表于 08-25 15:30 1427次 阅读