許丹亞,賈雨瀟
(1.鄭州鐵路局信息技術所,河南 鄭州 450000;2.中國民生銀行信用卡中心,北京 100071)
當前招聘的形式眾多,其中,網絡招聘覆蓋的區域廣泛,信息量豐富,求職者可隨時獲得大量的空缺職位信息。國內現有的網絡招聘平臺較為復雜,發布的招聘信息量巨大。求職信息列表冗長,篩選條件的粒度難以界定,求職者可能錯過很多求職機會。
因此,為了方便個體求職者,本文開發了基于Web的網絡招聘數據采集與分析系統。系統要解決的問題是網絡招聘信息平臺眾多,招聘信息量巨大,大量耗費求職者的精力和耐性,而現有的招聘信息分析工具應用不便,不能直觀了解某一領域的人才需求現狀[1-2]。
系統對網站的招聘信息加以采集、分析并且以快速的、圖形化的形式進行統計,為用戶提供提高招聘信息檢索效率的工具。使用網絡招聘信息抽取與分析系統,可以增強用戶的信息獲取、分析和辨別能力,提高求職效率。
系統的使用者分為未注冊用戶(游客)、用戶和管理員3類,系統為不同的使用者提供不同的服務。本文運用UML(統一建模語言)的用例圖和活動圖進行需求與功能分析[3]。
游客使用系統的過程為,根據城市列表和職位列表,游客篩選招聘信息,系統展示職位信息列表,游客可點擊職位列表中的地址,到某招聘網站上查看招聘信息詳情;系統分析查詢到的招聘信息,展示分析圖表。游客注冊后可以享受更多功能,如招聘信息分析、查看歷史記錄、匹配職位信息等。
其中,招聘信息為實時采集。信息列表中每條招聘信息包括:招聘信息編號、職位名稱、公司類型、薪資、學歷和詳細的訪問地址等。通過點擊系統抓取的鏈接地址,可訪問采集數據的原始鏈接。
登錄后的用戶使用的功能包括登錄和注冊、查詢招聘信息、查看招聘信息分析結果和匹配招聘信息。
另外,系統為管理員展示用戶信息列表,管理員可以刪除用戶的信息和所有的歷史記錄。
系統基本功能包括根據搜索招聘信息、匹配招聘信息和管理歷史記錄。
系統為用戶和游客提供搜索招聘信息功能,該功能根據輸入的篩選信息,實時采集信息并展示和分析,也可以訪問某一條招聘信息的鏈接。
系統為用戶提供匹配招聘信息功能,該功能根據輸入的意向信息,在用戶搜索的招聘信息里為用戶匹配信息并展示,用戶可以查看匹配信息列表,也可以修改意向信息,進行再次匹配。
系統為用戶和管理員提供歷史記錄功能,用戶可根據內容查看具體的歷史記錄。歷史記錄分為招聘信息歷史記錄和招聘信息訪問歷史記錄兩種,用戶和管理員可以刪除歷史記錄。其中,招聘信息訪問記錄中,記錄著用戶點擊訪問的詳細頁面的記錄。訪問記錄包括訪問記錄編號、招聘信息編號和訪問的鏈接地址。
系統包括5個模塊,注冊登錄、用戶信息管理、信息采集、信息存儲、信息分析。在數據流的驅動下,各個模塊相互協調完成整個系統的功能。
2.1.1 信息采集模塊
信息采集模塊把實時采集的招聘信息結構化和去除重復信息。該模塊分為輸入和請求模塊、網頁下載模塊、網頁解析模塊、數據格式化與輸出模塊。
其中,輸入和請求模塊負責從外部接收篩選后的信息,轉換為初始請求信息,并傳遞給網頁下載模塊;網頁下載模塊根據請求信息獲取要下載的網頁,把網頁信息傳遞給網頁解析模塊;網頁解析模塊對網頁進行初步清洗,并對篩選的每一個網頁進行解析;數據格式化與輸出模塊把數據格式化,設置緩存存儲每一次抓取的數據,并把數據傳遞給數據存儲模塊,用于后續數據分析。
2.1.2 數據分析模塊和信息存儲模塊
數據分析模塊負責對招聘信息關鍵指標進行統計分析,并以圖表的形式輸出。其中,數據分析模塊提取招聘信息關鍵指標,并把數據轉換成圖表,最后把圖表二進制輸出。數據返回到前端,解碼為圖片展示。
信息存儲模塊負責提取抓取的招聘信息,并存儲到數據庫中,系統自動為招聘信息分配ID,以便后續的查詢與刪除;信息存儲模塊會接受來自注冊登錄模塊的注冊信息,把用戶的信息插入數據庫。
2.1.3 注冊登錄模塊和用戶信息管理模塊
注冊登錄模塊,負責用戶的注冊和登錄。用戶信息管理模塊可以讓用戶管理自己的信息,篩選出匹配的招聘信息;管理員可以管理用戶的信息,刪除歷史招聘信息記錄。
系統創建了用戶信息表、招聘信息表、管理員信息表、歷史記錄表和簡歷投遞表。系統中有3個實體,分別為用戶、管理員和招聘信息。其中,用戶可以抓取招聘信息,可以投遞簡歷。系統E-R模型如圖1所示。

圖1 系統E-R模型
系統使用的開發語言為Python,數據庫管理軟件為MySQL 5.7。
翻譯與民族身份構建——以傳教士傈僳族地區的翻譯為例 ……………………………………… 藍紅軍(5.62)
游客輸入注冊信息,該模塊檢查輸入的注冊信息的用戶名是否已經存在,不存在則注冊成功,否則給出提示信息。
用戶輸入登錄信息,該模塊把登錄信息與弱密碼用戶表中信息比對,若正確,進入系統,否則重新輸入。
在用戶信息管理模塊中,用戶可以管理自己的信息,篩選出匹配的招聘信息。用戶登錄后進入個人中心,可輸入自己的職位意向信息,查詢匹配信息;用戶可投遞簡歷,簡歷投遞表中會記錄投遞情況,用戶后續可以查看投遞情況;用戶可輸入職位意向信息,點擊保存,數據庫中的用戶信息表中的相應信息也會發生改變。
信息采集模塊應用爬蟲技術對拉勾網的職位信息進行采集,并對數據進行清洗、去重,得到結構一致的招聘信息列表,系統將記錄采集的信息記錄,用戶可查看和刪除已采集記錄。
其中輸入和請求模塊負責接收模塊外部傳遞進來的篩選信息,這些篩選信息包括意向城市和意向職位,該模塊通過對拉勾網站的結構的拼接,并把其轉換為初始請求信息,下載相應的網頁,獲得招聘信息的頁數。
用戶輸入篩選條件,可以在常用城市選項框內選擇意向城市;也可以選擇點擊更多城市,在按字母排列的詳細城市列表中選擇意向城市。
用戶也可以選擇意向職位,可以在選項框內選擇熱門職位;也可以選擇點擊更多城市按鈕,在出現的職位選擇彈出框中選擇職位分類。
輸入篩選條件后,點擊搜索按鈕,系統的信息采集模塊會實時采集符合條件的招聘信息,并在招聘信息展示區域展示信息和條數。
信息采集模塊采用了爬蟲技術。在編寫招聘信息頁面爬取規則之前,應該對爬蟲進行一些基本的配置,這是編寫爬蟲腳本的重要一步,設置情況如表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的數據丟棄。
最后對數據進行解析和清洗,保留想要的招聘信息。
數據分析模塊負責把信息采集模塊采集到的招聘信息列表中的關鍵指標,學歷、工作經驗、公司大小和薪資范圍進行統計分析,并以圖表的形式輸出。
信息存儲模塊把抓取的招聘信息和用戶的信息以一定的結構插入數據庫。
如圖2所示為信息分析模塊的界面展示,圖中顯示了北京的Java工作招聘信息的統計情況,499條招聘信息中,分別是對學歷所占比例的統計、對工作經驗的統計、對公司大小的統計和對薪資的統計。
通過圖2的4幅圖,可以對北京的Java工程師的就職要求有個大概的了解,本科學歷,有3~5年工作經驗者優先,月薪在9 000~25 000元。
由此可知,Java工程師崗位對學歷要求不高,但要有一定的工作經驗;收入較為可觀,但長遠發展前景一般。
在對網絡招聘信息抽取與分析系統進行需求分析,并對基本的爬蟲技術和數據統計分析技術充分掌握的情況下,本文從用戶和功能角度出發,對網絡招聘信息抽取與分析系統進行了詳細的設計,開發了小型基于Web的招聘數據采集與分析的系統。
系統為求職者解決了面對大量招聘信息時的窘境,實現了系統分析設計階段要達到的基本功能,系統可以長時間正常運行,但仍有一些局限,有待后續完善和擴展:(1)系統信息的來源不夠全面,后續將逐步添加熱門招聘網站;(2)系統的個人信息匹配雖然直接、方便,有一定的實用性,但匹配過于單一,對目標不明確的用戶不適用,應進一步添加些成熟的匹配算法供用戶選擇;(3)數據分析模塊只對經驗、薪資、學歷、公司大小進行了簡單的統計分析,后續可以增加更多指標的分析,也可以采用更高級的分析算法對數據進行精細分析。

圖2 信息分析模塊的分析結果