招聘主题爬虫的设计和应用
2018-12-17邢黎吴茂念
邢黎 吴茂念
摘要: 随着网络技术的发展,面向垂直搜索引擎的主题爬虫因其效率高,搜索结果完备可靠的优势,成为专业化信息搜集的有效手段,这使得主题爬虫在招聘信息的采集方面意义非凡。层次化的爬行策略和网页内容分析算法组成了主题爬虫的基本结构。仅仅搜集数据不够直观,对采集的数据分词并加权并融入搜索引擎使招聘类主题爬虫能快速搜集完备的,可靠的,准确的招聘信息 ,并按网页价值为信息排序,提高实用性和针对性,进而在一定程度上缓解就业压力。
关键词:招聘信息;主题网络爬虫;搜索策略;搜索引擎;
中图分类号:TP393 文献标识码:A 文章编号:1009-3044(2018)25-0073-03
Design and Application of Recruitment Topic Crawler
XING Li, WU Mao-nian
(School of Information Engineering, Huzhou 311100,China)
Abstract: With the development of network technology, the theme crawler oriented to vertical search engine has become an effective means for the collection of specialized information because of its high efficiency and complete and reliable search results. This makes the subject crawler remarkable in the acquisition of recruitment information. Hierarchical crawling strategy and web content analysis algorithm constitute the basic structure of the theme crawler. Only collecting data is not intuitive, the collection of data segmentation and weighting and integration into the search engine can quickly collect complete, reliable, accurate recruitment information, and order information according to the value of the web, improve practicality and pertinence, and then alleviate employment pressure to a certain extent.
Key words:recruitment information: topic web crawler; fish search strategy; search engine
随着就业压力日渐增加,搜集并整理出完备的招聘信息可以有效缓解社会压力,主题爬虫在数据搜集方面的专业性完美地适应了这种情况。设计高效的招聘信息主题爬虫无疑具有相当重要的研究价值。
1 就业形势与搜索引擎
近年来,高校毕业生就业难一直是重点话题,随着教育普及程度和教育水平的提高,我国历年大学毕业生人数正在以一个极其高的速度增长,每年都有几百万的大学生走出校门,残酷的竞争下,找不到合适工作的人比比皆是。同时在经济全球化的影响下,决定经济稳定的因素日益增多,国内经济形势严峻,经济增速下滑,严峻的经济条件淘汰了大量的企业,同时也带走了大量的工作岗位。又加重了广大毕业生的就业压力。招聘主题爬虫旨在帮助求职者快速获取各类招聘信息,進而找到合适的工作,减轻社会压力。
目前,市面上并不缺少有名的招聘网站,如51job,前程无忧等。但是也存在一些排名靠后或者零散的招聘网页,招聘主题爬虫把招聘作为关键字在网络中爬取分布广泛的招聘信息,并加以整合,形成具有良好完备性,时效性,准确性的招聘信息集合。
2主题网络爬虫的定义和工作原理
网络爬虫实质上是一种自动抓取网络资源的脚本, 网络爬虫按照系统结构和实现技术,大致可以分为以下几种类型:通用网络爬虫(GeneralPurposeWebCrawler)、聚焦网络爬虫(FocusedWebCrawler)、增量式网络爬虫(IncrementalWebCrawler)、深层网络爬虫(DeepWebCrawler)。
聚焦型网络爬虫又称主题爬虫,这种爬虫比起传统的搜索引擎在信息搜集上具有明显的优势。传统搜索引擎往往先大范围抓取万维网上的信息,然后为这些信息建立索引并存入数据库,最后通过关键字检索完成数据查询。这种方式对硬件的需求很高,搜集大量数据需要很大的存储空间,使得系统的搜索功能在不是很精准的同时还要花费大量的时间,导致资源的时效性降低。而主题爬虫只关注与主题相关的网络资源能够增加爬取速度,节省带宽,减轻存储压力,缩短数据更新周期,进而保证了相当不错的时效性,实用性,获得的链接一般不会是过期的。
一个完整的主题爬虫包括分类模块,提取模块,爬取模块三部分。分类模块又称分类器,负责利用网页的各项参数计算出网页的切题度。提取模块用于规定抓取页面的顺序,体现页面抓取的方向。爬取模块是实施网页抓取的主体,前二者的作用是规范爬取规则使爬取模块能够下载符合主题的网页。
主题爬虫在工作的过程中,一般会把与主题相关的网页整合起来作为种子网页集,也可以用百度等大型搜索引擎搜索关键字获取抓取种子网页集。
然后从种子网页开始,将待处理的链接逐个入队并确定优先级,尽可能下载跟主题相关的网页,减少无关网页的下载带来的消耗,进而提高整体的工作效率。主题爬虫在获取资源的过程中需要进行数据解析,因此会产生了大量的等待时间,普通单发操作的主题爬虫会在这方面浪费大量时间。而采用多进程,多线程或者协程的并发主题爬虫能够大大提高工作效率。
2.1爬行策略
主题爬虫对待网页不像普通爬虫“来者不拒”,在普通的爬行策略的基础上,主题爬虫引入分词系统,词向量模型,web深度挖掘等技术帮助建立体系的主题识别能力,并改良爬行策略提高对主题相关性的区分度,快速搜索贴近主题的网页。
鱼群搜索算法(fish search)[1]是一种基于文字内容的启发式算法,这种方法模拟一个鱼群通过觅食不断壮大,最后由于得不到食物而消亡的过程。映射到网络爬虫中,种子网页集就是最开始的鱼群,整个万维网就相当于是充满食物的海洋,这些鱼必须能够从中找到食物才能繁衍下一代。直到再也找不到食物,鱼群就会灭亡。
这种算法要求鱼群至少要能粗略的判断网页是否切题,即在主题相关性判断上要有科学的方法。 DeBra PME等人提出通过比较已下载网页文字内容与主题是否匹配的二元分类方法,如果网页内容与关键字匹配则相关性标记为1,否则标记为0。
鲨鱼搜索策略(shark search)算法在鱼群搜索策略(fish search)的基础上引入相似度度量方法,取值为[0,1];这种算法在计量页面内容主题相关性的基础上把锚文本内容,链接内容及父页面( 指向包含链接页面的 Web页面)三个参数的主题相关性都拿来做待下载网页主题相关性的计量标准。把那些不符合条件的超链接从等待队列中删除。
Menczer F等提出的“最优最先”(best first)搜索策略,该算法在鲨鱼算法的基础上计算向量空间相关性,把相关性最好的网页放入下载队列,由于这种算法的于贪婪性,实际应用中如果遇到存在于主题相关度低的网页之后相关度高的网页,这些网页将会被遗漏。
基于文字内容的启发式方法只考虑页面文字内容,忽视了超链接图的影响。而基于超链接图的评价方法,如PageRank算法和HITS算法则是通过分析超链接图,按照超链接的点击次数定义超链接的权威度,进而考虑是否下载页面,HITS算法同时也考虑文本内容的权威度,但是在效果上并没有明显强于PageRank算法。有效的主题爬虫算法除了传统的启发式方法还有与神经网络结合的经验学习方法,基于语义和概念的分析方法等。
2.2一般来说,要活的与主题相关的网页有以下四种思路:
1)如果搜索主题的相关网页不多,比如主题为某个网站数量有限的行业,进行行业搜索通常只需根据这些网站进行定制抓取。一般这种网站网页结构大部分都相同,所以只要分析好网页源代码就能非常快速地获取整个网站中有用的信息。
2)网页标题、正文、超链接中往往包含与网页内容有关联的关键词,这些关键词被称为导向词,通过对文本进行分词处理列出词根,给不同的词根附加不同的权重,达到按优先级访问网页的目的。
3)这种算法需要先下载网页才能对URL进行评分并且进入等待队列,等下一次处理到这个URL时还需要再次下载页面,存在严重的资源浪费。这种情况下可以采取按经验设定阈值的方法限制对评分低的网页的下载,并且先不提取达到阈值的页面的URL,等到扩展到的时候再进行评分。对网页链接进行评分(这种方法只是根据当前爬虫爬取的信息对当前的URL进行评分,而不涉及当前网页的内容)也可以 对链接描述文本进行分析。
3 招聘信息主题网络爬虫的前景和研究方向
3.1前景
就业是社会发展的一大难题,随着人口基数的扩增,高等教育的普化。将会有更多的毕业生面临“失业”的风险,在这样的社会条件下,一个专门服务于学生群体的招聘信息网络爬虫或许可以作为一种帮助调节就业的網络手段,产生比招聘网站更加积极的影响。
3.2主题爬虫的研究方向
主题爬虫的作为一种信息采集的手段,信息采集的效率是评判一个爬虫好坏的标准。简单的爬虫只能抓取静态网页,无法应对一些数据量巨大的动态网站,比如论坛网站,也无法抓取需要注册登录才能访问的网页。因此爬虫必须增强对不同类型网站的适应性以及爬虫框架的伸展性,进而灵活的应对各种网站。要提高主题爬虫的爬取效率,重点在于提高查全率和查准率,这方面学要等待算法的提高。
实际上,为了防止爬虫的高频访问拖垮服务器,很多网站都有针对爬虫的反爬虫机制,能够阻碍那些绕不开检查系统的爬虫程序。然而这些保护措施只针对个别爬虫的运行机制,只要改进运行方式就能突破封锁,比如伪装成浏览器,使用不能被检测出的代理服务器开更多IP,每个IP下运行多个爬虫程序,实现爬虫的高并发。
一个信息爆炸的时代,也是网络爬虫展现价值的时代。网络爬虫高效的信息收集能力确实推动了很多行业的发展,比如获取用户浏览记录进行信息推送尤其是主题爬虫,。但是爬虫的运行方式导致它在很多方面都存在局限性。就拿主题爬虫为例,爬取门户网站时,往往需要根据经验选用爬行算法,在万维网上大范围爬取信息是很多时候采用的算法都不太适合一些网页,导致查全率和查准率下降。如果主题爬虫拥有一套自适应的法则使它遇到不同的网页时能够智能的选取最合适的算法,将会大大提高系统效率。另一方面,主题爬虫开始工作需要一组URL种子集,在实际应用中,构建URL种子集往往需要人工介入来保证准确性,增加了不少人力资源的消耗,如何自动高效的构建URL种子集是主题爬虫需要克服的又一难关。除此之外,爬虫应该具备一定的安全意识,在高频访问的同时检测服务器状态,如果服务器非常繁忙应该适当降低访问频率,防止网站后台崩溃。
4 招聘信息主题爬虫的设计
招聘主题爬虫应该包括爬虫(crawler)和查询(search)两部分,爬虫部分按照要求抓取与招聘相关的网页存入数据库并建立索引,查询部分匹配索引和用户输入的关键字从数据库中拿出符合条件的结果。主题爬虫URL处理流程如图3-1.
4.1工作流程
1)设定爬取深度,建立数据库(DB),先存储初始网页链接和索引(种子网页集),笔者选用51job和前程无忧的湖州地区招聘页面。
如果数据量不是很大使用Python的Models库更加方便,这个库的优势在于它将每一条数据都以近似类的形式存储,操作起来更加方便。
2)爬虫从数据库中拿出链接开始爬取种子网页,接下来主题爬虫需要根据算法计算网页相关性并将符合条件的超链接存入数据库且建立索引。普通爬虫无条件抓取下一层网页。笔者选用的是鱼群搜索策略,因为第一批网页为种子网页,所以相关性默认为1,下载全部子网页。
3)将数据库中还未抓取过得网页链接入队,利用鱼群搜索策略如果当前网页的内容与主题不相关,则相关性标记为0,当前网页的子网页全部死亡,当前网页链接出队。
4)反复执行3操作,直到子网页全部死亡或者达到要求的爬取深度。
5)制作一个精简的网页作为爬虫界面,使用Python 的Django 库和数据库查询语句完成招聘信息的查询和显示。
5结束语
本文介绍了当前的就业形势与招聘类主题爬虫的优势,简单说明了主题网络爬虫的工作原理和简单搜索策略,列出了招聘信息主题网络爬虫的开发步骤。最后在此基础上提出了对未来主题网络爬虫发展的看法。主题爬虫的特点是信息搜索的专业化,与人才招聘结合可以成为促进就业的一款非常不错的工具。
主题爬虫作为一种快速专业的信息搜集手段,它在数据存储,相关度判别和运行速度上还有极大的发展空间。近年来,人工智能的快速发展,未来很可能诞生大大提高主题网络爬虫精准性的自动学习算法,从而能够设计一款非常适合学生择业的主题爬虫,在一定程度上缓解就业压力。
参考文献:
[1] 于娟,刘强.主题网络爬虫研究综述[J].计算机工程与科学,2015,37(2):231-237.
[2] 李欢.面向工程技术的主题爬虫的设计与实现[D].武汉:华中科技大学,2016.
[3] 刘清.主题网络爬虫抓取策略的研究[J].科技矿场,2017(4):43-46
[4] 孟竹.词向量语义模型研究及在主题爬虫系统中的运用[D].北京:中国地质大学,2017.
[5] Yajun Du, Wenjun Liu, Xianjing Lv, et al. An improved focused crawler based on Semantic Similarity Vector Spac[J]. Applied Soft Computing,2015:392-407.
[6] 程元堃,廖聞剑,程光.词向量聚类加权Shark-Search的主题爬虫策略研究[J]. 计算机与数字工程,2018(1):144-148.
[7] 魏宁洲. 面向垂直搜索的主题爬虫爬行策略的研究与实现[D]. 北京:北京邮电大学,2015.
[8] 陈云,郑东亮. 2016年就业形势分析及发展趋势[J]. 中国劳动,2017(2):4-12.
[9] Punam Bedi,Anjali Thukral, Hema Banati,et al. A Multi-Threaded Semantic Focused Crawler[J].计算机科学技术学报:英文版,2012(6):1233-1242.
【通联编辑:王力】