您的位置: 主页 > 人工智能机器人 > 欲望电梯 苏虹:网络爬虫在采集岗位招聘数据方面的应用实践

欲望电梯 苏虹:网络爬虫在采集岗位招聘数据方面的应用实践

时间: 2019-01-24阅读:

摘要: 现代教学设计理论认为优化教学过程,可以更好有效地达成教学目标,提高教学效率。文章阐述了在岗位分析系统中如何利用网络爬虫框架WebMagic不断地从网络采集岗位招聘数据,并保存到HBase数据库的一个过程。

关键词:大数据;岗位招聘;WebMagic

中图分类号:TP393 文献标识码:A 文章编号:1009-3044(2018)28-0008-02

大学生最关心的莫过于就业,高校的数字化建设日渐成熟,大数据在就业方面的应用正处在积极探索阶段。可以说数据采集是大数据应用开发的一个重要环节,如果没有数据,处理分析也就无从谈起。下面我们就来讨论下如何进行数据采集。

1 数据采集的来源与工具

就业信息主要来自网络和学校招聘,主要的岗位数据源于网络,需要有一套采集软件也就是爬虫。爬虫有很多,综合考虑WebMagic是一个无序配置、便于二次开发的爬虫框架,其提供简单灵活的API,只需要少量代码既可以实现。数据抓取时序图如图1所示。

Downloader负责从互联网上下载页面,以便后续处理。WebMagic默认使用Apache HttpClient作为下载工具。PageProcessor负责解析页面,抽取有用的信息,以及发现新的链接。WebMagic使用Jsoup作为HTML解析工具,并基于其开发了解析XPath的工具Xsoup。PageProcessor对于每个站点每个页面的解析都不一样,是需要使用者定制的部分。Scheduler负责调度,一般无须自己定制。Pipeline负责抽取结果的处理,包括计算、持久化到文件、数据库等。默认提供了输出到控制台和保存到文件两种结果处理方案。

2 如何实施爬取任务

(1) 解析岗位列表源代码

定制基于Java的WebMagic爬虫框架抓取招聘网站上根据岗位的关键词如“大数据”搜索出的岗位结果。列出的关于关键词搜索出来的列表就是爬虫抓取的起始页。可以通过添加后续链接的URL至爬取队列,使得爬虫按照要求一步步循环下去。这里需要添加的链接便是岗位的信息页,以及后续列表分页。分析页面中的相同项,可以发现所需要的URL是一个唯一的超链接,记下标签的样式名称交给Xpath识别,并添加至抓取列,实现代码如下。

select = page.getHtml().xpath(“//p[@class = ’t1’ ]”);

urls = select.links().all();

page.addTargetRequests(urls);

需要注意的是,要防止添加空白搜索结果页的链接,否则将会把整个招聘网站的岗位全部抓取下来。所以需要添加提出队列的保护机制,代码如下:

Iteratror it= urls.iterator();

while(it.hasNext()){

String x = it.next();

If(x.equals(“http://...”)){

it.remove();

}

}

page.addTargetRequest(urls);

(2) 解析崗位信息页面

需要爬取的岗位信息包括职位名称、发布时间、是否洗数据、编号、工作地点、工作经验、薪资、招聘人数、学历、岗位描述、职能类别、公司名称、公司性质、公司行业、公司规模等。由于格式基本差不多可以json配置项的方式将某个点的正则保存在一起,方便调用。WebMagic框架可以根据获取的正则定位相关的内容。具体代码如下:

page.putField("jobname", page.getHtml().xpath("//div[@class='cn']/h1/text()").toString());

page.putField("name", page.getHtml().xpath("//p[@class='cname']/a/text()").toString());

(3) 根据条件保存抓取到的信息

根据条件筛选岗位信息,比如已经列出的一些培训机构的“公司黑名单”,保存在数组中,那么就可以使用简单的if语句来判断。对于发布日期,仅需要保留当天或本周发布的招聘信息。筛选完成便可以将抓取内容选择性的保存到本地的某个文件中。也可以将结果保存到HDFS和HBase数据库中,这样更有助于后面的大数据处理。

(4) 运行主程序

WebMagic的核心组件为PageProcessor与Pipeline。用户可以自己定制这两个组件,而调用这两个核心组件是通过Spider类,其简单的代码如下:

Spider.create(new CrawlJob())

.addUrl(URL_START)

.addPipleline(new PipelineJob()).thread(5).run();

可以借助系统的定时服务来实现程序的定时爬取功能使用代码如下:

public ServiceState start() {

initializer = new InitializeService(this);

initializer.start();

services.add(initializer);

Service jobAnalyzer = new JobAnalysisService(this, initializer);

jobAnalyzer.start();

return ServiceState.STATE_RUNNING;

}

3 采集分析系统的实现

系统采用了服务端和客户端的方式分离了数据分析与应用展现,使得服务端系统可以实时采集数据,客户端可以灵活应对数据分析需求变化提供不同的数据表现形式。岗位分析系统分为两大子系统:

(1)在服务子系统及服务端,定时执行包括数据采集、数据清洗和数据分析的任务。Server端中的collect服务,从岗位列表网站(xueqing-web)之中爬取数据保存至HBase,再由server 中的clean服务将无用信息进行删除,之后由server 中的cluster服务将数据聚类保存至MongoDB中。(2)大数据客户端系统client将MongoDB中的数据通过ECharts和D3可视化展示在页面之中。

4 技术难点

(1)有些网络服务器反感爬虫,会对请求头做个简单判别,直接拒绝那些明显是由自动化程序发起的请求。就例如使用的默认请求头,浏览器访问时User-Agent值。为了避免自动化程序被拒绝,在请求时可以修改请求头,让自动化程序更像一个浏览器。

(2)在网页爬取时,可能会遇到内部网络不允许访问外网的情况,这时就需要设置代理IP: requests.get("https://guanjia.qq.com", proxies={“http”:”127.0.0.1:8087”})

(3)針对各网站特点给出不同的爬虫方式,可以应对大量场景的数据爬取。在实际工作中使用频率最多还是“静态页面”、“javascript动态页面”这两种。当然,若是页面包含验证码,那就需要结合图像识别工具做些事情了,这种情况相对也比较难处理,图像识别准确率受到图片内容影响。

5 结束语

网络爬虫在采集岗位数据方面发挥了重要作用,为将大数据技术应用在求职招聘方面提供了数据保证。由于网络爬虫需要不断的采集数据,而网站可能也在不断地变化,所以实际运用中需要灵活配置爬取策略避免遗漏某些网页,也要减小对网站服务器的负担。webmagic提供的xpath解析工具,不支持xpath2.0的一些高级特性,比如:查找父节点之类,解析时可以考虑引入其他一些第三方开源库,比如dom4j来处理。

参考文献:

[1] 张敏,张阳. 基于大数据的民族高校学生资助工作方案研究与设计[J]. 西南民族大学学报(自然科学版). 2016(01).

[2] 陆嘉恒.Hadoop实战[M]. 机械工业出版社,2012.

[3] 胡水星.大数据及其关键技术的教育应用实证分析[J].远程教育杂志, 2015, 33(5):46-53.

[4] 孙洪涛,郑勤华.教育大数据的核心技术、应用现状与发展趋势[J].远程教育杂志,2016(5) :41-49.

【通联编辑:代影】

上一篇:条理与反复:基于海州区智慧城市中心平台整合多个系统平台的实践应用
下一篇:没有了

相关阅读