一、项目介绍
本文先分析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