当前位置:   article > 正文

基于python招聘推荐系统+深度学习+协同过滤算法+爬虫可视化(包含文档+源码+部署教程)_python招聘信息推荐系统

python招聘信息推荐系统

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

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

1、开发技术

1、前端:vue框架 、echarts可视化
2、后端:Python语言、flask框架
3、爬虫: Scrapy爬虫框架 (智联招聘)
4、算法:基于用户协同过滤推荐算法、基于物品协同过滤推荐算法
5、接口:百度AI
6、数据库数据量: 13.4万 MySQL数据库

在这里插入图片描述

2、创新点

1.爬取智联招聘10多个城市的50万条就业数据后,进行转化和清洗,存储到mysql数据库;
2. 职位推荐与分析
3. 利用Flask开发接口,对接Vue前端,实现对求职招聘数据的可视化分析
(Echarts 多种图形和词云、薪酬分析)
4、亮点:
(1)实现的分析图:数据大屏、职位分布中国地图、薪酬散点图、词云、多种折线图、饼图、环图等 (Vue集成 Apache Echarts);
(2)实现jieba分词+词云分析
(3)推荐算法: 两种协同过滤推荐算法使用(基于用户、基于物品)
(4)身份证Ocr 识别
(5)实名认证: 【百度api】身份证Ocr 识别

3、项目界面

(1)招聘数据分析可视化大屏
在这里插入图片描述

(2)数据分析页面
在这里插入图片描述
(3)基于物品系统过滤推荐算法推荐

在这里插入图片描述

(4)基于用户系统过滤推荐算法推荐

在这里插入图片描述

(5)数据分析页面

在这里插入图片描述

(6)薪资分析散点图

在这里插入图片描述

(7)个人信息设置
在这里插入图片描述

(8)注册登录界面

在这里插入图片描述

4、部分代码

import os
import time

from flask import Flask, send_from_directory, request
from flask_sqlalchemy import SQLAlchemy
from flask_marshmallow import Marshmallow
from werkzeug.utils import secure_filename, redirect

from api.alipayApi import payBp
from api.baiduApi import idocr
from base.core import JSONEncoder
from base.response import ResMsg
from api.testApi import bp

import logging

app = Flask(__name__)
app.register_blueprint(bp, url_prefix='/test')
# app.register_blueprint(movieBp, url_prefix='/movie')
app.register_blueprint(payBp, url_prefix='/alipay')

app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql+pymysql://root:123456@localhost/flask_job'
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
app.config['JSON_AS_ASCII'] = False
app.config['SECRET_KEY'] = 'KJDFLSjfldskj'

UPLOAD_FOLDER="upload"
app.config['UPLOAD_FOLDER'] = UPLOAD_FOLDER
basedir = os.path.abspath(os.path.dirname(__file__))
ALLOWED_EXTENSIONS = set(['txt','png','jpg','xls','JPG','PNG','gif','GIF'])

# 日志系统配置
handler = logging.FileHandler('error.log', encoding='UTF-8')
logging_format = logging.Formatter(
            '%(asctime)s - %(levelname)s - %(filename)s - %(funcName)s - %(lineno)s - %(message)s')
handler.setFormatter(logging_format)
app.logger.addHandler(handler)

# 返回json格式转换
app.json_encoder = JSONEncoder

db = SQLAlchemy(app)
ma = Marshmallow(app)

from api.userApi import userBp
from api.jobApi import jobBp

app.register_blueprint(userBp, url_prefix='/user')
app.register_blueprint(jobBp, url_prefix='/job')

@app.route('/test')
def test():  # put application's code here
    res = ResMsg()
    test_dict = dict(name="zhang", age=19)
    res.update(data=test_dict, code=0)
    return res.data

@app.errorhandler(500)
def special_exception_handler(error):
    app.logger.error(error)
    return '请联系管理员', 500

#判断文件后缀
def allowed_file(filename):
    return '.' in filename and filename.rsplit('.',1)[1] in ALLOWED_EXTENSIONS

@app.route('/file/upload', methods=['POST'], strict_slashes=False)
def api_upload():
    res = ResMsg()
    file_dir=os.path.join(basedir, app.config['UPLOAD_FOLDER'])
    if not os.path.exists(file_dir):
        os.makedirs(file_dir)
    f = request.files['myfile']
    if f and allowed_file(f.filename):
        fname = f.filename
        # fname = secure_filename(f.filename)
        print(fname)
        ext = fname.rsplit('.', 1)[1]
        unix_time = int(time.time())
        new_filename = str(unix_time)+'.'+ext
        f.save(os.path.join(file_dir, new_filename))
    res.update(data=new_filename, code=0)
    return res.data

@app.route('/file/idocr', methods=['POST'], strict_slashes=False)
def api_id_ocr():
    res = ResMsg()
    file_dir=os.path.join(basedir, app.config['UPLOAD_FOLDER'])
    if not os.path.exists(file_dir):
        os.makedirs(file_dir)
    f = request.files['myfile']
    if f and allowed_file(f.filename):
        fname = f.filename
        # fname = secure_filename(f.filename)  有中文这个会有问题
        # print(fname)
        ext = fname.rsplit('.', 1)[1]
        unix_time = int(time.time())
        new_filename = str(unix_time)+'.'+ext
        f.save(os.path.join(file_dir, new_filename))
        idno = idocr(new_filename)[0]
        name = idocr(new_filename)[1]
    res.update(data=dict(idno=idno,pic=new_filename,name=name), code=0)
    return res.data

@app.route('/file/download/<filename>/')
def api_download(filename):
    # print('下载..' + filename)
    return send_from_directory('upload', filename, as_attachment=False)



if __name__ == '__main__':
    # app.run(debug=True,host='0.0.0.0',port=5000)
   app.run()

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
  • 91
  • 92
  • 93
  • 94
  • 95
  • 96
  • 97
  • 98
  • 99
  • 100
  • 101
  • 102
  • 103
  • 104
  • 105
  • 106
  • 107
  • 108
  • 109
  • 110
  • 111
  • 112
  • 113
  • 114
  • 115

源码获取:

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/很楠不爱3/article/detail/366308?site
推荐阅读
相关标签