基于Flask的岗位就业可视化系统(四)

news/2024/5/5 11:39:23

前言

  • 本项目综合了基本数据分析的流程,包括数据采集(爬虫)、数据清洗、数据存储、数据前后端可视化等

  • 推荐阅读顺序为:数据采集——>数据清洗——>数据库存储——>基于Flask的前后端交互,有问题的话可以留言,有时间我会解疑~

  • 感谢阅读、点赞和关注

开发环境

  • 系统:Window 10 家庭中文版。
  • 语言:Python(3.9)、MySQL。
  • Python所需的库:pymysql、pandas、numpy、time、datetime、requests、etree、jieba、re、json、decimal、flask(没有的话pip安装一下就好)。
  • 编辑器:jupyter notebook、Pycharm、SQLyog。
    (如果下面代码在jupyter中运行不完全,建议直接使用Pycharm中运行)

文件说明

在这里插入图片描述
本项目下面有四个.ipynb的文件,下面分别阐述各个文件所对应的功能:(有py版本 可后台留言)

  • 数据采集:分别从前程无忧网站和猎聘网上以关键词数据挖掘爬取相关数据。其中,前程无忧上爬取了270页,有超过1万多条数据;而猎聘网上只爬取了400多条数据,主要为岗位要求文本数据,最后将爬取到的数据全部储存到csv文件中。

  • 数据清洗:对爬取到的数据进行清洗,包括去重去缺失值、变量重编码、特征字段创造、文本分词等。

  • 数据库存储:将清洗后的数据全部储存到MySQL中,其中对文本数据使用jieba.analyse下的extract_tags来获取文本中的关键词和权重大小,方便绘制词云。

  • 基于Flask的前后端交互:使用Python一个小型轻量的Flask框架来进行Web可视化系统的搭建,在static中有css和js文件,js中大多为百度开源的ECharts,再通过自定义controller.js来使用ajax调用flask已设定好的路由,将数据异步刷新到templates下的main.html中。

技术栈

  • Python爬虫:(requests和xpath
  • 数据清洗:详细了解项目中数据预处理的步骤,包括去重去缺失值、变量重编码、特征字段创造和文本数据预处理 (pandas、numpy
  • 数据库知识:select、insert等操作,(增删查改&pymysql) 。
  • 前后端知识:(HTML、JQuery、JavaScript、Ajax)。
  • Flask知识:一个轻量级的Web框架,利用Python实现前后端交互。(Flask

四、基于Flask的前后端交互

定义函数来获取数据库中的数据

导入模块

from flask import Flask as _Flask, jsonify, render_template
from flask.json import JSONEncoder as _JSONEncoder
import pandas as pd
import numpy as np
import pymysql, decimal, time

将清洗后的数据存储到sql中

def get_time():time_str = time.strftime("%Y{}%m{}%d{} %X")return time_str.format("年", "月", "日")# 连接数据库
def get_con():con = pymysql.connect(host='localhost', user='用户名', password='密码', database='数据库名', charset='utf8')cursor = con.cursor()return con, cursor# 关闭数据库
def con_close(con, cursor):if cursor:cursor.close()if con:con.close()# 定义函数来执行单独一条sql语句
def query(sql):con, cursor = get_con()cursor.execute(sql)res = cursor.fetchall()con_close(con, cursor)return res# 定义函数
def get_c1_data():...def get_c2_data():...def get_l1_data():...def get_l2_data():...def get_r1_data():...def get_r2_data():......

使用flask框架进行网页的搭建

网页搭建思路:

首先,构造获取数据库特定数据的函数;

接着,在flask中设置相关路由,调用该函数,并return获取的数据;

然后,在main.html页面导入设定好的javascript脚本,脚本中使用ajax来接收路由的数据;

最后便将数据通过jquery来映射到html页面中,总体上实现了前后端交互的功能。

class JSONEncoder(_JSONEncoder):def default(self, o):if isinstance(o, decimal.Decimal):return float(o)super(_JSONEncoder, self).default(o)class Flask(_Flask):json_encoder = JSONEncoderapp = Flask(__name__)# 路由解析
@app.route('/')
def index():return render_template("main.html")# 获取系统当前时间
@app.route('/time')
def get_time1():return get_time()# 对数据库中的数据进行计数、薪资取平均值、省份和学历取众数
@app.route('/c1')
def get_c1_data1():data = get_c1_data()return jsonify({"employ": data[0], "avg_salary": data[1], "province": data[2], "edu": data[3]})# 对省份进行分组,之后统计其个数
@app.route('/c2')
def get_c2_data1():res = []for tup in get_c2_data():res.append({"name": tup[0], "value": int(tup[1])})return jsonify({"data": res})# 统计每个学历下公司数量和平均薪资(上下坐标折线图)
@app.route('/l1')
def get_l1_data1():data = get_l1_data()edu, sum_company, avg_salary = [], [], []for s in data:edu.append(s[0])sum_company.append(int(s[1]))avg_salary.append(float(s[2]))return jsonify({"edu": edu, "sum_company": sum_company, "avg_salary": avg_salary})# 统计不同学历下公司所招人数和平均经验(折线混柱图)
@app.route('/l2')
def get_l2_data1():data = get_l2_data()edu, num, exp = [], [], []for s in data:edu.append(s[0])num.append(float(s[1]))exp.append(float(s[2]))return jsonify({'edu': edu, 'num': num, 'exp': exp})# 统计不同类型公司所占的数量(饼图)
@app.route('/r1')
def get_r1_data1():res = []for tup in get_r1_data():res.append({"name": tup[0], "value": int(tup[1])})return jsonify({"data": res})# 可视化词云
@app.route('/r2')
def get_r2_data1():d = []text, weight = get_r2_data()for i in range(len(text)):d.append({'name': text[i], 'value': weight[i]})return jsonify({"kws": d})if __name__ == '__main__':app.run()

未加数据库效果图

在这里插入图片描述

添加加数据库效果图

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


http://www.mrgr.cn/p/28573486

相关文章

实验 1--SQL Server2008数据库开发环境

文章目录 实验 1--SQL Server2008数据库开发环境2.4.1 实验目的2.4.2 实验准备2.4.3 实验内容1.利用 SSMS 访问系统自带的Report Server 数据库。2.熟悉了解 SMSS对象资源管理器树形菜单相关选择项的功能。(1)右键单击数据库Report Server,查看并使用相关功能;(2)选…

详解数仓的向量化执行引擎

本文介绍了GaussDB(DWS)向量化执行引擎,对其框架、原理、各算子概况、性能提升等做了详细阐述。本文分享自华为云社区《GaussDB(DWS)向量化执行引擎详解》,作者: yd_212508532。 前言适用版本:【基线功能】传统的行执行引擎大多采用一次一元组的执行模式,这样在执行过程中…

安全机密管理:Asp.Net Core中的本地敏感数据保护技巧

前言 在我们开发过程中基本上不可或缺的用到一些敏感机密数据,比如SQL服务器的连接串或者是OAuth2的Secret等,这些敏感数据在代码中是不太安全的,我们不应该在源代码中存储密码和其他的敏感数据,一种推荐的方式是通过Asp.Net Core的机密管理器。 机密管理器在 ASP.NET Core…

【机器学习算法】决策树和随机森林在计算机视觉中的应用

前言 决策树和随机森林在计算机视觉中有着广泛的应用。决策树作为一种简单而强大的分类模型,可以用于图像分类、目标检测、特征提取等任务。它能够根据图像的特征逐层进行判断和分类,从而实现对图像数据的智能分析和理解。随机森林作为一种集成学习方法&…

❤️新版Linux零基础快速入门到精通——第一部分❤️

❤️新版Linux零基础快速入门到精通——第一部分❤️ 非科班的我!Ta!还是来了~~~1. 来认识一下Linux吧!1.1 操作系统概述1.1.1 操作系统概述1.1.2 操作系统的发展史1.1.2.1 Unix1.1.2.2 Minix1.1.2.3 Linux 1.1.3 操作系统的发展 1.2 Linux初识1.2.1 Lin…

android脱壳:一种使用native进行抽取壳脱壳的方法,native版本的frida-fart

前言 写rxposed的时候,搞了很多模块,其中有一个远程调用脱壳的,但是当时使用的是rmi远程调用,因为一些问题无法使用,可能是对抗问题,也有可能是技术问题,所以我又换了一种远程调用方式。 概述…

视频批量采集下载软件|短视频爬虫提取工具

一款短视频批量下载工具,为用户提供了便捷高效的视频获取解决方案。与市面上其他工具不同的是,工具不仅支持单个视频链接提取,更可通过关键词进行批量搜索,满足用户多样化的需求,实现视频下载的一键快捷操作。 操作简单…

Flink CDC详解

文章目录 Flink CDC一 CDC简介1.1 CDC定义1.2 CDC应用场景1.3 CDC实现机制1.4 开源CDC工具对比 二 Flink CDC简介2.1 Flink CDC介绍2.2 Flink CDC Connector(连接器)2.3 Flink CDC && Flink版本2.4 Flink CDC特点 三 Flink CDC发展3.1 发展历程3.2 背景Dynamic Table &…

七天.NET 8操作SQLite入门到实战 - (2)第七天Blazor班级管理页面编写和接口对接

前言 上一章节我们引入BootstrapBlazor UI组件完成了EasySQLite后台界面的基本架子的搭建,本章节的主要内容是Blazor班级管理页面编写和接口对接。 七天.NET 8 操作 SQLite 入门到实战详细教程第一天 SQLite 简介 第二天 在 Windows 上配置 SQLite 环境 第三天 SQLite 快速入门…

BOS协同开发平台打开方案或者刷新列表时异常报错

在应用开发方案更新SVN也偶发性出现无法访问金蝶SVN路径原因: 有线网络适配器配置的DNS域名是8.8.8.8 解放方案:修改有线网络适配器DNS域名,如下截图

面试遇到算法题:实现LRU缓存

请你设计并实现一个满足 LRU (最近最少使用) 缓存约束的数据结构。 这是一道大厂面试高频出现的算法题,难度为⭐️⭐️⭐️,属于中等,老铁们来一起看看这个题该怎么解? 1. 原题再现 没有废话,翠花,上酸菜&…

数据结构系列-堆排序当中的T-TOK问题

🌈个人主页:羽晨同学 💫个人格言:“成为自己未来的主人~” 之前我们讲到了堆排序的实现逻辑,那么接下来我们重点关注的就是其中的T-TOK问题 T-TOK说简单点,就是说,假如有10000个数据(随机的…

揭开ChatGPT面纱(3):使用OpenAI进行文本情感分析(embeddings接口)

文章目录 一、embeddings接口解析二、代码实现1.数据集dataset.csv2.代码3.运行结果 openai版本1.6.1 本系列博客源码仓库:gitlab,本博客对应文件夹03 在这一篇博客中我将使用OpenAI的embeddings接口判断21条服装评价是否是好评。 首先来看实现思路&am…

golang学习笔记(defer基础知识)

什么是defer defer语句用于golang程序中延迟函数的调用, 每次defer都会把一个函数压入栈中, 函数返回前再把延迟的函数取出并执行。 为了方便描述, 我们把创建defer的函数称为主函数, defer语句后面的函数称为延迟函数。延迟函数…

重回铁王座!时隔5年!Quill 2.0 终于发布啦

2024年4月17日,Quill 2.0 正式发布🎉期待了5年,我怀着激动的心情立马升级体验了下,本文我就带大家一起看看 Quill 2.0 有哪些重大更新。你好,我是 Kagol。 2024年4月17日,Quill 2.0 正式发布🎉 最后一个 1.0 版本 1.3.7 发布于 2019年9月9日,时隔4年零7个月。 富文本…

Adobe Illustrator 2024 v28.4.1 (macOS, Windows) - 矢量绘图

Adobe Illustrator 2024 v28.4.1 (macOS, Windows) - 矢量绘图 Acrobat、After Effects、Animate、Audition、Bridge、Character Animator、Dimension、Dreamweaver、Illustrator、InCopy、InDesign、Lightroom Classic、Media Encoder、Photoshop、Premiere Pro、Adobe XD 请…

Git之merge与rebase操作命令及问题

背景:之前一直使用的是 merge 来实现两分支的合并代码操作,遇到冲突,解决完冲突从头 add 、commit 、push 再次操作一遍提交操作就没啥事了。但后来的大型项目是 多人协同开发,前端带头人提议倡导使用 rebase 来合并分支&#xff…

推荐|免费ssl通配符证书https通配符证书平台,性价比超高的证书

在网络安全日益重要的今天,选择一个可靠的SSL证书平台至关重要。Spug证书平台以其高性价比、专业服务、便捷操作,以及独有的无限免费通配符证书申请功能,成为了您的理想选择。 网址:ssl.spug.cc 为什么选择Spug证书平台?免费通配符:支持免费申请通配符证书,为您的多子站…

Pytorch手撸Attention

Pytorch手撸Attention 注释写的很详细了,对照着公式比较下更好理解,可以参考一下知乎的文章 注意力机制 import torch import torch.nn as nn import torch.nn.functional as Fclass SelfAttention(nn.Module):def __init__(self, embed_size):super(S…

架构师核心-云计算云上实战(云计算基础、云服务器ECS、云设施实战、云上高并发Web架构)

文章目录 云计算基础1. 概念1. 云平台优势2. 公有云3. 私有云4. IaaS、PaaS、SaaS 2. 云设施1. 概览2. 核心组件 云服务器ECS1. ECS介绍1. 简介2. 组件3. 概念4. 图解5. 规格6. 场景 2. ECS服务器开通1. 开通服务器2. 连接服务器 3. 云部署准备1. 1Panel介绍2. 安装1Panel3.安全…