毕业设计:python招聘数据分析可视化系统+爬虫+7种薪资预测算法+Flask框架(建议收藏)

199 篇文章 10 订阅
191 篇文章 89 订阅

[毕业设计]2023-2024年最新最全计算机专业毕设选题推荐汇总

2023年 - 2024年 最新计算机毕业设计 本科 选题大全 汇总

感兴趣的可以先收藏起来,还有大家在毕设选题,项目以及论文编写等相关问题都可以给我留言咨询,希望帮助更多的人 。

1、项目介绍

Flask框架 招聘数据爬虫可视化系统 薪资预测(7种预测模型)
爬虫 拉钩网站 MySQL数据库 echarts
本程序使用python编写,后端采用Flask框架,
采用Layui前端框架,数据库采用mysql设计,echarts进行数据可视化显示。

2、项目界面

(1)企业情况分析
在这里插入图片描述

(2)学历情况分析
在这里插入图片描述

(3)薪资情况分析

在这里插入图片描述

(4)招聘数据概况
在这里插入图片描述

(5)薪资预测

在这里插入图片描述

3、项目说明

本程序使用python编写,基于flask的轻量级web应用框架,数据库采用mysql设计,echarts进行数据可视化显示。数据爬取使用经典的requests、urllib包进行数据爬取,爬取的网站为拉勾网,拉勾网有较强的反爬机制,采用cookie的形式进行封装,再进行数据获取。获取的数据解析后存储到mysql数据库,然后使用pymysql包连接mysql将查询的数据展示到页面。
网页提供了如下功能:
1.首页
2.数据概况:可以通过学历和职位来选择查看满足条件的招聘信息,可以选择学历要求、输入职位来搜索更加精准的职位。
3.可视化:
薪资情况:通过选择学历来查看各种岗位对于不同学历的薪资可视化情况,以柱状图、饼图的形式来展示各种职位的薪资分布、所占比例。
企业情况:通过选择职位可以来查看这个职位的主要招聘城市,还可以大概查看一下这个职位的公司规模情况,以及每个职位在各个主要城市所占的比例饼图。
福利情况:通过数据可视化速览公司福利,基于词云进行构造,可以清晰看出所有公司给出的最核心的福利待遇。
学历情况:可以查看各个职位对学历以及工作经验的要求,以漏斗图、矩形树的形式进行可视化展示。
4.智能化
薪资预测:可以通过选择职位学历公司规模城市工作经验,以及选择不同的模型来,预测最低薪资。主要模型有:决策树、朴素贝叶斯、逻辑回归、神经网络、随机森林、支持向量机等。

4、部分代码


import jieba
import jieba.analyse
import numpy as np
from flask import Flask, request, jsonify,render_template
import pymysql
from flask_cors import *
import pickle

app = Flask(import_name=__name__, template_folder='UI_Pages',static_folder='UI_Pages/assets')
app.config['JSON_AS_ASCII'] = False
CORS(app, supports_credentials=True)

from flask.json import JSONEncoder as _JSONEncoder
@app.route('/')
def index():
    return render_template('page/template/login.html')
@app.route('/dashboard')
def dashboard():
    return render_template('index.html')
@app.route('/console')
def console():
    return render_template('page/console/console.html')


class JSONEncoder(_JSONEncoder):
    def default(self, o):
        import decimal
        if isinstance(o, decimal.Decimal):
            return float(o)
        super(JSONEncoder, self).default(o)
app.json_encoder = JSONEncoder

@app.route('/xueli',methods=['GET'])
def xueli():
    #打开数据库连接
    conn = pymysql.connect(host='localhost', user='root', password='123456', port=3306, db='zhaopin',
                           charset='utf8mb4')

    #创建一个游标对象cursor
    cursor = conn.cursor()
    #执行sql语句
    cursor.execute("SELECT DISTINCT(education) from demo")
    #获取所有记录列表
    result = cursor.fetchall()
    education = []
    education_data = []
    color_list = ['#459AF0', '#38C3B0', '#86CA5A', '#BFD44F', '	#90EE90']
    #获取到学历的五种情况:不限、大专、本科、硕士、博士
    for field in result:
        education.append(field[0])
    #获取到每种学历对应的个数
    for i in range(len(education)):
        cursor.execute("SELECT count(*) from demo where education = '" + education[i] + "'")
        count = cursor.fetchall()
        education_data.append({'value': count[0][0], 'itemStyle': {'color': color_list[i]}})
    cursor.execute("SELECT DISTINCT(workYear) from demo")
    result = cursor.fetchall()
    workYear = []
    workYear_data = []
    #获取到的几种工作经验
    for field in result:
        workYear.append(field[0])
    #获取到每种工作经验对应的个数
    for i in workYear:
        cursor.execute("SELECT count(*) from demo where workYear = '" + i + "'")
        count = cursor.fetchall()
        workYear_data.append({'value': count[0][0], 'name': i})
    cursor.close()
    return jsonify({"education":education, "education_data":education_data, "workYear_data":workYear_data})

@app.route('/xueli_first',methods=['GET'])
def xueli_first():
    #打开数据库连接
    conn = pymysql.connect(host='localhost', user='root', password='123456', port=3306, db='zhaopin',
                           charset='utf8mb4')
    #创建一个游标对象cursor
    cursor = conn.cursor()
    #执行sql语句
    cursor.execute("SELECT DISTINCT(education) from demo where city in ('北京', '上海', '广州', '深圳');")
    #获取所有记录列表
    result = cursor.fetchall()
    education = []
    education_data = []
    color_list = ['#459AF0', '#38C3B0', '#86CA5A', '#BFD44F', '	#90EE90']
    #获取到学历的五种情况:不限、大专、本科、硕士、博士
    for field in result:
        education.append(field[0])
    #获取到每种学历对应的个数
    for i in range(len(education)):
        cursor.execute("SELECT count(*) from demo where education = '" + education[i] + "' and city in ('北京', '上海', '广州', '深圳');")
        count = cursor.fetchall()
        education_data.append({'value': count[0][0], 'itemStyle': {'color': color_list[i]}})

    cursor.execute("SELECT DISTINCT(workYear) from demo where city in ('北京', '上海', '广州', '深圳');")
    result = cursor.fetchall()
    workYear = []
    workYear_data = []
    #获取到的几种工作经验
    for field in result:
        workYear.append(field[0])
    #获取到每种工作经验对应的个数
    for i in workYear:
        cursor.execute("SELECT count(*) from demo where workYear = '" + i + "' and city in ('北京', '上海', '广州', '深圳');")
        count = cursor.fetchall()
        workYear_data.append({'value': count[0][0], 'name': i})
    cursor.close()
    return jsonify({"education":education, "education_data":education_data, "workYear_data":workYear_data})

@app.route('/xueli_nfirst',methods=['GET'])
def xueli_nfirst():
    #打开数据库连接
    conn = pymysql.connect(host='localhost', user='root', password='123456', port=3306, db='zhaopin',
                           charset='utf8mb4')
    #创建一个游标对象cursor
    cursor = conn.cursor()
    #执行sql语句
    cursor.execute("SELECT DISTINCT(education) from demo where city in ('成都', '重庆', '杭州', '武汉', '西安', '天津', '苏州', '南京', '郑州', '长沙', '东莞' ,'沈阳', '青岛', '合肥', '佛山');")
    #获取所有记录列表
    result = cursor.fetchall()
    education = []
    education_data = []
    color_list = ['#459AF0', '#38C3B0', '#86CA5A', '#BFD44F', '	#90EE90']
    #获取到学历的五种情况:不限、大专、本科、硕士、博士
    for field in result:
        education.append(field[0])
    #获取到每种学历对应的个数
    for i in range(len(education)):
        cursor.execute("SELECT count(*) from demo where education = '" + education[i] + "' and city in ('成都', '重庆', '杭州', '武汉', '西安', '天津', '苏州', '南京', '郑州', '长沙', '东莞' ,'沈阳', '青岛', '合肥', '佛山');")
        count = cursor.fetchall()
        education_data.append({'value': count[0][0], 'itemStyle': {'color': color_list[i]}})

    cursor.execute("SELECT DISTINCT(workYear) from demo where city in ('成都', '重庆', '杭州', '武汉', '西安', '天津', '苏州', '南京', '郑州', '长沙', '东莞' ,'沈阳', '青岛', '合肥', '佛山');")
    result = cursor.fetchall()
    workYear = []
    workYear_data = []
    #获取到的几种工作经验
    for field in result:
        workYear.append(field[0])
    #获取到每种工作经验对应的个数
    for i in workYear:
        cursor.execute("SELECT count(*) from demo where workYear = '" + i + "' and city in ('成都', '重庆', '杭州', '武汉', '西安', '天津', '苏州', '南京', '郑州', '长沙', '东莞' ,'沈阳', '青岛', '合肥', '佛山');")
        count = cursor.fetchall()
        workYear_data.append({'value': count[0][0], 'name': i})
    cursor.close()
    return jsonify({"education":education, "education_data":education_data, "workYear_data":workYear_data})

@app.route('/xueli_second',methods=['GET'])

源码获取:

🍅由于篇幅限制,获取完整文章或源码、代做项目的,查看我的头像和用户名就可以找到我啦🍅

大家点赞、收藏、关注、评论啦 、查看👇🏻获取联系方式👇🏻

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值