python招聘数据分析可视化系统+爬虫+7种薪资预测算法+Flask框架(源码)

2023-12-05

博主介绍:✌全网粉丝10W+,前互联网大厂软件研发、集结硕博英豪成立工作室。专注于计算机相关专业 毕业设计 项目实战6年之久,选择我们就是选择放心、选择安心毕业✌

毕业设计:2023-2024年计算机专业毕业设计选题汇总(建议收藏)

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

1、项目介绍

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

2、项目界面

(1)企业情况分析

在这里插入图片描述

(2)学历情况分析

在这里插入图片描述

(3)薪资情况分析

在这里插入图片描述

(4)招聘数据概况

在这里插入图片描述

(5)薪资预测

在这里插入图片描述

(6)数据采集页面
在这里插入图片描述

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'])

????✌ 感兴趣的可以先收藏起来,点赞关注不迷路,想学习更多项目可以查看主页,大家在毕设选题,项目代码以及论文编写等相关问题都可以给我留言咨询,希望可以帮助同学们顺利毕业! ????✌

源码获取:

???? 由于篇幅限制,获取完整文章或源码、代做项目的,拉到文章底部即可看到个人联系方式。 ????

点赞、收藏、关注,不迷路, 下方查看 ???????? 获取联系方式 ????????

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

python招聘数据分析可视化系统+爬虫+7种薪资预测算法+Flask框架(源码) 的相关文章

  • 如何替换 Pandas Dataframe 中不在列表中的所有值? [复制]

    这个问题在这里已经有答案了 我有一个值列表 如何替换 Dataframe 列中不在给定值列表中的所有值 例如 gt gt gt df pd DataFrame D ND D garbage columns S gt gt gt df S 0
  • Python 类型提示 Dict 语法错误 可变默认值是不允许的。使用“默认工厂”

    我不知道为什么解释器会抱怨这个类型的字典 对于这两个实例 我得到一个 不允许可变默认值 使用默认工厂 语法错误 我使用的是 python 3 7 3 from dataclasses import dataclass from typing
  • pandas DataFrame.join 的运行时间是多少(大“O”顺序)?

    这个问题更具概念性 理论性 与非常大的数据集的运行时间有关 所以我很抱歉没有一个最小的例子来展示 我有一堆来自两个不同传感器的数据帧 我需要最终将它们连接成两个very来自两个不同传感器的大数据帧 df snsr1 and df snsr2
  • NLTK 2.0分类器批量分类器方法

    当我运行此代码时 它会抛出一个错误 我认为这是由于 NLTK 3 0 中不存在batch classify 方法 我很好奇如何解决旧版本中的某些内容在新版本中消失的此类问题 def accuracy classifier gold resu
  • VSCode Settings.json 丢失

    我正在遵循教程 并尝试将 vscode 指向我为 Scrapy 设置的虚拟工作区 但是当我在 VSCode 中打开设置时 工作区设置 选项卡不在 用户设置 选项卡旁边 我还尝试通过以下方式手动转到文件 APPDATA Code User s
  • 我应该使用 Python 双端队列还是列表作为堆栈? [复制]

    这个问题在这里已经有答案了 我想要一个可以用作堆栈的 Python 对象 使用双端队列还是列表更好 元素数量较少还是数量较多有什么区别 您的情况可能会根据您的应用程序和具体用例而有所不同 但在一般情况下 列表非常适合堆栈 append is
  • 嵌套列表的重叠会产生不必要的间隙

    我有一个包含三个列表的嵌套 这些列表由 for 循环填充 并且填充由 if 条件控制 第一次迭代后 它可能类似于以下示例 a 1 2 0 0 0 0 0 0 4 5 0 0 0 0 0 0 6 7 根据条件 它们不重叠 在第二次迭代之后 新
  • Python 3d 绘图设置固定色阶

    我正在尝试绘制两个 3d 数组 第一个数组的 z 值在范围内 0 15 0 15 第二个来自 0 001 0 001 当我绘图时 色标自动遵循数据范围 如何设置自定义比例 我不想看到 0 001 的浅色 而应该看到 0 15 的浅色 如何修
  • Pycharm 在 os.path 连接上出现“未解析的引用”

    将pycharm升级到2018 1 并将python升级到3 6 5后 pycharm报告 未解析的引用 join 最新版本的 pycharm 不会显示以下行的任何警告 from os path import join expanduser
  • 打印数字时添加千位分隔符[重复]

    这个问题在这里已经有答案了 我真的不知道这个问题的 名称 所以它可能是一个不正确的标题 但问题很简单 如果我有一个数字 例如 number 23543 second 68471243 我想要它使print 像这样 23 54368 471
  • 使用 Python Oauthlib 通过服务帐户验证 Google API

    我不想使用适用于 Python 的 Google API 客户端库 但仍想使用 Python 访问 Google APIOauthlib https github com idan oauthlib 创建服务帐户后谷歌开发者控制台 http
  • 通过Python连接到Bigquery:ProjectId和DatasetId必须非空

    我编写了以下脚本来通过 SDK 将 Big Query 连接到 Python 如下所示 from google cloud import bigquery client bigquery Client project My First Pr
  • 尽管我已在 python ctypes 中设置了信号处理程序,但并未调用它

    我尝试过使用 sigaction 和 ctypes 设置信号处理程序 我知道它可以与python中的信号模块一起使用 但我想尝试学习 当我向该进程发送 SIGTERM 时 但它没有调用我设置的处理程序 只打印 终止 为什么它不调用处理程序
  • Pandas 组合不同索引的数据帧

    我有两个数据框df 1 and df 2具有不同的索引和列 但是 有一些索引和列重叠 我创建了一个数据框df索引和列的并集 因此不存在重复的索引或列 我想填写数据框df通过以下方式 for x in df index for y in df
  • Python - 如何确定解析的 XML 元素的层次结构级别?

    我正在尝试使用 Python 解析 XML 文件中具有特定标记的元素并生成输出 excel 文档 该文档将包含元素并保留其层次结构 我的问题是我无法弄清楚每个元素 解析器在其上迭代 的嵌套深度 XML 示例摘录 3 个元素 它们可以任意嵌套
  • Python:Goslate 翻译请求返回“503:服务不可用”[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我们不允许提出寻求书籍 工具 软件库等推荐的问题 您可以编辑问题 以便用事实和引文来回答 这个问题似乎不是关于主要由程序员使用的特定编程问
  • 如何以正确的方式为独立的Python应用程序制作setup.py?

    我读过几个类似的主题 但还没有成功 我觉得我错过或误解了一些基本的事情 这就是我失败的原因 我有一个用 python 编写的 应用程序 我想在标准 setup py 的帮助下进行部署 由于功能复杂 它由不同的 python 模块组成 但单独
  • 在virtualenv中下载sqlite3

    我正在尝试使用命令创建应用程序python3 manage py startapp webapp但我收到一条错误消息 django core exceptions ImproperlyConfigured 加载时出错 pysqlite2 或
  • 如何在 Flask 中的视图函数/会话之间传递复杂对象

    我正在编写一个 Web 应用程序 当 且仅当 用户登录时 该应用程序从第三方服务器接收大量数据 这些数据被解析为自定义对象并存储在list 现在 用户在应用程序中使用这些数据 调用不同的视图 例如发送不同的请求 我不确定什么是最好的模式在视
  • 如何在Python脚本中从youtube-dl中提取文件大小?

    我是 python 编程新手 我想在下载之前提取视频 音频大小 任何 YouTube 视频 gt gt gt from youtube dl import YoutubeDL gt gt gt url https www youtube c

随机推荐