APP下载

网络招聘信息抽取与分析系统设计

2023-01-16许丹亚贾雨潇

无线互联科技 2022年21期
关键词:爬虫意向职位

许丹亚,贾雨潇

(1.郑州铁路局信息技术所,河南 郑州 450000;2.中国民生银行信用卡中心,北京 100071)

0 引言

当前招聘的形式众多,其中,网络招聘覆盖的区域广泛,信息量丰富,求职者可随时获得大量的空缺职位信息。国内现有的网络招聘平台较为复杂,发布的招聘信息量巨大。求职信息列表冗长,筛选条件的粒度难以界定,求职者可能错过很多求职机会。

因此,为了方便个体求职者,本文开发了基于Web的网络招聘数据采集与分析系统。系统要解决的问题是网络招聘信息平台众多,招聘信息量巨大,大量耗费求职者的精力和耐性,而现有的招聘信息分析工具应用不便,不能直观了解某一领域的人才需求现状[1-2]。

系统对网站的招聘信息加以采集、分析并且以快速的、图形化的形式进行统计,为用户提供提高招聘信息检索效率的工具。使用网络招聘信息抽取与分析系统,可以增强用户的信息获取、分析和辨别能力,提高求职效率。

1 需求分析

1.1 用户需求

系统的使用者分为未注册用户(游客)、用户和管理员3类,系统为不同的使用者提供不同的服务。本文运用UML(统一建模语言)的用例图和活动图进行需求与功能分析[3]。

游客使用系统的过程为,根据城市列表和职位列表,游客筛选招聘信息,系统展示职位信息列表,游客可点击职位列表中的地址,到某招聘网站上查看招聘信息详情;系统分析查询到的招聘信息,展示分析图表。游客注册后可以享受更多功能,如招聘信息分析、查看历史记录、匹配职位信息等。

其中,招聘信息为实时采集。信息列表中每条招聘信息包括:招聘信息编号、职位名称、公司类型、薪资、学历和详细的访问地址等。通过点击系统抓取的链接地址,可访问采集数据的原始链接。

登录后的用户使用的功能包括登录和注册、查询招聘信息、查看招聘信息分析结果和匹配招聘信息。

另外,系统为管理员展示用户信息列表,管理员可以删除用户的信息和所有的历史记录。

1.2 功能需求

系统基本功能包括根据搜索招聘信息、匹配招聘信息和管理历史记录。

系统为用户和游客提供搜索招聘信息功能,该功能根据输入的筛选信息,实时采集信息并展示和分析,也可以访问某一条招聘信息的链接。

系统为用户提供匹配招聘信息功能,该功能根据输入的意向信息,在用户搜索的招聘信息里为用户匹配信息并展示,用户可以查看匹配信息列表,也可以修改意向信息,进行再次匹配。

系统为用户和管理员提供历史记录功能,用户可根据内容查看具体的历史记录。历史记录分为招聘信息历史记录和招聘信息访问历史记录两种,用户和管理员可以删除历史记录。其中,招聘信息访问记录中,记录着用户点击访问的详细页面的记录。访问记录包括访问记录编号、招聘信息编号和访问的链接地址。

2 概要设计

2.1 模块设计

系统包括5个模块,注册登录、用户信息管理、信息采集、信息存储、信息分析。在数据流的驱动下,各个模块相互协调完成整个系统的功能。

2.1.1 信息采集模块

信息采集模块把实时采集的招聘信息结构化和去除重复信息。该模块分为输入和请求模块、网页下载模块、网页解析模块、数据格式化与输出模块。

其中,输入和请求模块负责从外部接收筛选后的信息,转换为初始请求信息,并传递给网页下载模块;网页下载模块根据请求信息获取要下载的网页,把网页信息传递给网页解析模块;网页解析模块对网页进行初步清洗,并对筛选的每一个网页进行解析;数据格式化与输出模块把数据格式化,设置缓存存储每一次抓取的数据,并把数据传递给数据存储模块,用于后续数据分析。

2.1.2 数据分析模块和信息存储模块

数据分析模块负责对招聘信息关键指标进行统计分析,并以图表的形式输出。其中,数据分析模块提取招聘信息关键指标,并把数据转换成图表,最后把图表二进制输出。数据返回到前端,解码为图片展示。

信息存储模块负责提取抓取的招聘信息,并存储到数据库中,系统自动为招聘信息分配ID,以便后续的查询与删除;信息存储模块会接受来自注册登录模块的注册信息,把用户的信息插入数据库。

2.1.3 注册登录模块和用户信息管理模块

注册登录模块,负责用户的注册和登录。用户信息管理模块可以让用户管理自己的信息,筛选出匹配的招聘信息;管理员可以管理用户的信息,删除历史招聘信息记录。

2.2 数据库设计

系统创建了用户信息表、招聘信息表、管理员信息表、历史记录表和简历投递表。系统中有3个实体,分别为用户、管理员和招聘信息。其中,用户可以抓取招聘信息,可以投递简历。系统E-R模型如图1所示。

图1 系统E-R模型

3 详细设计与实现

3.1 开发环境

系统使用的开发语言为Python,数据库管理软件为MySQL 5.7。

翻译与民族身份构建——以传教士傈僳族地区的翻译为例 ……………………………………… 蓝红军(5.62)

3.2 登录注册模块

游客输入注册信息,该模块检查输入的注册信息的用户名是否已经存在,不存在则注册成功,否则给出提示信息。

用户输入登录信息,该模块把登录信息与弱密码用户表中信息比对,若正确,进入系统,否则重新输入。

3.3 用户信息管理模块

在用户信息管理模块中,用户可以管理自己的信息,筛选出匹配的招聘信息。用户登录后进入个人中心,可输入自己的职位意向信息,查询匹配信息;用户可投递简历,简历投递表中会记录投递情况,用户后续可以查看投递情况;用户可输入职位意向信息,点击保存,数据库中的用户信息表中的相应信息也会发生改变。

3.4 信息采集模块

信息采集模块应用爬虫技术对拉勾网的职位信息进行采集,并对数据进行清洗、去重,得到结构一致的招聘信息列表,系统将记录采集的信息记录,用户可查看和删除已采集记录。

其中输入和请求模块负责接收模块外部传递进来的筛选信息,这些筛选信息包括意向城市和意向职位,该模块通过对拉勾网站的结构的拼接,并把其转换为初始请求信息,下载相应的网页,获得招聘信息的页数。

用户输入筛选条件,可以在常用城市选项框内选择意向城市;也可以选择点击更多城市,在按字母排列的详细城市列表中选择意向城市。

用户也可以选择意向职位,可以在选项框内选择热门职位;也可以选择点击更多城市按钮,在出现的职位选择弹出框中选择职位分类。

输入筛选条件后,点击搜索按钮,系统的信息采集模块会实时采集符合条件的招聘信息,并在招聘信息展示区域展示信息和条数。

信息采集模块采用了爬虫技术。在编写招聘信息页面爬取规则之前,应该对爬虫进行一些基本的配置,这是编写爬虫脚本的重要一步,设置情况如表1所示。

表1 爬虫的配置

拉勾网带有反爬虫机制,若缺少请求消息头的配置,网站会识别出是爬虫在访问,拒绝连接。通过配置User-Agent请求的身份,设置为“Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)”,网站会把爬虫的访问当作浏览器在访问。time_out是超时时间,系统设为10 s,下载一个网页,若10 s内还没有加载出来就放弃对这个网页的下载,防止因为个别网页出现问题导致整个系统不能运行。

拉勾网不是静态网页,爬取信息面临很多问题,如网页的触发状态更改,状态变化可能是由网页中的多种事件引起的。而点击不限于元素,JavaScript允许为几乎任何HTML元素添加点击处理程序。除了点击之外,其他事件可能导致状态发生变化[4]。为了达到所有可能的状态,抓取工具可以调用所有可能元素上的所有可能事件。但即便如此,这些元素的组合可能是进入下一个状态的关键。例如,某些应用程序在用户拿着键盘按键时有特殊状态,然后单击一个元素。抓取工具面临的挑战是尝试许多这样的组合,或者发现JavaScript收听哪些元素。在JavaScript中查找哪些元素具有侦听器是比较方便的。因此,处理招聘网站客户端是执行JavaScript代码,识别可被点击的元素,跟踪其变化过程,获取数据。

输入和请求模块负责接收模块外部传递进来的筛选信息,这些筛选信息包括意向城市和意向职位。该模块通过对拉勾网结构的研究得到该网页请求筛选信息后的链接地址规律,通过这个规律的拼接,得出符合筛选条件的招聘信息的链接地址,并把其转换为初始请求信息,把信息传递给网页下载模块。网页下载模块根据请求信息获取要下载的网页,把下载到的网页传递给网页解析模块对网页进行初步清洗,并对筛选的每一个网页进行解析。数据格式化与输出模块会把数据进行格式化,设置一个缓存存储每一次抓取的数据,用于数据分析模块的数据分析,并把数据插入数据库。

网址拼接为:'https://www.lagou.com/jobs/list_' + job + '?px=default&city=' + city + '#filterBox',其中city和job为用户选择的意向城市和意向职位。

获得地址后,用get()请求方式进入相关网页,get()的参数分别为拉钩网站的拼接地址、已经配置过的爬虫的请求头headers。

下载到连接的网页后,对网页的文本进行正则匹配,得到符合筛选条件的招聘信息的页数,正则表达式为:re.findall('totalNum">(.*?)<', html, re.S)[0],参数html为所下载网页的文本。这里进行一个判断,对不能匹配的网页设置可抓取的页数为0。

构造post数据,把获得的抓取页数传递进来,获得数据。这里进行一个判断,对于页面小于100的数据丢弃。

最后对数据进行解析和清洗,保留想要的招聘信息。

3.5 信息分析和存储模块

数据分析模块负责把信息采集模块采集到的招聘信息列表中的关键指标,学历、工作经验、公司大小和薪资范围进行统计分析,并以图表的形式输出。

信息存储模块把抓取的招聘信息和用户的信息以一定的结构插入数据库。

如图2所示为信息分析模块的界面展示,图中显示了北京的Java工作招聘信息的统计情况,499条招聘信息中,分别是对学历所占比例的统计、对工作经验的统计、对公司大小的统计和对薪资的统计。

通过图2的4幅图,可以对北京的Java工程师的就职要求有个大概的了解,本科学历,有3~5年工作经验者优先,月薪在9 000~25 000元。

由此可知,Java工程师岗位对学历要求不高,但要有一定的工作经验;收入较为可观,但长远发展前景一般。

4 结语

在对网络招聘信息抽取与分析系统进行需求分析,并对基本的爬虫技术和数据统计分析技术充分掌握的情况下,本文从用户和功能角度出发,对网络招聘信息抽取与分析系统进行了详细的设计,开发了小型基于Web的招聘数据采集与分析的系统。

系统为求职者解决了面对大量招聘信息时的窘境,实现了系统分析设计阶段要达到的基本功能,系统可以长时间正常运行,但仍有一些局限,有待后续完善和扩展:(1)系统信息的来源不够全面,后续将逐步添加热门招聘网站;(2)系统的个人信息匹配虽然直接、方便,有一定的实用性,但匹配过于单一,对目标不明确的用户不适用,应进一步添加些成熟的匹配算法供用户选择;(3)数据分析模块只对经验、薪资、学历、公司大小进行了简单的统计分析,后续可以增加更多指标的分析,也可以采用更高级的分析算法对数据进行精细分析。

图2 信息分析模块的分析结果

猜你喜欢

爬虫意向职位
领导职位≠领导力
利用网络爬虫技术验证房地产灰犀牛之说
供应趋紧,养殖户提价意向明显
基于Python的网络爬虫和反爬虫技术研究
东方留白意向在现代建筑设计的应用解析
利用爬虫技术的Geo-Gnutel la VANET流量采集
职位之谜与负谤之痛:柳治徵在东南大学的进退(1916—1925)
大数据环境下基于python的网络爬虫技术
批评话语分析中态度意向的邻近化语义构建
美最高就业率地铁圈