网络爬虫在采集岗位招聘数据方面的应用实践

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

龙源期刊网网络爬虫在采集岗位招聘数据方面的应用实践作者:汤义好来源:《电脑知识与技术》2018年第28期摘要:现代教学设计理论认为优化教学过程,可以更好有效地达成教学目标,提高教学效率。文章阐述了在岗位分析系统中如何利用网络爬虫框架WebMagic不断地从网络采集岗位招聘数据,并保存到HBase数据库的一个过程。关键词:大数据;岗位招聘;WebMagic中图分类号:TP393文献标识码:A文章编号:1009-3044(2018)28-0008-02大学生最关心的莫过于就业,高校的数字化建设日渐成熟,大数据在就业方面的应用正处在积极探索阶段。可以说数据采集是大数据应用开发的一个重要环节,如果没有数据,处理分析也就无从谈起。下面我们就来讨论下如何进行数据采集。1数据采集的来源与工具就业信息主要来自网络和学校招聘,主要的岗位数据源于网络,需要有一套采集软件也就是爬虫。爬虫有很多,综合考虑WebMagic是一个无序配置、便于二次开发的爬虫框架,其提供简单灵活的API,只需要少量代码既可以实现。数据抓取时序图如图1所示。Downloader负责从互联网上下载页面,以便后续处理。WebMagic默认使用ApacheHttpClient作为下载工具。PageProcessor负责解析页面,抽取有用的信息,以及发现新的链接。WebMagic使用Jsoup作为HTML解析工具,并基于其开发了解析XPath的工具Xsoup。PageProcessor对于每个站点每个页面的解析都不一样,是需要使用者定制的部分。Scheduler负责调度,一般无须自己定制。Pipeline负责抽取结果的处理,包括计算、持久化到文件、数据库等。默认提供了输出到控制台和保存到文件两种结果处理方案。2如何实施爬取任务(1)解析岗位列表源代码定制基于Java的WebMagic爬虫框架抓取招聘网站上根据岗位的关键词如“大数据”搜索出的岗位结果。列出的关于关键词搜索出来的列表就是爬虫抓取的起始页。可以通过添加后续链接的URL至爬取队列,使得爬虫按照要求一步步循环下去。这里需要添加的链接便是岗位的信息页,以及后续列表分页。分析页面中的相同项,可以发现所需要的URL是一个唯一的超链接,记下标签的样式名称交给Xpath识别,并添加至抓取列,实现代码如下。龙源期刊网=page.getHtml().xpath(“//p[@class=’t1’]”);urls=select.links().all();page.addTargetRequests(urls);需要注意的是,要防止添加空白搜索结果页的链接,否则将会把整个招聘网站的岗位全部抓取下来。所以需要添加提出队列的保护机制,代码如下:Iteratrorit=urls.iterator();while(it.hasNext()){Stringx=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(newCrawlJob()).addUrl(URL_START).addPipleline(newPipelineJob()).thread(5).run();可以借助系统的定时服务来实现程序的定时爬取功能使用代码如下:publicServiceStatestart(){initializer=newInitializeService(this);initializer.start();services.add(initializer);ServicejobAnalyzer=newJobAnalysisService(this,initializer);jobAnalyzer.start();returnServiceState.STATE_RUNNING;}3采集分析系统的实现系统采用了服务端和客户端的方式分离了数据分析与应用展现,使得服务端系统可以实时采集数据,客户端可以灵活应对数据分析需求变化提供不同的数据表现形式。岗位分析系统分为两大子系统:(1)在服务子系统及服务端,定时执行包括数据采集、数据清洗和数据分析的任务。Server端中的collect服务,从岗位列表网站(xueqing-web)之中爬取数据保存至HBase,再由server中的clean服务将无用信息进行删除,之后由server中的cluster服务将数据聚类保存至龙源期刊网中。(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.【通联编辑:代影】

1 / 4
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功