基于Python招聘职位数据采集与数据可视化分析
随着互联网技术的发展,网络招聘成为招聘者与求职者的主要选择,许多大型招聘网站也随之出现,越来越多的毕业生和求职者造成了社会就业压力巨大的现状。因此设计并实现招聘职位数据采集与数据可视化分析系统有重要的研究价值和意义。该系统的实施使得目前的招聘岗位的具体状况更为明确,有助于各大学根据当前的形势来确定其培养的专业和教学方向,同时也有助于大部分的公司了解当前的社会对人力资源的需求情况。
系统以Python语言为主要开发语言,通过用户端和管理员两个部分的功能实现了对招聘职位数据的数据采集和数据可视化分析。管理员通过爬虫技术获取前程无忧网和猎聘网的各岗位各地区的招聘职位数据,并通过HTML和Flask框架技术将爬取到的职位相关数据信息通过分析予以Echarts图的方式进行可视化展示(按城市分布、岗位分布、学历要求和词云图统计),以便用户注册登录之后查看。管理员在后台对公告和注册用户的信息进行管理,并对爬取到的数据进行维护和管理,以便数据更好的向用户展示。
关键词
With the development of Internet technology, online recruitment has become the main choice for recruiters and job seekers, and many large recruitment websites have emerged, and more and more graduates and job seekers have caused the current situation of huge employment pressure in society. Therefore it is of great research value and significance to design and implement a job posting data collection and data visualization and analysis system. The implementation of this system will help universities to determine their specialization and teaching direction according to the current situation, and it will also help most companies to understand the current demand for human resources in the society.
The system is mainly developed in python language, and the data collection and data visualization analysis of the job data are realized through the functions of both the user side and the administrator. The administrator acquires the job data from MileagePlus and Hire.com through crawler technology, and visualizes the crawled job-related data information by analyzing them in Echarts (by city distribution, job distribution, education requirements and word cloud statistics) through HTML and Flask framework technology, so that users can view them after registering and logging in. The administrator manages the announcement and registered users' information in the background, and maintains and manages the crawled data for better presentation to users.
Key words
Recruitment; Thecrawler; Visualanalysis; Echarts
目录
随着就业需求的不断增加,招聘职位的数据对于就业人员显得格外重要,因为受到疫情的影响,线上招聘成为了招聘方式,所以网络招聘职位数据的重要性更为突出。
1.1 背景和意义
目前,由于互联网信息技术的飞速发展以及各类电子设备的广泛应用,各类电子信息随之而来,人们开始步入了信息时代。在这个信息时代,除了是有等不可再生能源,每个大国都在争抢人力资源,而人才培养也被称之为当今世界上最紧缺的资源,而不同国家和公司也采用了不同手段吸引人才,因此无论国家或者公司,最优秀的人才培养都是其在发展与创造过程中所不可或缺的组成部分。因此,许多企业对人才的需求几乎是偏执的。如何为企业招聘和留住人才已成为每个企业蓬勃发展的首要任务。在从创业到上市的漫长过程中,企业在各个阶段都需要专业人士的支持。因此,网络招聘成为公司发展过程中的非常重要组成部分,对于很多数企业来说,传统的招聘方式已经不能满足现在的人才需求情况的问题[1]。
随着网络时代的冲击和疫情的影响,传统的招聘方式逐渐被时代所淘汰,而络招聘的好处将逐渐显现出来。大多数的个人和公司开始通过网络招聘的平台进行应聘和招聘,所以网络招聘的优势得到了充分体现[2]。如今,网络招聘已经成为现代主流的招聘方式,由此衍生出的招聘网站不计其数,而招聘网站大致可以分为三类:综合类、垂直类、社交类[3]。
1.2 国内外研究现状
目前,在美国等一些国家,通过网络求职的形式已经深入人心,成为毕业生和社会工作者寻找工作的主要途径[4]。微软是著名的跨国科技公司,是信息管理领域的领导者,他们在从事网络招聘时,不仅对外发布招聘信息,还会针对自己的内部员工,当有职位招聘需求时,微软会在网上发布,软的内部和外部员工都可以申请工作[5],它还支持内部员工的国际工作申请,中国的网络招聘多数都在一些一线城市和相对发达的二线城市,部分地区网络求职占比相对较低。与2021年相比,在网上招聘的雇主数量达到526.7万。在线招聘市场的用户总数增加了3.5%,达到近2亿人。预计到2023年,在线招聘的HR的数量即将超过600万,但增长速度相对放缓。
通过iiMediaResearch的数据显示,在2021年1月,前程无忧招聘APP排名第一,活跃用户超过1000万,然后是智联招聘,以月活跃用户约685.1万位居第二[6]。而"斗米"和"BOSS直聘"等新的招聘平台要在快速发展迅速,以月活跃用户超过三百万紧跟其后。猎聘网的每月活跃数量只有154.9万个,相对较低。
中国对数据挖掘的研究比国外要晚一些,研究人员对数据获取的研究主要在某些算法的相关理论基础、应用场景以及算法的改进和优化等方面,国内对数据挖掘的研究大多集中在计算机上,对文本信息,如网上招聘信息的挖掘和分析不多[7]。今天,大数据对社会的发展与个人的选择有着重要作用,所有相关的数据分析方法、可视化技术和数据爬取潜在价值值得我们去发掘。
1.3 相关技术
1.3.1 Python
Python不但是一门高阶的程序设计语言,它同时也是一门解释,编译,交互和面向对象的程序设计的高级脚本,所以Python同时也包括了它的全部功能。该系统是一种较为成熟和可靠的通用程序设计语言。开发Python软件所需的时间较短,且易于确保其正确。所以,这又叫做可运行的虚拟机。密码。Python是一种易学,易读,维护,扩展,嵌入和移植的高级语言。相同的程式可以在不经任何改动的情况下执行。通过这个系统,你也可以在C/C++中安装Python软件。Python不但拥有大量的类库,而且还有许多先进的资料结构,如列表和集合。能够减少开发所需的时间和编码,将更多的精力用于系统的功能性和数据的处理。Python的应用在运行时没有Java和C那么高效,但是在某些高效能的应用中,可以利用Python对C语言进行编程,从而克服了其性能上的缺陷。最关键的是,Python的大量的类库,一个比较完善的架构,一个更加专业和全面的数据处理和数据挖掘的模型。
1.3.2 Flask
Flask是常见的一款使用Python编写的轻型前端应用软件。Flask没有预设资料库或窗体确认工具。Flask在Flask-Extension中增加了很多的扩展灵活性:ORM,表单认证工具,文件上传,各种开放认证技术。Flask框架有着很强的可伸缩性和灵活性;开发效率高,开发者能够集中精力在商业逻辑上;具有三个主要特征:代码量小,能够实现快速开发。
1.3.3 ECharts
ECharts是常用的一种纯粹的JavaScript图表,它主要依靠Canvas类库Zrender。图表丰富,易于操作,通过对属性值的直接应用和修改,可以准确地为前端开发提供相符合的图像以及直观的数据可视化图形,并且可以在PC端和手机上使用,与大多数的浏览器都兼容[8]。另外,ECharts创新的值域漫游、数据视图、拖拽重算等技术,不但提高了使用者的使用体验,而且还为使用者提供了数据挖掘与数据集成的能力。
1.4 论文主要内容
本文主要通过以下五点来进行论文的实现,具体内容如下:
1.对招聘岗位的研究背景、意义和国内外研究现状进行了较为详尽的论述,然后对系统中使用到的相关技术进行了描述。
2.主要从系统的需求分析入手,首先从三个方面对系统进行可行性进行分析,其次对功能需求进行详细阐述,最后对各模块进行用例描述。
3.在需求分析的基础上,对该系统的总体结构、数据库的设计和数据表的设计等进行了详细的描述。
4.在系统设计的基础上,对系统各功能模块进行了设计与实现,并且对每个功能模块的时序图、实现结果和流程图都进行相关说明和展示。
5.主要是对系统进行软件测试,首先阐述了软件测试的目的,其次对主要功能进行了用例测试,最后详细描述了系统维护的关键性。
第二章 系统的需求分析
需求分析的完成情况会严重影响后续开发工作能否顺利进行,本章主要对软件需求和功能需求进行分析,软件需求分析就是通过对系统进行细化分析,这个过程是将软件规划阶段确定的设计范围逐步细化到可以详细定义的程度,最后,对细化的每一个细节进行阐述、分析和总结[6]。
2.1 可行性分析
在进行一个工程或一个制度的发展以前,经常会有一个可行性的研究。工程项目的可行性一般包括:经济性和技术上的可行性。在此基础上,对影响该工程发展的各种可能的因素进行了全面的分析,从而得出该工程的重要性和价值。
2.1.1 经济可行性分析
通常,在进行经济性分析时,需要从两个角度进行。一是在系统的发展阶段是否能够达到所需的资源和装备;二是在系统的研发中需要付出的代价,还有未来可能带来的利益。假如这个工程的费用超过了它的收入,那么这个工程在财务上就没有任何的可操作性。经济性的分析一般采用费用-收益法或费用-收益法,在此利用了前一种方法来进行研究。在推荐体系中,将所需要的资源划分为软体与软体两部分。软件资源是技术文档、参考资料、部分Blog等,可以通过网络进行查询;硬件资源仅需要一部手提笔记本的硬件。这个方法有较高的投资价值和较高的经济性。
2.1.2 技术可行性分析
每一个项目在被公司接收过之前,技术分析是一个非常重要的方面,它影响着该系统是能否被开发出来并正常提供给用户所使用。而在大学四年的学习之中,已经学习了Python、Flask、Html、MySQL等技术,所以只需要通过网站上的学习视频对Echarts图和爬虫技术进行学习就可以完成本系统的设计与实现。在Windows下,Pycharm作为一个系统的开发平台,它的学习费用并不高,因此在技术上是可以实现的。
2.1.3 运行可行性分析
该系统一直秉持着操作要精良、代码要短小精悍,代码越短它就越优美,操作越简单用的人就越多,只要是台正常的电脑,都能把这个软件给运行起来,可以说次软件对系统配置的要求为零,在操作方面没有任何要求,只要会简单的指指点点就能运用自如,不过电脑要连上网线,因为该系统是个联网的软件,操作员只要掌握住工作流程,根据说明书上面的步骤来操作就好了。
2.2 功能需求分析
在信息化的背景下,互联网公司逐步成为一种新型的人才管理模式。目前,在因特网上还有多种不同类型的公司的招聘网站。例如:前程无忧,猎聘,智联招聘等等。因为有这样的求职网站,所以网上充斥着海量的求职信息。在信息技术发展的今天,利用好信息资源,发掘人才的潜力,是必不可少的。在众多的求职平台上,求职者需要掌握各种职业和职业的需要,以便更好地提升自己的求职能力,使自己在当今的职场竞争中,能够更好地生存下去。
2.2.1 确定业务参与者
采用参与者词汇表进行描述,词汇有普通用户和管理员,同义词有前台用户和后台管理员,如表2-1所示。
表2-1 参与者词汇表
|
序号 |
词汇 |
同义词 |
描述 |
|
1 |
普通用户 |
前台用户 |
注册之后,能够查看前台页面 |
|
2 |
管理员 |
后台管理员 |
登录之后,能够管理后台页面 |
2.2.2 用例词汇表
用例词汇表中主要有注册、数据展示、公告、用户管理、数据管理、爬虫管理、日志管理、和公告管理,如表2-2所示。
表2-2 用例词汇表
|
用例名称 |
用例描述 |
参与者 |
|
注册 |
用户在登录之前需要注册 |
用户 |
|
登录 |
用户使用平台之前需要登录 |
用户、管理员 |
|
数据展示 公告 用户管理 数据管理 爬虫管理 日志管理 公告管理 |
用户可以看到数据可视化展示 用户能查看管理员发布的公告 管理员能对普通用户进行查询、增加、删除 管理员能对爬取到的数据进行修改 管理员能对前程无忧和猎聘网进行数据获取 管理员能对爬取日志进行查看 管理员能对公告进行修改 |
用户、管理员 用户 管理员 管理员 管理员 管理员 管理员 |
2.2.3 系统用例模型
本系统分成两个角色,分别为用户,管理员。用户有注册和浏览的功能,其中浏览有岗位分布信息、地区分布信息、学历要求信息和公告信息,管理员有用户管理,数据管理,日志管理,系统管理等功能,其中有数据库数据、日志信息、用户信息和系统信息。具体系统用例模型图如图2-1所示。

图2-1 系统用例图
2.3 各个模块用例描述
该模块从对注册模块、登录模块、数据爬取模块、数据展示模块、公告管理模块、用户管理模块和数据管理模块七个部分对系统主要模块进行用例分析,充分说明系统开发的重要性。
2.3.1 注册模块
用户在进行自己账户的理财管理前需要先注册一个账户。注册模块用例详细描述,如表2-3所示。
表2-3 注册模块用例描述
|
用例条目 |
描述 |
|
用例名称 |
注册系统 |
|
主要业务参与者 |
用户 |
|
其他参与者 |
无 |
|
描述 |
进入前台系统之前需要登录 |
|
前置条件 |
该用户未注册 |
|
后置条件 |
注册成功 |
|
触发条件 |
用户开始注册操作 |
|
基本流程 |
1.用户输入注册信息 2.系统对输入的用户名进行判断 3.返回注册结果 |
|
替代流程 |
1.用户名提示不能为空 2.用户名提示不能重复 3.注册成功后跳转登录界面 4.注册失败跳转注册界面 |
|
结束 |
注册成功或者失败 |
|
实现约束和说明 |
输入的用户名不能为空 |
|
待解决问题 |
无 |
2.3.2 登录模块
用户注册完账户就可以登录自己的账户进入个人信息界面。如表2-4所示。
表2-4 登录模块用例描述
|
用例条目 |
描述 |
|
用例名称 |
登录系统 |
|
主要业务参与者 |
用户、管理员 |
|
其他参与者 |
无 |
|
描述 |
进入前台或后台系统之前需要登录 |
|
前置条件 |
用户已经完成注册 |
|
后置条件 |
可以对前台或后台系统进行操作 |
|
触发条件 |
用户开始登录操作 |
|
基本流程 |
1.用户输入登录信息 2.返回登录结果 |
|
替代流程 |
无 |
|
结束 |
登录成功 |
|
实现约束和说明 |
1.输入登录信息不能为空 2.用户名不存在时,提示请注册账号 |
|
待解决问题 |
无 |
2.3.3 数据爬取模块
该模块主要是管理员对网页数据的爬取以及储存。如表2-5所示
表2-5 数据爬取用例描述
|
用例条目 |
描述 |
|
用例名称 |
数据爬取 |
|
主要业务参与者 |
管理员 |
|
其他参与者 |
无 |
|
描述 |
管理员对网页数据进行获取 |
|
前置条件 |
管理员已经登录 |
|
后置条件 |
管理员对网页数据进行获取 |
|
触发条件 |
管理员点击获取 |
|
基本流程 |
1.管理员进入用户管理界面 2.管理员进行数据爬取 3.管理员对获取的数据进行存储 |
|
替代流程 |
无 |
|
结束 |
刷新页面 |
|
实现约束和说明 |
无 |
|
待解决问题 |
无 |
2.3.4 数据展示模块
该模块主要以各种可视化图形来展示各岗位各地区各学历要求的招聘数据信息。如表2-6所示。
表2-6 数据展示模块用例描述
|
用例条目 |
描述 |
|
用例名称 |
数据展示 |
|
主要业务参与者 |
用户、管理员 |
|
其他参与者 |
无 |
|
描述 |
查看各岗位的各种信息 |
|
前置条件 |
用户需要进入数据展示页面 |
|
后置条件 |
可以查看各岗位各种信息的排名 |
|
触发条件 |
用户点击数据展示 |
|
基本流程 |
1.用户进入数据展示页面 2.用户可以查看各岗位各种信息的排名 |
|
替代流程 |
无 |
|
结束 |
页面刷新 |
|
实现约束和说明 |
无 |
|
待解决问题 |
无 |
2.3.5 公告管理模块
该模块主要是对公告进行的管理,如表2-7所示。
表2-7 公告管理用例描述
|
用例条目 |
描述 |
|
用例名称 |
公告管理 |
|
主要业务参与者 |
管理员 |
|
其他参与者 |
无 |
|
描述 |
管理员对公告进行增删改查操作 |
|
前置条件 |
管理员已经登录 |
|
后置条件 |
管理员对公告进行管理操作 |
|
触发条件 |
管理员点击公告管理 |
|
基本流程 |
1.管理员进入公告管理界面 2.管理员可查看公告信息 3.管理员对公告信息进行增删改查操作 |
|
替代流程 |
无 |
|
结束 |
刷新页面 |
|
实现约束和说明 |
无 |
|
待解决问题 |
无 |
2.3.6 用户管理模块
该模块主要是对用户进行管理。用户管理模块用例图如表2-8所示。
表2-8 用户管理用例描述
|
用例条目 |
描述 |
|
用例名称 |
用户管理 |
|
主要业务参与者 |
管理员 |
|
其他参与者 |
无 |
|
描述 |
管理员对用户进行增删改查操作 |
|
前置条件 |
管理员已经登录 |
|
后置条件 |
管理员对用户进行管理操作 |
|
触发条件 |
管理员点击用户管理 |
|
基本流程 |
1.管理员进入用户管理界面 2.管理员对用户信息进行增删改查操作 |
|
代替流程 |
无 |
|
结束 |
刷新页面 |
|
实现约束和说明 |
无 |
|
待解决问题 |
无 |
2.3.7 数据管理模块
该模块主要是对管理员从前程无忧网和猎聘网爬取下来的数据进行管理。如表2-9所示。
表2-9 数据管理用例描述
|
用例条目 |
描述 |
|
用例名称 |
数据管理 |
|
主要业务参与者 |
管理员 |
|
其他参与者 |
无 |
|
描述 |
管理员对前程无忧数据、猎聘数据进行增删改查操作 |
|
前置条件 |
管理员已经登录 |
|
后置条件 |
管理员对数据进行管理操作 |
|
触发条件 |
管理员点击数据管理 |
|
基本流程 |
1.管理员进入数据管理界面 2.管理员可查看前程无忧数据和猎聘数据 3.管理员数据信息进行增删改查操作 |
|
替代流程 |
无 |
|
结束 |
刷新页面 |
|
实现约束和说明 |
无 |
|
待解决问题 |
无 |
2.4 本章小结
本章主要对系统的需求分析入手,首先从三个方面对系统进行可行性进行分析,其次对功能需求进行详细阐述,最后对各模块进行用例描述,充分说明了系统设计和开大的重要性,为系统的实现打下良好基础。
第三章 系统的设计
系统的开发是基于对系统的最终目标的分析,采用科学的方法来确定系统的总体设计原则和方法,把整个系统分为多个子系统,并进行具体的设计。在这些子系统的基础上,对系统的总体结构和系统的每个部分进行了清晰的阐述。
3.1 系统设计原则
3.1.1 开放性原则
系统总体设计应当根据系统工程的设计思想,使开发的系统满足科学化、合理化、经济化的总体要求。一般遵循以下基本原则:完备性、系统性、可靠性、实用性、可扩充性、易操作性[9]。
3.1.2 实用性和可维护性原则
管理可接受的原则:一个系统能否发挥作用和具有较强的生命力,在很大程度上取决于管理上是否可以接受[10]。
在系统设计时,要考虑到用户的业务类型、用户的管理基础工作、用户的人员素质、人机界面的友好程度、掌握系统操作的难易程度等诸多因素的影响,因此在系统设计时,必须充分考虑到这些因素,才能设计出用户可接受的系统[11]。
3.2 系统功能模块设计
系统分为前台和后台两个部分,前台主要有用户登录、可视化总览、各城市可视化、各岗位可视化、各学历可视化和词语图几个模块,这些都是用户所能操作的部分。后台主要有管理员登录表、爬虫管理、数据管理、系统管理、数据管理和主页面控制几个模块,其中爬虫管理里面有爬虫启动和日志管理,系统管理里面有公告管理和用户管理,数据管理里面有前程无忧数据管理和猎聘数据管理,这些都是管理员才有的操作权限。具体的功能如图3-1所示。

图3-1 系统功能结构图
3.3 数据库的设计
3.3.1 概念模型设计
数据库在项目的开发中,是一种不可缺少的数据存储方式,合理高效的数据库设计以及数据库相关的结构,弄够较大的提升系统的安全性以及稳定性,提高工作的效率。本系统的E-R图如图3-2所示。

图3-2 系统总体E-R图
通过对上述分析对数据库的需求,建立实体属性联系模型图。
(1)管理员实体属性图如图 3-3 所示。

图 3-3 管理员信息实体属性图
(2)用户实体属性图如图 3-4 所示。

图 3-4 用户信息实体属性图
(3)前程无忧数据实体设计主要是在爬取前程无忧网站的时候获取到的职位基本信息,包括数据编号、职称、地区、公司资质、要求、薪资、福利、公司名称、详情链接等信息。程无忧数据实体属性图如图3-5所示。

图 3-5 前程无忧数据实体属性图
(4)猎聘数据信息实体设计主要是在爬取猎聘网站的时候获取到的职位基本信息,包括数据编号、职位名称、职位详情、职位链接等信息。猎聘数据实体属性图如图3-6所示。

图 3-6 猎聘数据实体属性图
(5)日志实体设计主要是爬取数据时的日志信息,如图3-7所示。

图 3-7 管理员信息实体属性图
(6)公告实体设计主要是记录公告的基本信息,如图3-8所示。

图3-8 公告信息实体属性图
3.3.2 数据表的设计
系统设计中,数据库的概念设计是最先进行也是最重要的一环,因此,在最初的时候,必须要建立起各个不同的模块之间的联系,这样才能更好的确定各个表格的关系。系统主要采用MySQL数据库进行存储数据,具体表的设计如下所示。
(1)用户注册表:User_registration,如表3-1所示。
表3-1 用户注册数据表
|
字段名称 |
数据类型 |
主键 |
空值 |
备注 |
|
Id |
Integer |
Y |
NOT NULL |
用户编号 |
|
Name |
Varchar |
N |
用户姓名 |
|
|
Username |
Varchar |
N |
用户账号 |
|
|
Password |
Varchar |
N |
用户密码 |
(2)前程无忧数据表:51job_data,具体记录了从前程无忧网址爬取的数据信息,
如表3-2所示。
表3-2 前程无忧数据表
|
字段名称 |
数据类型 |
主键 |
空值 |
备注 |
|
id |
integer |
Y |
NOT NULL |
数据编号 |
|
Position |
Varchar |
N |
职称 |
|
|
Region |
Varchar |
N |
地区 |
|
|
Qualification |
Varchar |
N |
公司资质 |
|
|
Requirements |
Varchar |
N |
要求 |
|
|
Salary |
Varchar |
N |
薪资 |
|
|
Benefits |
Varchar |
N |
福利 |
|
|
Company_ame |
Varchar |
N |
公司名称 |
|
|
Link |
Varchar |
N |
详情链接 |
(3)猎聘数据表:cooperated_data,具体记录了从猎豹网站爬取到的招聘数据信息,如表3-3所示。
表3-3 猎聘数据表
|
字段名称 |
数据类型 |
主键 |
空值 |
备注 |
|
Id |
Integer |
Y |
NOT NULL |
数据编号 |
|
Position_Name |
Varchar |
N |
职位名称 |
|
|
Position_Details |
Varchar |
N |
职位详情 |
|
|
Position_Link |
Varchar |
N |
职位链接 |
(4)日志信息表:log_information,具体记录了爬取招聘职位的时候产生的日志信息,如表3-4所示。
表3-4 日志信息表
|
字段名称 |
数据类型 |
主键 |
空值 |
备注 |
|
Id |
Integer |
Y |
NOT NULL |
日志编号 |
|
Log |
Varchar |
N |
日志内容 |
|
|
Create_time |
Datetime |
N |
日志时间 |
(5)公告信息表:Notice_info,记录公告信息,如表3-5所示。
表3-5 公告信息表
|
字段名称 |
数据类型 |
主键 |
空值 |
备注 |
|
Id |
Integer |
Y |
NOT NULL |
公告编号 |
|
Title |
Varrchar |
N |
公告标题 |
|
|
Notice |
Varchar |
N |
公告内容 |
|
|
Create_time |
Datetime |
N |
公告时间 |
(6)用户管理表:User_management,记录用户信息,如表3-6所示。
表3-6 用户管理表
|
字段名称 |
数据类型 |
主键 |
空值 |
备注 |
|
Id |
Integer |
Y |
NOT NULL |
用户编号 |
|
Name |
Varchar |
N |
姓名 |
|
|
Account |
Varchar |
N |
账号 |
|
|
Password |
Varchar |
N |
密码 |
|
|
Company |
Varchar |
N |
单位 |
|
|
hone |
Varchar |
N |
电话 |
|
|
|
Varchar |
N |
邮箱 |
|
|
Type |
Integer |
N |
类型 |
3.4 本章小结
本章在前一章需求分析的基础上,对该系统的总体的功能结构、数据库的设计和数据表的设计等进行了详细的描述,并为以后数据库的设计和各功能模块的开发奠定了良好的基础。
第四章 系统功能的设计与实现
在这一章中,将从体系结构和各功能模块的实现入手,对该系统的各功能组件进行了具体的实施,并对其进行了一些直观的说明。
4.1 数据爬取模块的设计与实现
数据采集和爬取模块是通过网站工作信息和工作细节来获得有关的工作资料。首先查看网页,点击网页,找到网页上的url并未改变,再按F12,打开网页,查看网页改变了的url,获得网页的url值,并根据需要的参数first、true、pn、pn为页数,从而可以在程序中定义一个变量,并在网页存取时,将url捕捉数据进行动态存储。
数据爬取模块的时序图如图4-1所示。

图4-1 数据爬起模块时序图
另外,从这个角度可以看出,要求工作的url是在返回的消息中的,以json字符串的方式返回的结果信息的totalCount域代表了总的数量,页面Size域代表了一页的数量,从而可以将totalCount和pageSize用作结束状态。在返回的网页信息中,结果栏位表示目前网页上的职位资讯,如图4-2所示。

图4-2 网站返回职位信息结构图
在对url请求和结果的构造进行解析后,就可以进行爬取了。当在确定一个爬虫的时候,由于一些页面会有一定的防爬设定,在这个过程中会产生一些问题,在这个问题上,必须增加一个请求头headers的资讯,就像是一个浏览页面一样,而headers的头上则会有用户代理和Cookies之类的内容。用户代理可以用于判定用户的请求,它是一种特定的字符串头,能够标识用户所用的OS和浏览器的不同。用户代理的设置有两种方法:第一种是用户代理阵列,并通过random的随机调用用户代理阵列;二是利用Python中的第三方类库fake-useragent,其中包含大量用户代理,用户可以直接将其引入到第三方库中,并在用户代理random中获得,而无需再考虑到复制问题。在命令行中,你必须事先在pip上设置这个类型的库,并将它用于fake_useragent类库。在构建了headersRequests标题信息以后,构建url存取要求的参数,并通过requests.post的方式增加要求的参数和headers、cookies等。因为请求的返回是json字符串,因此您可以通过job_json['内容']['positionResult']['result']来获取目前网页的工作情况,然后通过for循环将每个岗位的数据逐一抽取出来,并将其存储到数据库中。如图4-3中显示了一个用于爬行工作的关键代码。

图4-3 爬取职位信息核心代码图
职位的网页结构的详细细节如图4-4所示。

图4-4 查看职位详情网页源代码截图
数据爬取模块具体流程图如图4-5所示。

图4-5 数据爬取模块流程图
4.2 数据管理模块的设计与实现
4.2.1 爬取数据管理
数据管理模块主要是管理员登录过后,对后台爬取的数据进行管理,后台管理员可以清楚了解所爬取的数据情况,并可以进行对爬取到的数据删除和修改的操作,以达到更加准确的数据。其中包括对前程无忧数据和猎聘数据的修改和删除功能。
该模块的时序图如图4-6所示。

图4-6 数据爬取模块时序图
管理员对前程无忧爬取下来的数据进行管理的实现如图4-7所示。

图4-7 前程无忧数据管理模块实现图
管理员对猎聘爬取下来的数据进行管理的实现如图4-8所示。

图4-8 猎聘管理模块实现图
具体流程图如图4-9所示。

图4-9 数据管理模块流程图
4.2.2 日志管理模块
日志管理主要是对爬取数据的条数和状态进行一个总体的展示。该功能能清楚的了解爬取情况和爬取数据的条数,让管理员能直观明了的看到爬取的结果。
日志管理模块的时序图如图4-10所示。

图4-10 日志管理模块时序图
日志管理实现图如图4-11所示。

图4-11 日志管理模块实现图
日志管理流程图如图4-12所示。

图4-12 日志管理模块流程图
4.3 可视化展示模块的设计与实现
可视化展示是本系统最终的一个功能,也是整个软件开发过程中比较关键的环节,其中它的作用在于把员工信息的分析用图形等可视化的方式呈现给用户。视觉显示的实现大部分是通过一个Echarts图和Flask框架实现的。
可视化展示时序图如图4-13所示。

图4-13 可视化展示模块时序图
根据Flask的描述,用户可以在浏览器上输入一个网页,在urls.py上输入一个url,并在urls.py中查找相应的视图(视图),再根据View中的具体功能来装载和进行逻辑运算。在View中可以使用Models来访问和获取到数据库的数据,然后把数据传到View,而目前的数据存取层次是用一个文档的方式来保存,因此View中的具体功能是由存取数据输入过程引入到该系统的档案中的数据进行分析和处理。View在收到该请求和进行了处理以后,利用Flask.http.HttpResponse来构建一个回应,它是用一个render的render()方式来绘制一个回应的HTML网页,在render中可以用context来将被解析的资料填入Template中,再把反应物件传回到相应的模版中,让使用者看到结果。该平台的显示部分包括总体分析,Java工作分析,前端职位分析,安卓职位分析,测试职位分析,系统的可视化展示总览如图4-14所示。

图4-14 系统可视化展示实现图
利用ECharts自订装入图的方式,首先由div标记来确定图的位置和尺寸,再由ECharts的初始方式进行标记;获得上面的图形div。通过选项来确定与此关系的某些属性,例如标题、序列、类型和图表中的资料data,最终在myBarChart.setOption(选项);为图设定此选项物件。在选项中设定图表的Data属性是用value-name来装入的。各城市招聘岗位的展示如图4-14所示。

图4-14 各城市招聘岗位的展示实现图
各岗位分布情况如图4-15所示。

图4-15 各岗位分布的展示实现图
各学历要求的展示如图4-16所示。

图4-16 各学历要求的展示实现图
另外一种工作技巧的关键字显示采用了“词云”的形式,词云图通过对文本的关键字进行个人化的呈现,并通过其在文章中所占据的比重来确定词语的位置、大小等属性,以滤除文本中的文本。词云的实质是一种“点状”,即在对应的坐标上画出一种特殊风格的文本,并根据其权值的强弱,采用不同的色彩和尺寸来表达其对应层次的显著程度。通过这种方式,读者可以一目了然地了解文章的主要内容。在该体系中,利用ECharts来完成单词云图表。该图形的实现效果如图4-17。

图4-17 词云图的实现图
可视化展示模块的流程图如图4-18所示。

图4-18 可视化展示模块流程图
4.4 系统管理模块的设计与实现
4.4.1 公告管理模块
系统管理主要是管理员针对事实情况对用户和公告信息的管理。新增公告,以管理员角色登入系统后选择公告管控功能选项,系统就会展示该部分工作面,此时选择新增公告选项,系统自动转到公告新增工作面,在新增该部分信息时系统会调用add函数,然后在给定的文本框中填写有关该公告的基础信息后选择确认即可完成新增。
公告管理模块的时序如图4-19所示。

图4-19 公告管理模块时序图
公告管理模块的实现如图4-20所示。

图4-20 公告管理实现图
公告管理模块的流程图的实现如图4-21所示。

图4-21 公告管理模块流程图
4.4.2 用户管理模块
用户管理模块的时序如图4-22所示。

图4-22 用户管理模块时序图
用户管理模块的实现如图4-23所示。

图4-23 用户管理实现图
用户管理模块的流程图如图4-24所示。

图4-24 用户管理模块流程图
4.5 本章小结
本章在上一章系统设计的基础上,对系统各功能模块进行了设计与实现,并且对每个功能模块的时序图、实现结果和流程图都进行相关说明和展示,充分展示了系统的设计与实现的具体情况。
第五章 系统软件测试
该系统的主要功能是从功能的视角,以使用者为中心,对各功能进行检测,并根据实际需求,对其进行改进和完善,满足了系统的初始设计要求。
5.1 软件测试目的
在系统的研究、设计和实施的基础上,设计了一套完整的职位数据分析系统。这一章要讨论的是另外一个在软件发展中必不可少的环节,即系统的测试。系统测试是为了找出系统中的缺陷,确保其准确性。在设计中,正确与否是最关键的品质要素,而在整个开发的各个环节,都要坚持对其进行早期的、持续的、完整的、后期的测试和开发有机的融合。
当在编写代码的时候有些功能能够很容易发现然后进行及时的改正;但是系统出现的错误,自己很难发现,等报错出来时就要根据一定的规则进行更改。招聘职位数据采集与可视化分析系统完成以后,一定要对它进行测试。在对其在开发中,第一步就是对其惊醒分析需求和设计,从而得出一定的结论然后来确定需要测试的是什么,到底是系统测试有单元测试还是集成测试还是系统测试等等[12]。
5.2 系统测试用例
招聘职位数据采集与数据可视化系统是运用了黑盒测试法,它又被叫做功能测试。黑盒测试的对象是展现给用户的功能,不涉及程序和代码。它不同于白盒测试,黑盒测试主要针对的是展现用户的功能,简单的说就是白盒测试测试的是后台程序而黑盒测试测试的是前台展示功能,它根本就不需要测试人员的测试知识,也不用知道系统的一些细节。在测试的时候只要是能够找到所有输出功能,以及输入的集合,然后再对每个模块分别进行测试分析就可以了。
系统测试不仅包括要测试的系统,还包括软件开发过程所需的硬件环境和其他硬件条件,包括数据和其他软件支持及相应的传输功能设备,在测试过程中,测试负责人必须满足以下条件:首先开发的相关人员不可以参与此测试,其次测试用例应该分为两个部分组成,分别为输入的条件和期望的结果,最后必须选择不合理的条件和非法的字符输入来测试[13]。
5.2.1 登录模块测试
设计登录的测试用例时,主要是对用户所输入的数据进行重点测试,以达到最好的测试结果,让数据更加准确。登录测试用例如表5-1所示。
表5-1 登录测试用例表
|
编号 |
测试描述 |
输入数据 |
相关操作 |
预期结果 |
实际结果 |
|
1 |
输入用户名和密码为空 |
空 空 |
进入登录页面不输入 |
提示用户名不能为空 |
与预期结果一致 |
|
2 |
输入不正确的用户名,不输入密码,设置为空 |
%%%% 空 |
进入登录页面输入用户名 |
提示请输入正确名用户 |
与预期结果一致 |
|
3 |
输入正确用户名,不输入密码 |
lzhlzh 空 |
进入登录页面输入用户名 |
提示密码不能为空 |
与预期结果一致 |
|
4 |
输入正确的用户名和密码进行登录并进行操作 |
lzhlzh lzhlzh |
进入登录页面输入用户名、密码 |
登录成功 |
与预期结果一致 |
5.2.2 用户管理模块测试
用户管理用例表如表5-2所示。
表5-2 用户管理测试用例表
|
编号 |
测试描述 |
输入数据 |
相关操作 |
预期结果 |
实际结果 |
|
1 |
点击用户管理按钮,进入用户管理的操作界面,实现对用户管理 |
无 |
点击用户管理 |
进入用户管理界面 |
与预期结果一致 |
|
2 |
选中一条用户信息,点击删除,提示删除成功,并提醒管理员 |
无 |
选中一条用户信息,点击删除 |
提示删除成功 |
与预期结果一致 |
|
选中一条用户信息,点击编辑,进入编辑界面 |
无 |
选中一条用户信息,点击编辑 |
进入编辑界面 |
与预期结果一致 |
续表5-2
|
编号 |
测试描述 |
输入数据 |
相关操作 |
预期结果 |
实际结果 |
|
4 |
进入编辑界面,输入空的用户名,提示用户名不能为空 |
空 Lzhlzh1 Lzhlzh1 |
进入编辑界面,输入空的用户名,输入正确的账号和密码 |
提示用户名不能为空 |
与预期结果一致 |
|
5 |
进入编辑界面,输入空的密码,提示密码不能为空 |
Lzhlzh1 Lzhlzh1 |
进入编辑界面,输入空的密码,输入正确的账号和密码 |
提示密码不能为空 |
与预期结果一致 |
5.2.3 数据管理模块测试
数据管理用例表如表5-3所示。
表5-3 数据管理测试用例表
|
编号 |
测试描述 |
输入数据 |
相关操作 |
预期结果 |
实际结果 |
|
1 |
点击数据管理,进入数据管理界面 |
无 |
点击数据管理 |
进入数据管理界面 |
与预期结果一致 |
|
2 |
选中一条数据,点击删除,提示删除成功 |
无 |
选中一条数据,点击删除 |
提示删除成功 |
与预期结果一致 |
|
3 |
选中一条数据,点击编辑,进入编辑界面 |
无 |
选中一条数据,点击编辑 |
进入编辑界面 |
与预期结果一致 |
5.2.4 公告管理模块测试
公告管理用例表如表5-4所示。
表5-4 公告管理测试用例表
|
编号 |
测试描述 |
输入数据 |
相关操作 |
预期结果 |
实际结果 |
|
1 |
点击公告管理,进入界面 |
无 |
点击公告管理 |
进入公告管理界面 |
与预期结果一致 |
|
2 |
选中一条公告,点击删除 |
无 |
选中一条公告,点击删除 |
提示删除成功 |
与预期结果一致 |
|
3 |
选中一条公告,点击编辑, |
无 |
选中一条公告,点击编辑 |
进入编辑界面 |
与预期结果一致 |
|
4 |
进入公告管理,输入空的 |
空 |
进入公告编辑界面,输入空的公告 |
提示公告为空 |
与预期结果一致 |
5.2.5 日志管理模块测试
日志管理用例表如表5-5所示。
表5-5 日子管理测试用例表
|
编号 |
测试描述 |
输入数据 |
相关操作 |
预期结果 |
实际结果 |
|
1 |
点击日志管理,进入日志管理界面 |
无 |
点击日志管理 |
进入日志管理界面 |
与预期结果一致 |
|
2 |
选中一条日志数据,点击删除,提示删除成功 |
无 |
选中一条日志,点击数据删除 |
提示删除成功 |
与预期结果一致 |
|
3 |
选中一条日志数据,点击编辑,进入编辑界面 |
无 |
选中一条日志数据,点击编辑 |
进入编辑界面 |
与预期结果一致 |
5.3 系统的维护
软件的维修,是针对用户的需要或者是硬件的改变而做出的局部或整体的更改,在进行更改时,要尽可能地使用原始的软件。系统的后期维修还包括:修正在系统的发展中已经出现但在系统的试验中还没有被检测到的缺陷,从而使其能够根据技术的改变和管理需要而做出的改变[14];在软件开发中,系统的可维护性也是衡量软件开发中的一个关键因素,同时也是一个不可缺少的环节,在某种意义上,也体现了该系统的设计合理性。在系统的开发过程中,将采集到的资料与分析的资料分离出来,这样可以使以后的系统维修工作更为便利[15]。
5.4 本章小结
本章主要是对系统进行软件测试,阐述了软件测试的目的,并且对主要功能进行了用例测试,测试结果与预期都一致,最后详细描述了系统维护的关键性,充分体现了系统的实现成果是可运行的。
结论
本论文的研究内容是根据网上招聘所需的海量数据,设计和开发一套可视化的网上招聘信息分析系统,为广大应聘者和应聘者提供清晰明了的求职情况。系统使用了 Python、Flask、Echarts等技术,并利用Pycharm编译器对各个模块的功能进行了设计与实现。首先对网络招聘职位的研究背景、意义、国内外现状进行了论述,其次介绍了系统使用的相关技术,并介绍了论文的主要结构和内容;其次对系统进行了需求分析和系统的主要结构的设计,然后是对系统各功能模块的设计与实现进行展示,最后对系统主要功能模块的测试进行分析介绍。
由于招聘网站的反爬机制的不断更新,系统存在局限性,只实现了两个网站的爬取,希望在以后能对系统的功能进行完善和丰富,对爬取的网站数据进行增加,让该系统能实现更多招聘网站的数据爬取。
参考文献
[1] 王瑞梅.网络招聘数据可视化分析系统的设计与实现[D].河北师范大学,2020.
[2] 赵禹婷.我国网络招聘市场的现状及提升对策研究[J].现代交际,2019(05):243-244.
[3] 杨静.基于文本挖掘的网络招聘信息分析[D].山东师范大学,2019.
[4] 薛竞.大数据时代求职者使用社会招聘平台影响因素研究[D].北京邮电大学,2018
[5] 中国网络招聘行业半年度报告2017年[C].艾瑞咨询系列研究报告,2017:249-281.
[6] ClintonW.Brownley.Python [M].Beijing Posts and Telecommunications Press,2020.
[7] 刘哲.企业网络招聘现状及发展趋势分析[J].中国商论,2017(01):78-79.
[8] 吕云翔.Python数据分析实战[M].北京:清华大学出版社,2019年1月.
[9] 孙瑜.基于Scrapy框架的网络爬虫系统的设计与实现[D].北京交通大学,2019.
[10] LIGJ,CHENGXQ. Research status and scientific thinking of big date[J]. Bulletion of Chinese Academy of Sciences,2021,27(6):647-657.
[11] 刘娟.基于Python爬虫的职位信息数据分析和可视化系统实现[J].江西理工大学信息工程学院, 2020.
[12] Arzykulovs,Nauryzbayevg,Tsiftsista,etal. Underlay cognitive relaying system [J]. IEEE Communications Letters, 2019, 21 (1): 216-219.
[13] Bekti Cahyo Hidayanto, Rowi Fajar Muhammad, RennyP Kusumawardani, Achma d Syafaat. [J].Procedia Computer Science,2017,124.
[14] 王诗圆.基于协同过滤算法的个性化教学平台的研究与实现[D].沈阳师范大学, 2019.
[15] Arzykulovs,Nauryzbayevg,Tsiftsista,etal. Outage performance of underlay CR-NOMA networks[C].International Conference on Wireless Communications and Signal Processing,2020:1-6.
更多推荐
所有评论(0)