【大数据毕设】基于Hadoop的招聘网站可视化的设计与实现(一)

博主介绍 全网粉丝6W+,csdn特邀作者、博客专家、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于大数据技术领域和毕业项目实战**✌**

🍅文末获取项目联系🍅

基于Hadoop的招聘网站可视化的设计与实现

摘要:现在,随着互联网网络的飞速发展,人们获取信息的最重要来源也由报纸、电视转变为了互联网。互联网的广泛应用使网络的数据量呈指数增长,让人们得到了更新、更完整的海量信息的同时,也使得人们在提取自己最想要的信息,过滤掉对自己无用的信息时变得不那么容易,对于应聘者也是如此。由于招聘网站的日益流行,也使得应聘网站成为了应聘者找工作的主要平台。在面对着大量的招聘信息时,就业者不能一目了然的获取自己想要的招聘信息,因此我们需要对海量的招聘数据进行处理,做出一种招聘信息的分析系统。在此基础上本文介绍了基于Hadoop的招聘网站的可视化的设计与分析过程中的技术线路。

本招聘网站的可视化使用Hadoop语言编写,使用基于SpringBoot的Web应用框架,数据库使用MySQL,使用ECharts进行数据可视化部分的显示。对数据的爬取使用的Requests进行爬取数据,本次爬取的招聘网站为拉勾网搜索关键词为Java、Hadoop、大数据的招聘信息,拉勾网具有较强的反爬虫机制,采用Cookie形式进行封装,再进行数据的获取。在MySQL数据库中存储爬取的招聘信息,用Pymysql包连接MySQL数据库将查询的数据使用ECharts框架展示到网页。

通过本系统可以用户可以了解到职位的信息概况、薪资分布情况、企业主要招聘城市情况和企业的规模分布、职位的福利待遇和对应聘者的学历要求,工作经验的要求。

关键词:Hadoop;数据可视化;招聘网站

Design and Implementation of Recruitment Website Crawler and Visualization Based on Hadoop

Abstract: Nowadays, with the rapid development of the Internet, the most important source for people to obtain information has been changed from newspapers and TV to the Internet. The extensive application of the Internet makes the amount of data on the Network grow exponentially, and makes it difficult for people to extract the information they want most and filter out the useless information, even for the applicants. Recruitment websites have become the main platform for job seekers due to their growing popularity. In the face of a large number of recruitment information, the employment can not get the recruitment information they want at a glance, so we need to process the massive recruitment data, to make a recruitment information analysis system. On this basis, this paper introduces the process of visualization design and analysis of the recruitment website based on Hadoop.

The visualization of this recruitment website is written using Hadoop language, using Web application framework based on SpringBoot, using MySQL database, using ECharts for data visualization part of the display. Data was crawled using Requests. The recruitment website that was crawled this time searched for recruitment information with keywords of Java, Hadoop and big data on Pull Net. Pull net has a strong anti-crawler mechanism and uses Cookie to encapsulate and then obtain data. The recruitment information is stored in the MySQL database, and the Pymysql package is used to connect to the MySQL database to display the queried data to the web page using the ECharts framework.

Through this system, users can understand the information profile of the position, salary distribution, the main recruitment city of the enterprise and the size of the enterprise distribution, the position of welfare and the requirements of the applicant's education, work experience requirements.

Keywords: Hadoop; Data Visualization; Recruitment Website

引 言

随着互联网的不断发展,网络招聘也更加普遍。招聘网站能使招聘者随时随地了解到招聘信息,同时提高企业招聘的速度。但是面对着大量的招聘信息,应聘者难以在很快的时间内找到适合自己的岗位,做出适合自己选择,也不能根据这些信息直观的看到应聘者比较关心的薪资状况分布,企业的主要招聘城市,公司福利和所要求的学历与经验等方面。因此,当下需要一个能够把招聘信息整合到一起并将信息可视化显示的系统,这样用户就可以通过该平台来进行查看招聘信息的薪资分布,企业福利,所在城市等,从而使求职者可以更快找到心仪的工作。

目前,基于网络爬虫的招聘职位可视化系统在国内外比较少见,有提供该平台的搜索引擎如百度、谷歌等。但是因为招聘网站的招聘信息不能够随意转载,并不能获取到全面的招聘信息,且做不到可视化的效果。因此基于Hadoop的招聘信息的可视化系统还没有比较成功的案例。

所以,本文通过对拉钩网Java、Hadoop、运营相关岗位的公司名称、招聘城市、岗位名称、薪资待遇等进行爬取,然后将招聘信息存入数据库,使用ECharts可视化图表将招聘信息以柱状图、折线图等形式展现出来,供用户个性化的获取信息。让计算机相关专业应聘者根据自身优势有选择性的应聘岗位。为广大的社会择业人员和初入社会的应届毕业生提供就业和学习的指导方向。

第1章 课题概述

由于近些年互联网的飞速发展,我们所生活的世界正在被数据所淹没,人们面对大量的数据需要从大量数据中快速地提取有效的自己需要的信息。对于求职者来说当查看招聘信息时也是这样,面对招聘网站展示的大量的职位信息,应聘者难以及时选出自己最想要的职位信息,又或者筛选出信息后不能直观地看到招聘所有信息的特征、规律、变化的趋势或者数据之间潜在联系。我们可以借助计算机技术来进行自动获取筛选分析自己想要的职位信息。本文对于基于Hadoop的招聘网站的可视化的课题研究就显得尤为重要了。

1.1 课题内容

该课题研究的是一种基于Hadoop的招聘网站的可视化的系统。在开发过程中利用Hadoop对招聘信息进行收集和分析。首先,在拉钩网站上爬取招聘信息,然后存入数据库,连接数据库将数据库中的招聘信息从地区、行业、专业、公司规模、要求经验、薪资待遇等维度进行数据分析。最后,利用ECharts可视化技术,将有效的数据展示给用户。

1.2 课题背景

近年来随着我国计算机水平的发展,计算机行业的热门,高校也都相继开设了相关课程,越来越多的计算机人才涌入社会,但市场中的一众岗位让人眼花缭乱,同时众多拥有丰富从业经验的从业者,名牌大学与普通院校毕业生共同竞争,致使很多社会中的求职者面临着就业的困扰,而如今的招聘网站信息多,想要获取有效的信息需要的时间太长。为了解决社会二次择业人员和高校应届毕业生获取符合自己的并符合自己意向的招聘岗位信息,利用Hadoop对这些招聘信息进行收集和分析势在必行。所以需要一种能够具有分析岗位优势,薪资分布等的系统,可供求职者利用自身优势,分析岗位信息,从而尽快找到心仪的岗位。

通过综合运用互联网数据爬虫技术和图表可视化库,对招聘网站的招聘信息进行爬取,并进行了相关统计分析,从地区、行业、薪酬、经验、岗位素质等方面进行综合分析。从而帮助计算机行业想从事Java、Hadoop、运营相关岗位的就业人员了解相关领域的岗位需求和薪资情况、企业招聘城市、招聘企业的规模和学历与工作经验要求等。从而为就业人员的快速选择岗位,在何处选择岗位提供参考,对未来的生活和工作、学习规划等明确方向。

1.3 课题意义

对于即将毕业找工作的应届生和社会择业人员来说,上网快速找到合适的工作,无疑是急需的。而如今的招聘网站信息多,面对着网上形形色色的招聘网站和参差不齐的招聘信息,想要获取有效的信息需要的时间太长,这给就业者根据自身的情况选择自己适合的职业带来了困难。针对以上不足,有必要通过爬虫技术,帮助求职者在杂乱无序的数据中寻找有用的数据,科学分析,缩短求职者找工作的时间成本,帮助求职者快速择业。

本系统爬取了拉勾网站的计算机语言相关多种招聘信息,同学们可以通过选择本身应对的学历和想要的招聘岗位来选择查看相应的招聘信息。同时将这些信息可视化,可以方便同学们快速了解公司需求情况,这些可视化的部分包括薪资情况,企业情况,公司福利情况和学历情况。

1.4 运行环境

开发环境:IDEA、Nacicat、Google Chrome

关键技术:Java+JavaScript+SpringBoot+MyBatis+SQL+Hadoop

后台数据库:MySQL

开发环境运行平台:Windows 7/Windows10

1.5 相关技术

本项目是使用Hadoop语言开发编写。使用request包进行对招聘网站的数据爬取;用Pysql连接数据库,获取数据;使用Flask框架将数据返回给前端,用ECharts对数据进行可视化展示,使用Jieba分词将语句分开。

1.5.1 Python语言

Python是由其他多种语言发展而来的脚本语言。Python具有很强的可读性,比其他语言更容易上手,并跳过了编译的过程,不需要使用编译器。Python语言是交互式的,我们可以直接运行代码。Python支持面向对象的风格或者将代码封装在对象的编程技术,是一种面向对象的语言。Python语言非常适合新手学习,因此作为计算机学生,在步入大学后,专业课程学习的第一门课------以Python为主,可见Python对于初级程序员来说是一种伟大的分布式框架。

爬虫一般来说就是进行网络资源抓取,因为Python脚本特性,Python容易配置,对字符处理十分灵活,Python有着丰富网络抓取模板,让两者可以很好的链接在一起。对比其他静态编程语言来说,Python抓取网页文档接口更加简洁。抓住网页有时候需要模拟浏览器的行为,而Python具有很多第三方包。

1.5.2 Hadoop框架

Hadoop是一个由Apache基金会所开发的分布式系统基础架构。用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力进行高速运算和存储。Hadoop实现了一个分布式文件系统( Distributed File System),其中一个组件是HDFS(Hadoop Distributed File System)。HDFS有高容错性的特点,并且设计用来部署在低廉的(low-cost)硬件上;而且它提供高吞吐量(high throughput)来访问应用程序的数据,适合那些有着超大数据集(large data set)的应用程序。HDFS放宽了(relax)POSIX的要求,可以以流的形式访问(streaming access)文件系统中的数据。Hadoop的框架最核心的设计就是:HDFSMapReduce。HDFS为海量的数据提供了存储,而MapReduce则为海量的数据提供了计算。HDFS有着高容错性(fault-tolerant)的特点,并且设计用来部署在低廉的(low-cost)硬件上。而且它提供高吞吐量(high throughput)来访问应用程序的数据,适合那些有着超大数据集(large data set)的应用程序。HDFS放宽了(relax)POSIX的要求(requirements)这样可以实现流的形式访问(streaming access)文件系统中的数据。

此次运用hadoop的HDFS可以为海量的数据提供了存储的功能。

1.5.3 ECharts图表库

ECharts是一款使用JavaScript实现的开源的数据可视化图表库,可以提供直观的,可交互的数据可视化图表。本招聘网站的可视化系统使用ECharts做出薪资待遇的柱状图和饼图、折线图的分布展示,公司分布所在城市的饼状图展示,公司规模状况的柱状图和折线图的展示,对学历和工作经验要求的条状图和矩形树图的展示。ECharts通常数据设置在SetOption中,如果我们需要异步加载数据,可以配合 JQuery等工具,在异步获取数据后通过SetOption填入数据和配置项就行。

1.6 本章小结

本章主要介绍招聘信息的可视化在设计时所使用的软件Pycharm和Mysql以及平台背景,和介绍本次毕业设计所涉及到的一些技术和技术的相关内容并且阐述了课题意义,讨论了课题背景。为后面的招聘网站的爬虫与可视化系统的设计部分以及系统实现部分打下了坚实的理论基础。

第2章 系统设计

本招聘网站的可视化系统使用的是Hadoop语言编写,采用基于Flask的轻量级Web应用框架,招聘信息的存储数据库采用MySQL设计,使用ECharts进行招聘信息的数据可视化显示。

2.1 设计思想

首先使用Request爬取拉勾网网页,分析拉钩网网页,将内容进行解析后将招聘信息写入数据库,当我们需要查询信息时,需要连接数据库,将信息查询后读取并写入字典,使用ECharts框架,将数据传输到前端网页,以饼状图,柱状图,折线图等形式展示,让用户直观的看到招聘信息的地域,薪资,待遇等分布,让用户直观的获取到最关心的招聘信息。

2.2 需求分析

随着互联网时代的不断发展,各行各业的数据都呈现极为夸张的增长态势,面对毕业找工作,网上有形形色色的招聘网站,招聘信息也参差不齐,这给毕业生和二次择业人员如何根据自身情况选择自己适合的职业带来了困难。

本人想设计一个网站,爬取招聘网站的有关Java、Hadoop、运营这三种语言相关职位的信息,然后将这些信息综合,方便同学们可以通过选择学历和想要的招聘职位来选择查看相应招聘信息。同时将这些信息可视化,方便同学们快速了解公司需求情况,可视化的部分包括薪资情况,企业情况,公司福利情况和学历情况。此系统的主要功能需求如下:

1.数据概况

爬取的所有有关Java、Hadoop、运营语言的岗位招聘数据都可以看到,也可以通过学历和职位来选择查看满足条件的招聘信息,可以选择学历要求、输入职位来搜索更加精准的职位。

2.可视化

薪资情况:通过选择学历来查看各种岗位对于不同学历的薪资可视化情况,以柱状图、饼图的形式来展示各种职位的薪资分布、所占比例,提供给用户在找工作是作为参考。

企业情况:通过选择职位可以来查看这个职位的主要招聘城市,还可以大概查看一下这个职位的公司规模情况,以及每个职位在各个主要城市所占的比例饼图。

福利情况:通过数据可视化速览公司福利,基于词云进行构造,可以清晰看出所有公司给出的最核心的福利待遇。

学历情况:可以查看各个职位对学历以及工作经验的要求,以条形图、矩形树的形式进行可视化展示。

2.3 系统可行性分析

对于本系统可行性的分析主要从与系统开发和实际生活息息相关的技术、经济、社会三方面进行分析。

1.技术可行性

对于技术可行性首先要想到如何运用当前的技术手段可以成功地完成系统开发设计的工作,还要考虑设施以及配置能否契合开发的需要等。本次要开发的招聘数据采集分析网站系统用的是Hadoop开发语言,容易编写,可以直接在服务器上执行端口。并且使用Pycharm可以快速创建项目。在软件方面:由于使用B/S模型的相对成熟的开发软件,所以软件开发平台的可行性。并且ECharts图表库也已非常成熟且完善,所以其技术可行性非常之高。

2.经济可行性

Hadoop是一款开源免费的脚本语言,Pycharm开发环境也有免费的社区版,而且ECharts也是一款优秀的开源的图表。因此开发成本几乎可以忽略不计,因此经济可行性非常高。

3.社会可行性

本系统的开发符合国家法律进行,也不会触犯到任何人,任何集体的法律权益。只要开发过程中遵纪守法就完全符合法律要求,并且使用计算机的用户都会具有一定的计算机基础,并且本系统操作方法简单,分析的均为计算机相关方面的岗位信息,用户群体也都是计算机方面的人才,所以用户绝对能够熟练使用该系统,并且普通会使用计算机的人群也能使用。因此社会可行性很高。

2.4 功能设计

本项目要对系统功能结构进行设计、系统功能模块爬取网站信息及存入数据库和数据可视化设计、画出系统完整的流程图。

2.4.1系统功能结构

该系统实现了数据的概览,薪资情况,企业情况,福利情况,学历情况及薪资预测的可视化。系统功能层次图,如图2-1所示。

图2-1 系统功能层次图

2.4.2系统功能模块设计

本程序使用Hadoop语言编写,使用的是Flask轻量级Web应用框架,数据库采用MySQL设计,使用百度开发的开源的ECharts图表库进行数据的可视化显示。招聘信息数据的爬取使用Requests进行,爬取的招聘网站为拉勾网,拉勾网有较强的反爬机制,所以采用Cookie的形式进行封装,再进行数据获取。获取的招聘信息数据存储到MySQL数据库,然后使用Pymysql包连接MySQL将查询的数据展示到页面。系统提供了如下功能:

1.数据爬取功能

程序模拟浏览器访问招聘网站信息获取响应Json,提取其中招聘岗位的所有数据,并将这些招聘数据进行存储。系统爬取流程图,如图2-2所示。

图2-2 招聘信息爬取流程图

2.数据展示概况

可以通过学历和职位来选择查看满足条件的招聘信息,可以选择学历要求、输入职位来搜索更加精准的职位。

3.数据可视化

通过连接数据处理获取职位信息后,将职位信息传输到ECharts前端框架里。

在前端网站框架里放入连接数据后的ECharts将各种相关职位的薪资分布情况以柱状图、饼图的形式来展示。

将相关职位的主要招聘城市以所占的比例饼图形式展现;将公司企业的规模分布以折线图,柱状图的形式展示。

通过数据可视化,基于词云进行构造,生成公司福利词云和职位福利词云,展示所有公司给出的最核心的福利待遇。

可视化展现各种岗位对于不同学历和不同经验的薪资情况,以柱状图、矩形树的形式进行可视化展示。

2.4.3系统流程图

用户登入系统后,通过连接数据库,对招聘信息进行获取,将信息传输到ECharts图表里对三种语言相关岗位招聘信息进行可视化的展示。可视化展示流程图,如图2-3所示。

图2-3 可视化展示流程图

2.5 数据库设计

数据库存储爬取的所有招聘信息数据。在MySQL里创建招聘信息表,存储爬取的招聘公司的全称,招聘职位名称,职位福利,薪资,学历要求,所在城市等信息。

当可视化界面展示数据时,查询数据中所有的相关招聘信息。招聘信息数据表,如表2-1所示。

表2-1 招聘信息数据表

字段名 数据类型 备注
companyFullName Text 公司全称
companyShortName Text 公司简称
companySize Text 公司规模
financeStage Text 融资阶段
district Text 区域
positionName Text 职位名称
workYear Text 工作经验
education Text 学历
salary Text 薪资
positionAdvantage Text 职位福利
industryField Text 经营范围
firstType Text 职位类型
companyLabelList Text 公司福利
secondType Text 第二职位
city Text 城市

2.6 本章小结

本章对基于Hadoop的招聘网站的可视化系统进行了设计思想的阐述,表述了招聘网站可视化的需求分析。对系统可行性进行分析,包括技术、经济、社会。以及详细的功能设计,包括系统功能结构设计、系统功能模块爬取网站信息及存入数据库和数据可视化的设计、系统完整流程图。最后介绍了数据库创建的表及其属性。为接下来的招聘网站的可视化的详细实现打下基础。

第3章 系统实现

本章在前文对于本招聘信息可视化系统的需求分析以及详细的爬取流程分析和数据可视化分析的基础上对数据可视化系统的实现做出详细的介绍。对岗位信息的爬取的技术讲解和部分代码、数据处理、数据库功能实现以及ECharts可视化进行详细介绍。

3.1 岗位信息爬取模块设计

通过浏览器搜索拉勾网,在拉勾网站点击鼠标右键的检查功能查看招聘信息的源代码分析网页,拉勾网的职位信息是通过Ajax动态加载的,由于拉勾网反爬机制,我们并不能通过爬虫在爬取的源代码里获取职位的相关信息,所以我们在检查功能的Network里点击XHR查看标头。在爬取数据的过程中,从指定的url中通过Requests请求携带标头里的请求标头和表单数据模拟浏览器访问网页获取网页中的JSON信息。

对招聘信息的获取使用Requests进行爬取拉勾网的招聘岗位信息,由于拉勾网的反爬机制,所以采用Cookie的形式进行封装,再进行数据获取。数据爬取的部分过程,代码如下:

#创建session会话

s = requests.Session()

#模拟浏览器发送请求

s.get(url=url1, headers=headers, timeout=3)

#获取cookie

cookie = s.cookies

#发送post请求

res = requests.post(url, headers=headers, data=data, cookies=cookie, timeout=3)

#检查请求是否成功

res.raise_for_status()

#设置可接收的编码为utf-8

res.encoding = 'utf-8'

#请求响应结果

page_data = res.json()

访问拉钩网站,登录需要Cookie,将Cookie保存在Session里。创建Session连接,获取服务器的响应结果。获取响应,如图3-1所示。

图3-1 获取响应

通过分析网页源代码可以看到浏览器发送的请求得到的响应,从JSON里可以读取总职位数TotalCount,代码如下:

first_page = get_json(url, 1)

total_page_count = first_page['content']['positionResult']['totalCount']#获取json里的总相关职位数

num = get_page_num(total_page_count)#算出爬取的页数

通过从浏览器上登录拉钩网站可以看到拉钩网的招聘信息每页显示15个职位,最多可以显示30页,所以最多能爬取30页信息。爬取总页数的代码如下:

def get_page_num(count)😗*

** page_num = math.ceil(count / 15)#总职位数除以每页的招聘岗位15个

if page_num > 30:

return 30#如果页码超过30只返回三十页码职位

else:

return page_num#如果页码不超过30页,那么返回爬取的总页码数

将页数循环访问并获取响应JSON里职位相关的内容,最后将职位信息汇总到总列表total_info中,因为拉钩网站的反爬机制,所以每次爬取一页数据后都需要都需要暂停一段时间后再继续爬去,获取职位信息代码如下:

total_info = []

time.sleep(10)

for num in range(1, num + 1):

获取每一页的职位相关的信息

page_data = get_json(url, num) # 获取响应json

jobs_list = page_data['content']['positionResult']['result'] # 获取每页的所有相关的职位信息**

** page_info = get_page_info(jobs_list)#将每页的职位信息写入列表

for item in page_info:

print(item)

total_info += page_info print('已经爬取到第{}页,职位总数为{}'.format(num, len(total_info)))

time.sleep(20)

将网站每页的岗位信息从响应的Json里获取的职位信息显示出来,职位信息列表,如图3-2所示。

图3-2职位信息列表

爬取所有数据,看看有没有之前已存入的信息,如果没有再写入,这样可以筛选之前爬取过的重复的岗位招聘信息,或者不同语言关键词同时能搜索到的相同岗位信息,更新数据表代码如下:

def unique(old_list):

newList = []

for x in old_list:

if x not in newList :

newList.append(x)

return newList

3.2 数据库的连接及使用

爬取的所有职位信息都需要存入数据库,每次对数据化进行可视化展示时连接并查询数据库里相关的职位信息。

3.2.1连接数据库

在MySQL中用创建数据库表,将爬取后的获取的数据保存到数据库。每次可视化的展示都需要连接数据库获取相关的信息,获取列表里的所有相关信息后就要关闭连接,代码如下:

conn = pymysql.connect(host='localhost', user='root', password='123456', port=3366, db='lagou',charset='utf8mb4')#建立数据库连接

cursor = conn.cursor()#中间是查询所需要的各种招聘信息

count = cursor.fetchall()#取消连接

3.2.2 数据概览数据库查询

在可视化过程中,我们需要载入数据,而这些数据保存在MySQL数据库里,所以就要用Pymysql包连接MySQL数据库,并在MySQL数据库中查询相关信息列遍历并写入列表,然后关闭连接。

数据概况的内容是从数据库中查询所有职位信息,遍历数据表信息并存放至列表代码如下:

cursor.execute("select count() from demo");

count = cursor.fetchall()

cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)

#返回字典(dict)表示的记录,就要cursorclass参数设为MySQLdb.cursors.DictCursor类。

cursor.execute("select from demo limit "+str(page)+","+str(limit));

data_dict = []

result = cursor.fetchall()

for field in result:

data_dict.append(field)

3.2.3学历情况数据库查询

学历情况的部分分别展示的是招聘企业对学历的要求还有对工作经验的要求的数据。学历的要求是从数据库中查询所有的学历类别并返回所有结果,循环这些学历,每次都查询并返回所有招聘职位需求学历的结果,对工作要求的数据也是这样的方法进行查询。代码如下:

cursor.execute("SELECT DISTINCT(education) from demo");

result = cursor.fetchall()

education = []

education_data = []

color_list = ['#459AF0','#38C3B0','#86CA5A','#BFD44F']

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

学历类型与每个学历类型的招聘岗位数,以及工作经验类型与招聘岗位数,学历情况数据,如图3-3所示。

图3-3 学历情况

3.2.4企业情况数据库查询

企业情况展示了主要招聘城市和企业规模两种数据。主要招聘城市是在数据库中查询招聘的城市City列,并叠加每个招聘城市所招聘的岗位数,企业所在城市的分布,由于爬取的是全国的招聘数据,所以招聘城市过多全部在饼图中展示的话会看不清内容,所以,将饼状图只显示前7个城市的招聘比例和招聘企业的个数,企业规模的数据是循环公司规模查询数据库中所有公司规模将属于哪种公司规模的公司加入列表。部分代码如下:

for i in city:

**#**查询各城市招聘人数

cursor.execute("SELECT count() from demo where city = '" + i + "'");

​ count = cursor.fetchall()

#'value':招聘人数, 'name': 城市名

dict = {'value': count[0][0], 'name': i}

city_result.append(dict)

for i in city[7:]:

#设置七名以后的城市不显示

selected[i] = False

以下是企业各招聘城市,及招聘城市招聘岗位数,各招聘公司规模的公司数,执行数据库结果,企业情况数据,如图3-4所示。

图3-4 薪资情况数据

3.2.5薪资情况数据库查询

薪资情况的部分分别查询数据库的工作薪资Salary是属于10k以下的Java岗位,Hadoop岗位还是运营岗位,并遍历数据库。然后依次分别查询数据库其他薪资范畴10k到20k的、20k到30k的、30k到40k的、40k以上的三种语言相关的岗位信息,主要代码如下:

for i in positionName:

#此处查询的就是20k到30k薪资的分别有关Java、Hadoop、运营的岗位信息

cursor.execute("SELECT COUNT() FROM demo WHERE SUBSTR(salary,1,2) BETWEEN 20 AND 30 and positionName like '%"+i+"%';");

#接收全部数据库结果信息

count = cursor.fetchall()

#依次加入列表

temp_list += count[0]

3.3 数据可视化设计

ECharts显示图表柱状图、折线图,将从数据库中提取的数据传输到ECharts框架里,在前端界面展示出来,ECharts是JavaStript语言,可以将后端的数据传输至ECharts框架里,以图表形式展现出来。

3.3.1福利词云设计

福利待遇部分是将查询的数据库的福利内容列所有福利待遇加入列表,使用Jieba分词设置停止词,并提取主题词,返回权重最大的前100个词。然后以词云形式展现在前端可视化界面。代码如下:

positionAdvantage = []

#设置停止词

jieba.analyse.set_stop_words('./stopwords.txt') **

**tags = jieba.analyse.extract_tags(content, topK=100, withWeight=True)

#提取主题词content:要分词的语句

topk: 返回的是权重最大的前100个词

#withWeight:True返回关键词的权重值

for v, n in tags:

mydict = {}

mydict["name"] = v

mydict["value"] = str(int(n * 10000))

positionAdvantage.append(mydict)

查询的职位福利情况和公司福利情况的数据从数据库得出结果,福利情况数据,如图3-5所示。

图3-5 福利情况数据

公司福利与职位福利可以通过ECharts在前端网页可视化展示出来。公司福利与职位福利的词云图,如图3-6所示。

图3-6 词云图

3.3.2柱状图和折线图

柱状图通过ECharts显示,后端的数据以Json形式传输至ECharts图表里可以动态切换柱状图与折线图,并且鼠标点到相应位置会显示柱状图或者条形图的数据信息。

柱状图或条形图可以切换为数据视图,保存图片,实现柱状图与条形图之间的动态切换,部分代码如下:

​ dataView: { //数据视图

​ show: true

​ },

​ saveAsImage: { //保存图片

​ show: true

},

//动态类型切换,可切换柱状图与饼图

magicType: { **

** type: ['bar', 'line']

鼠标触碰可以触发显示相关的招聘数据,下面是将Json数据传输至ECharts里的公司规模和公司规模结果的代码,写出数值轴类型和类目轴类型,柱状图或是折线图类型,其他学历情况和薪资待遇的柱状图和折线图的数据展示也是如此。代码如下:

xAxis: {

#类目轴

type: 'category',

#此处放从数据库查询出来的公司规模大小的内容在x轴下方展示

data: res.companySize

},

yAxis: {

#数值轴

type: 'value'

},

series: [{

#此处是公司规模大小的结果

data: res.companySizeResult,

type: 'line'

}]

柱状图和折线图之间的相互转换可以动态实现,例如薪资待遇情况和公司规模的柱状图也可以通过用户点击进行动态切换成折线图或者数据,公司规模情况的柱状图,如图3-7所示。

图3-7 柱状图

3.3.3矩形树图

将数据传输至ECharts里后,将数据以树图的形式展示出来,矩形树图的类型为Treemap,设置树图属性,以及设置树图中的文本样式。代码如下:

data = res.workYear_data

for(var n in data) {

data[n]['name'] = data[n]['name'] + ' ' + data[n]['value']

}

对工作经验的要求统计分布用ECharts以矩形树图的形式展示在前端界面。关于工作经验的矩形树图,如图3-8所示。

图3-8 矩形树图

3.3.4饼图

企业所在城市的分布,由于爬取的是全国的招聘数据,所以招聘城市过多全部展示不够美观,所以饼状图只显示前7个城市的招聘比例和招聘企业的个数,如果想要其他招聘城市的招聘信息只需要点击城市即可在饼状图中显示,部分代码如下:

legend: {

orient: 'vertical',

left: 'left',

data: res.city,

#只显示前七个城市

selected: res.selected

},

用ECharts可视化显示岗位的主要招聘城市前七个城市及其岗位数的饼状图分布并,点击城市可以在饼图中添加此城市的招聘岗位数及占比。饼状图,如图3-9所示。

图3-9 饼状图

3.4可视化展示

通过对招聘数据的可视化展示,可以让用户直观看到招聘信息的薪资情况,招聘城市,岗位福利等情况信息,从而分析自己想要去的城市和想工作的岗位,以及工作岗位的要求,对自己的职业规划指明方向。

此处省略。。。

第4章 功能测试及成果展示

任何一个项目完成之后都必须要对该项目的测试,以检查项目是否有缺陷,设计多个测试用例,检查用户在使用阶段是否会有此类问题。也可以在此过程中做出完善,本章主要是对招聘数据可视化的交互功能是否满足要求进行测试。

此处省略。。。

结 论

此处省略。。。

参考文献

[1] 王芳.基于Hadoop的招聘网站信息爬取与数据分析[J].信息技术与网络安全,2019.08

[2] 贾柠瑜.基于Hadoop爬虫的岗位数据分析--以拉勾网为例[J].信息技术与信息化,2019

[3] 杨众.基于Hadoop语言的招聘信息可视化分析[J].计算机与网络,2019

[4] 王慧玲.招聘网站数据可视化分析平台的设计与实现.曲阜师范大学,2020.06

[5] (美)Miguel Grinberg. Flask Web开发:基于Hadoop的Web应用开发实战[M].人民邮电出版社,2015.01

[6] (美)Wes McKinney. 利用Hadoop进行数据分析[M].机械工业出版社,2014.01

[7] 郭丽蓉.大数据环境下的网络爬虫设计[J].山西电子技术,2018(2)

[8] 王涛.基于Hadoop的软件技术人才招聘信息分析与实现------以前程无忧为例[J].福建电 脑,2018

[9] 崔蓬.ECharts在数据可视化中的应用[J].软件工程,2019

[10] 裴丹丹.基于ECharts的数据可视化实现[D].北京邮电大学,2018

[11] 项博良,唐淳淳,钱前,曹健东.基于网络爬虫和数据分析[J].智能计算机与应用,2020.01

[12] 余本国.Hadoop数据分析基础[M].清华大学出版社,2018

[13] 董付国.Hadoop数据分析、挖掘与可视化[M].南京邮电大学,2018.05

[14] 孙波翔/李斌译.Hadoop核心编程(第3版)[M].人民邮电出版社,2016

[15] 袁国忠.Hadoop编程从入门到实践[M].人民邮电出版社,2016

[16] 关鑫洁, 黄思奇, 位磊. 基于Hadoop的求职信息采集分析系统设计与实现[J].计算机时代, 2020.

[17] 边倩, 王振铎, 库赵云. 基于Hadoop的招聘岗位数据分析系统的设计与实现[J].微型电脑应用, 2020.

[18] 常逢佳, 李宗花, 文静,等. 基于Hadoop的招聘数据爬虫设计与实现[J].软件导刊, 2019.

[19] 王瑞梅. 网络招聘数据可视化分析系统的设计与实现[D].河北师范大学.

[20] 刘娟, 管希东. 基于Hadoop爬虫的职位信息数据分析和可视化系统实现[J].软件工程与应用, 2020.

[21] 谭云鹤. 基于招聘网站数据处理类岗位的人才需求分析.天津财经大学.

[22] 欧阳元东. 基于Hadoop的网站数据爬取与分析的技术实现策略[J].电脑知识与技术, 2020.

[23] 刘晓知. 基于Hadoop的招聘网站信息爬取与数据分析[J].电子测试, 2020.

[24] 于韬, 李伟, 代丽伟. 基于Hadoop的新浪新闻爬虫系统的设计与实现[J].电子技术与软件工程, 2018.

[25] 谭昕章,杜晖. 电商运营岗位的社会需求及岗位素质分析------基于智联招聘网站数据[J]. 现代商贸工业, 2021.

[26] 杨国军. 基于Hadoop的数据爬虫的设计与实现[J].数字技术与应用, 2020.

相关推荐
魔道不误砍柴功21 分钟前
简单叙述 Spring Boot 启动过程
java·数据库·spring boot
失落的香蕉23 分钟前
C语言串讲-2之指针和结构体
java·c语言·开发语言
枫叶_v24 分钟前
【SpringBoot】22 Txt、Csv文件的读取和写入
java·spring boot·后端
wclass-zhengge24 分钟前
SpringCloud篇(配置中心 - Nacos)
java·spring·spring cloud
路在脚下@25 分钟前
Springboot 的Servlet Web 应用、响应式 Web 应用(Reactive)以及非 Web 应用(None)的特点和适用场景
java·spring boot·servlet
黑马师兄26 分钟前
SpringBoot
java·spring
数据小小爬虫1 小时前
如何用Java爬虫“偷窥”淘宝商品类目API的返回值
java·爬虫·php
暮春二十四1 小时前
关于用postman调用接口成功但是使用Java代码调用却失败的问题
java·测试工具·postman
java小吕布1 小时前
Java中Properties的使用详解
java·开发语言·后端
爱吃土豆的程序员1 小时前
在oracle官网下载资源显示400 Bad Request Request Header Or Cookie Too Large 解决办法
java·数据库·oracle·cookie