陳免慧 沈煒
關(guān)鍵詞:數(shù)據(jù)采集;HtmlUnit;Ajax;招聘系統(tǒng)
中圖分類號:TP393 文獻(xiàn)標(biāo)識碼:A 文章編號:1009-3044(2015)20-0061-03
Application of HtmlUnit in Online Recruitment System
CHEN Mian-hui, SHEN Wei
(The School of Information in Zhejiang Sci-Tech university, Hangzhou 310018, China)
Key words: data-collectiong; HtmlUnit; Ajax; recruitment system
招聘這一環(huán)節(jié)被視為整個企業(yè)人力資源管理中的重要組成部分。但是,多數(shù)人卻任沒有看到這一工作之重要,并沒有將招聘工作擺在議程上,使得企業(yè)的人力資源管理中出現(xiàn)了“瓶頸”問題,伴隨著計算機(jī)和信息時代的發(fā)展,在線招聘系統(tǒng)的開發(fā)可以有效地幫助企業(yè)解決這一問題。
現(xiàn)今社會,隨著互聯(lián)網(wǎng)發(fā)展,信息時代也隨之到來。招聘形式也由從前查閱報紙,到后來的跑招聘會,再到現(xiàn)在網(wǎng)絡(luò)招聘的普及,求職者可以很方便地在求職網(wǎng)站中搜尋到心滿意足的職位。但是,另一方面,也導(dǎo)致了大量的招聘網(wǎng)站涌現(xiàn),這些招聘渠道缺乏統(tǒng)一的管理,不僅使求職者眼花繚亂,不知使用哪個網(wǎng)站,更使企業(yè)在發(fā)布職位的時候,需要多個渠道發(fā)布同一條職位。本文采用htmlunit技術(shù),實現(xiàn)了統(tǒng)一發(fā)布職位到其他各個渠道,并且這些渠道可以手動添加;與此同時,此招聘系統(tǒng)實現(xiàn)了從其他各個招聘渠道抓取相應(yīng)的職位和候選人。
1 互聯(lián)網(wǎng)數(shù)據(jù)采集所面臨的問題
一般前臺頁面都是用HTML語言編寫,我們知道,傳統(tǒng)的HttpClient方法可以用在一般的數(shù)據(jù)獲取中,但同時存在著不足:
1)在獲取Ajax異步加載的頁面,比如新浪微博、淘寶等網(wǎng)站大量使用Ajax異步獲
取數(shù)據(jù)的技術(shù)。
2)某些網(wǎng)站需要提交表單或者是需要登錄后才能夠獲取信息,比如搜索引擎需要提交表單后才能獲取。
3)網(wǎng)頁信息抽取大多使用正則表達(dá)式,對訪問的效率與靈活性都不高。
HtmlUnit是個純Java的無界面的瀏覽器,采用了Rhinojs引擎,可以對js以及主流的js框架有很好的支持。還可通過executeJavascript函數(shù)執(zhí)行js代碼。
2 HtmlUnit在招聘系統(tǒng)中的應(yīng)用
2.1 獲取Ajax異步加載數(shù)據(jù)的頁面
HtmlUnit中的WebClient.getOptions().setJavaScriptEnabled()函數(shù)提供了對解析頁面js腳本的支持,WebClient.setAjaxController()函數(shù)提供了對解析頁面Ajax動態(tài)加載數(shù)據(jù)的支持,所以HtmlUnit在解析網(wǎng)頁中動態(tài)加載的數(shù)據(jù),有很好的應(yīng)用。
2.2 獲取提交登錄后的頁面數(shù)據(jù)
有些情況需提交表單后才能獲取數(shù)據(jù),比如搜索引擎,而某些情況則需登錄后才能獲取網(wǎng)頁的數(shù)據(jù),這些情況都是要向服務(wù)器提交數(shù)據(jù)來進(jìn)行交互操作。一般的做法是提交HTTP協(xié)議中的Get方法,來提交自定義的URL字符串,從而登錄,又或者是手動登錄獲取對應(yīng)的cookie和session,用這些cookie和session來進(jìn)行請求。
2.3 頁面數(shù)據(jù)提取
HtmlUnit可以用正則來獲取網(wǎng)頁內(nèi)容,使用Xpath技術(shù)來獲取到提交的按鈕和圖片。HtmlUnit獲取對象的方法如下:
用Xpath方法獲取對象,形式為:getFirstByXPath(“//input[@type=submit]”);
用Id方法獲取對象,形式為:getElementById(String);
用Name方法獲取對象,形式為:getElementByName(String);
用Key方法獲取對象,形式為:getElementsByAccessKey(char);
用屬性獲取對象,形式為:getElementsByAttribute(String,String,String);
用標(biāo)簽名獲取對象,形式為:getElemenstByTagName(String);
HtmlUnit通過采用這些方法能夠輕易獲取到HTML對象,并將這些對象轉(zhuǎn)變成可點擊的鏈接、按鈕和可操作的文本框等HTML的元素,再進(jìn)行模擬操作,點擊、賦值等修改屬性的操作。
3 招聘系統(tǒng)的總體設(shè)計
3.1 系統(tǒng)實現(xiàn)目標(biāo)
隨著招聘渠道的不斷增加,但這些渠道功能又大體相似,使得企業(yè)操作不是很方便,現(xiàn)存的招聘渠道已滿足不了企業(yè)的需求。
本招聘系統(tǒng)要實現(xiàn)一個能夠方便各企業(yè)和求職者,為他們建立一個較好的交流平臺。通過此系統(tǒng)能夠?qū)崿F(xiàn)與其他渠道的友好連接,只要在此平臺中綁定帳號,就可以很輕松地實現(xiàn)一鍵發(fā)布職位到其他各個渠道,并能夠從其他各個渠道抓取候選人和職位信息,并在此系統(tǒng)中有所顯示。
3.2 系統(tǒng)業(yè)務(wù)分析
本系統(tǒng)主要針對企業(yè)HR,大體上分為企業(yè)版和個人版;使用的角色有:系統(tǒng)管理員、招聘經(jīng)理、招聘者和用戶。不同的角色有不同的權(quán)限。
下圖1主要描述了此招聘系統(tǒng)用戶登錄系統(tǒng)之后,可以創(chuàng)建職位,首次綁定渠道帳號,并一鍵發(fā)布到其他各個招聘渠道,也可以查閱相關(guān)的候選人信息并進(jìn)行操作的業(yè)務(wù)流程圖。