基于Django框架的面向IT行业的求职推荐系统-大数据可视化分析

一、项目介绍

  
本文先分析IT行业招聘数据分析与岗位推荐系统的背景和意义;对常见的爬虫原理,获取策略,信息提取等技术进行分析;本系统使用python进行开发,MySQL数据库进行搭建,实现了招聘的数据爬取;对数据库的查询结果进行检测并可视化分析,对系统的前台界面进行管理,分析爬取的结果,并对招聘数据结果进行大屏显示;最后通过测试实现了数据爬取,存储过滤和数据可视化分析,以及系统管理等功能。

[关键词] 爬虫,python,大数据,关键字,招聘数据

二、开发环境

开发语言:Python
python框架:django
软件版本:python3.7/python3.8
数据库:mysql 5.7或更高版本
数据库工具:Navicat11
开发软件:PyCharm/vs code
前端框架:vue.js

————————————————

三、功能介绍

   在数据采集中,通过python进行爬虫设计,完成招聘数据的采集处理。数据采集主要包括了分析目标网站、目标网站的数据爬取、数据清洗处理、数据存储。其中,数据采集阶段的功能模块如图4.2所示。

在这里插入图片描述

图4.2 数据采集功能模块图
本系统使用智通人才网作为目标网站,先分析该网站的结构,然后对网页的数据进行爬取,在爬取过程中会遇到一些重复的招聘数据,需要对数据进行清洗,通过数据处理获取到相对完整的招聘数据,并把处理后的数据存储在对象中,通过循环对象来构造数据存储的插入语句,再进行数据存储,将数据保存在MySQL数据库中。

3.2.1爬虫功能需求分析
在目前计算机信息化快速发展过程中,招聘和求职逐渐转移到网络中来,本题目来源于求职招聘系统研发项目的子项目,该项目主要完成一个招聘数据系统的设计和开发,该系统用于收集当前地方招聘数据,然后通过爬取、清理、存储、统计招聘数据,并进行招聘数据,是现代化招聘管理不可缺少的部分,为热门岗位的推荐提供便捷的模式。本文旨在对智通人才网上的招聘信息、岗位信息进行爬取,收集各种类型的招聘数据信息。然后对招聘数据的内容进行分析,整理招聘数据信息。本系统首先分析智通人才网站的网站结构,查看网站网页的排版,然后读取其包含的招聘信息。具体分为以下几个步骤,指定智通人才网url,爬取网页信息,获取特定的智通人才网url存入队列中,提取招聘数据的信息,将信息存入数据库,然后对岗位和薪资等进行分析,得出招聘数据的可视化视图。
图3-1所示数据清洗和加工用例。
在这里插入图片描述

图3-1 数据清洗和加工用例
在本需求分析阶段,不需要关注如何爬取,只需要关注爬取什么样的信息,进行怎样的操作即可,所以先分析智通人才网网站的数据,确定满足系统要求后,然后查看目标网站,将智通人才网内的有关招聘数据进行提取,最后将信息存储到数据库。
3.2.2数据可视化功能需求分析
爬取完招聘数据后,需要对数据进行分析,根据评分和K-means聚类算法分析出招聘数据趋势,并可视化查询处理。本系统使用Python进行编程,通过HTML、JS等方法显示数据。具体包括:招聘数据数据展示、招聘数据分类、用户注册登录、用户管理和爬虫数据管理。其中可视化功能用例图如图3-2所示。
在这里插入图片描述

图3-2 数据分析展示用例
IT行业招聘数据分析与岗位推荐系统用户登录,先验证信息、成功启动系统后进行登录。登录验证成功后,获取到登录权限,跳转到系统首页。
进入到IT行业招聘数据分析与岗位推荐系统大屏界面,通过图形化显示出工作地点统计、学历统计、职位统计、公司类型统计、薪资统计。如果查询失败,返回IT行业招聘数据分析与岗位推荐系统的错误页面。

四、核心代码

部分代码:


def users_login(request):
    if request.method in ["POST", "GET"]:
        msg = {'code': normal_code, "msg": mes.normal_code}
        req_dict = request.session.get("req_dict")
        if req_dict.get('role')!=None:
            del req_dict['role']
        datas = users.getbyparams(users, users, req_dict)
        if not datas:
            msg['code'] = password_error_code
            msg['msg'] = mes.password_error_code
            return JsonResponse(msg)

        req_dict['id'] = datas[0].get('id')
        return Auth.authenticate(Auth, users, req_dict)


def users_register(request):
    if request.method in ["POST", "GET"]:
        msg = {'code': normal_code, "msg": mes.normal_code}
        req_dict = request.session.get("req_dict")

        error = users.createbyreq(users, users, req_dict)
        if error != None:
            msg['code'] = crud_error_code
            msg['msg'] = error
        return JsonResponse(msg)


def users_session(request):
    '''
    '''
    if request.method in ["POST", "GET"]:
        msg = {"code": normal_code,"msg":mes.normal_code, "data": {}}

        req_dict = {"id": request.session.get('params').get("id")}
        msg['data'] = users.getbyparams(users, users, req_dict)[0]

        return JsonResponse(msg)


def users_logout(request):
    if request.method in ["POST", "GET"]:
        msg = {
            "msg": "退出成功",
            "code": 0
        }

        return JsonResponse(msg)


def users_page(request):
    '''
    '''
    if request.method in ["POST", "GET"]:
        msg = {"code": normal_code, "msg": mes.normal_code,
               "data": {"currPage": 1, "totalPage": 1, "total": 1, "pageSize": 10, "list": []}}
        req_dict = request.session.get("req_dict")
        tablename = request.session.get("tablename")
        try:
            __hasMessage__ = users.__hasMessage__
        except:
            __hasMessage__ = None
        if __hasMessage__ and __hasMessage__ != "否":

            if tablename != "users":
                req_dict["userid"] = request.session.get("params").get("id")
        if tablename == "users":
            msg['data']['list'], msg['data']['currPage'], msg['data']['totalPage'], msg['data']['total'], \
            msg['data']['pageSize'] = users.page(users, users, req_dict)
        else:
            msg['data']['list'], msg['data']['currPage'], msg['data']['totalPage'], msg['data']['total'], \
            msg['data']['pageSize'] = [],1,0,0,10

        return JsonResponse(msg)


五、效果图

请添加图片描述

请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述

六、文章目录

目 录
摘 要 I
Abstract II
1 绪论 3
1.1 课题背景 3
1.2 课题意义 3
1.3 研究内容 4
2 相关技术介绍 6
2.1 系统开发环境 6
2.2 网络爬虫概述 6
2.3 Python技术 7
2.4 MySQL数据库 8
3 系统需求分析 9
3.1 可行性分析 9
3.1.1操作可行性 9
3.1.2经济可行性 9
3.1.3技术可行性 9
3.2 功能需求分析 9
3.2.1爬虫功能需求分析 9
3.2.2数据可视化功能需求分析 11
3.3 非功能需求分析 11
4 系统设计 13
4.1 系统架构设计 13
4.2 系统功能设计 14
4.2.1数据采集功能设计 14
4.2.2数据分析功能设计 15
4.3 系统流程设计 16
4.3.1爬虫流程设计 16
4.3.2数据分析可视化流程 17
4.4 数据库设计 19
5 系统实现 21
5.1数据采集的实现 21
5.2数据库操作的实现 22
5.3系统首页的实现 22
5.4招聘数据大屏显示 23
6 系统测试 25
6.1测试目的 25
6.2功能测试 25
6.3测试总结 26
结 论 27
参 考 文 献 28
致 谢 29

  • 34
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值