国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于Python的招聘數(shù)據(jù)爬蟲設(shè)計與實現(xiàn)

2019-02-07 05:32常逢佳李宗花文靜常逢錦
軟件導(dǎo)刊 2019年12期
關(guān)鍵詞:網(wǎng)絡(luò)爬蟲招聘數(shù)據(jù)分析

常逢佳 李宗花 文靜 常逢錦

摘要:隨著就業(yè)壓力日漸增加,準(zhǔn)確全面地獲取數(shù)據(jù)可以幫助高校學(xué)生規(guī)避就業(yè)風(fēng)險、正確認(rèn)識自身價值,具有相當(dāng)重要的研究價值?;赑ython的網(wǎng)絡(luò)動態(tài)招聘數(shù)據(jù)抓取方案利用requests庫抓取Ajax異步請求多頁數(shù)據(jù)源,抓取的內(nèi)容更為全面;對抓取到的招聘數(shù)據(jù)進(jìn)行統(tǒng)計分析,對多線程效率進(jìn)行對比分析,顯示爬蟲具有良好的適應(yīng)性。該方案抓取的網(wǎng)絡(luò)資訊在科研、求職等方面具有一定實用價值。

關(guān)鍵詞:網(wǎng)絡(luò)爬蟲;招聘;Python;數(shù)據(jù)分析

DOI:10.11907/rjd k.191156

中圖分類號:TP312 文獻(xiàn)標(biāo)識碼:A 文章編號:1672-7800(2019)012-0130-04

0引言

據(jù)北大青鳥統(tǒng)計,2019年高校應(yīng)屆畢業(yè)生人數(shù)高達(dá)834萬,再加上中專技校、往屆畢業(yè)生、海外留學(xué)人員等,預(yù)計超過1500萬人求職,形成了巨大的就業(yè)壓力,畢業(yè)生就業(yè)問題成為社會關(guān)注焦點。

同時,隨著海量信息的涌現(xiàn)和信息技術(shù)的不斷進(jìn)步,網(wǎng)絡(luò)招聘廣泛出現(xiàn)在各種網(wǎng)絡(luò)信息中,但大量招聘網(wǎng)站真假難辨,高校畢業(yè)生難以在眾多職位信息中作出正確選擇。目前,互聯(lián)網(wǎng)上存在許多同類招聘網(wǎng)站,表1列出目前比較規(guī)范的求職網(wǎng)站。但是現(xiàn)有招聘網(wǎng)站大部分是各類企業(yè)面向整個社會在互聯(lián)網(wǎng)上發(fā)布職位信息,其數(shù)量龐大,信息結(jié)構(gòu)復(fù)雜,求職者很難在大量職位中找到適合自己的職位,導(dǎo)致有時企業(yè)招不到人才,而求職者無法找到合適崗位。

黃貴斌等介紹了幾種采用聚類算法將學(xué)生、企業(yè)進(jìn)行分類的方法,但是在職位推薦功能中,沒有采用實際招聘職位,并且數(shù)據(jù)量小,分析學(xué)生和企業(yè)真實歷史數(shù)據(jù)的可行性較低。因此,對于就業(yè)推薦系統(tǒng),招聘數(shù)據(jù)時效性和真實性十分關(guān)鍵。若能準(zhǔn)確抓取招聘數(shù)據(jù)并深入分析與挖掘,可實現(xiàn)對大學(xué)生就業(yè)方向的有效預(yù)測與引導(dǎo)。

因此,本文通過分析拉鉤網(wǎng)招聘信息的存儲方式進(jìn)行關(guān)鍵數(shù)據(jù)的獲取研究,以Python為技術(shù)基礎(chǔ)進(jìn)行開發(fā),綜合運用多個Python網(wǎng)絡(luò)函數(shù)庫,從中獲取公司名稱、地區(qū)、職位名稱、工作年限、工資、公司資質(zhì)、公司規(guī)模、福利等信息,最后將數(shù)據(jù)保存到Excel電子表格中,以便統(tǒng)計分析和為后期就業(yè)推薦系統(tǒng)開發(fā)提供數(shù)據(jù)。

1爬蟲技術(shù)概述

目前,獲取招聘信息最主要途徑是通過搜索引擎,其最核心構(gòu)件是網(wǎng)絡(luò)爬蟲,若無該技術(shù)后繼工作將無法開展。網(wǎng)絡(luò)爬蟲又稱網(wǎng)頁蜘蛛、網(wǎng)絡(luò)機器人,是一種按照一定規(guī)則,自動抓取萬維網(wǎng)數(shù)據(jù)信息的程序。如果把萬維網(wǎng)比作一張大網(wǎng),則爬蟲技術(shù)就是網(wǎng)上的蜘蛛,若將網(wǎng)絡(luò)節(jié)點比作網(wǎng)頁,這個“蜘蛛”爬到何處就等于訪問了哪個網(wǎng)頁,獲得了相應(yīng)信息;而后可順著這些節(jié)點繼續(xù)爬到下一個節(jié)點,這樣整個網(wǎng)的所有節(jié)點便被這個“小蜘蛛”全部爬到。而搜索引擎就是將“小蜘蛛”爬取到的數(shù)據(jù)以一定策略進(jìn)行處理,并為用戶提供服務(wù),從而達(dá)到信息檢索的目的。

1.1Python爬蟲

Python是一款開源的、可以運行在任何主流操作系統(tǒng)中的解釋性高級程序設(shè)計語言。選擇Python作為實現(xiàn)招聘信息爬蟲的語言主要考慮如下:

(1)開發(fā)效率高。因為爬蟲的具體代碼需要根據(jù)不同的網(wǎng)站進(jìn)行修改,Python方便、簡單的語法可以高效地節(jié)省開發(fā)時間及成本。

(2)Python爬取網(wǎng)頁文檔的接口更簡潔。Python為爬蟲開發(fā)提供了如urllib、urllib2等豐富的第三方庫。爬蟲程序可以模擬瀏覽器訪問網(wǎng)站的流程,得到網(wǎng)站所有HTML數(shù)據(jù),比其它語言(c、c++、Java)更方便、快捷。

(3)網(wǎng)頁爬取后的數(shù)據(jù)可以是結(jié)構(gòu)化數(shù)據(jù),如XML和JSON等;也可以是非結(jié)構(gòu)化的數(shù)據(jù),如辦公文檔、文本、HTML、圖像等。Python支持一些解析技術(shù),包括正則表達(dá)式、Xpath、Beautiful Soup等,如果返回的是HTML格式的數(shù)據(jù),則可使用lxml庫解析網(wǎng)頁,通過節(jié)點提取等一些常規(guī)方法,提取出真正需要的數(shù)據(jù)。如果返回的是JSON格式的數(shù)據(jù),則可通過JSON解析獲取數(shù)據(jù)。

1.2通用爬蟲流程

通常可以按照不同的維度對網(wǎng)絡(luò)爬蟲進(jìn)行分類,例如,按照使用場景,可將爬蟲分為通用爬蟲和聚焦爬蟲;按照爬取形式,可分為累計式爬蟲和增量式爬蟲;按照爬取數(shù)據(jù)的存取方式,可分為表層爬蟲和深層爬蟲。在實際應(yīng)用中,網(wǎng)絡(luò)爬蟲系統(tǒng)通常由幾種爬蟲技術(shù)結(jié)合實現(xiàn)。

招聘信息爬蟲是一個自動提取網(wǎng)頁的程序,基本工作流程包括:①選取一個或若干個初始網(wǎng)頁的URL;②由網(wǎng)頁下載模塊獲取URL對應(yīng)網(wǎng)頁的HTML,傳遞給數(shù)據(jù)解析模塊之后,將URL放進(jìn)已爬取URL隊列;③數(shù)據(jù)解析模塊解析收到的HTML,查找標(biāo)簽,提取出標(biāo)簽所需數(shù)據(jù),傳遞至數(shù)據(jù)清洗模塊,經(jīng)提取后將URL傳遞至URL調(diào)度模塊;④調(diào)度模塊收到解析模塊傳遞過來的URL后,將其和已抓取的URL隊列對比,進(jìn)行去重處理,篩選出未爬取的URL再放人待爬取URL隊列;⑤網(wǎng)絡(luò)爬蟲系統(tǒng)在第②一④步循環(huán),直到待爬取隊列中的URL全部爬取完畢,或者用戶終止進(jìn)程;⑥數(shù)據(jù)清洗模塊發(fā)現(xiàn)并糾正數(shù)據(jù)文件中可識別的錯誤,最終將數(shù)據(jù)存人數(shù)據(jù)庫或Excel表格中。但是,上述爬取行為需要遵循如標(biāo)注為nofollow的鏈接或Robots協(xié)議等內(nèi)容。

2網(wǎng)絡(luò)爬蟲案例實現(xiàn)

拉鉤網(wǎng)是國內(nèi)著名的招聘網(wǎng)站,求職者可以通過官方網(wǎng)站提供的信息了解公司概況、崗位需求信息等。為了能夠準(zhǔn)確地從海量招聘信息中獲取想要的數(shù)據(jù),本文針對拉鉤網(wǎng)招聘信息特征設(shè)計爬蟲案例,使用爬蟲工具專門爬取招聘數(shù)據(jù),供后期數(shù)據(jù)分析。

2.1數(shù)據(jù)分析

首先利用Chrome瀏覽器打開拉鉤網(wǎng)主頁(https://www.1agou.com),在搜索框中輸入職位關(guān)鍵字,例如“java開發(fā)工程師”,所有與職位相關(guān)的信息即被列出,這些信息是待爬取的數(shù)據(jù)。

右擊招聘職位空白處,選擇“檢查”選項,進(jìn)入源代碼調(diào)試窗口,并定位到其對應(yīng)的標(biāo)簽位置,在

  • 標(biāo)簽中保留一條完整的職位信息。通過data-index屬性表明每一頁最多可顯示15條檢索的職位信息。利用network選項卡中XHR(ajax異步請求顯示結(jié)果)查看positionAjax.json條目,存取的每一頁中15條職位詳細(xì)信息如圖2所示。觀察JSON數(shù)據(jù),該處選取鍵值名稱分別為companyFullName、district、positionN ame、work Y ear、salary、iinanceStage、compa-nySize、industryField、companyLabelList,分別對應(yīng)公司名稱、地區(qū)、職位名稱、工作年限、工資、公司資質(zhì)、公司規(guī)模、所屬類別、福利等含義。經(jīng)過上述觀察分析,這些鍵值是待爬取數(shù)據(jù)。

    在開發(fā)庫選取中,Python中的第三方庫requests庫是基于Python開發(fā)的http庫,它在Urllib庫基礎(chǔ)上進(jìn)行了高度封裝,不僅可重復(fù)讀取返回的數(shù)據(jù),還可自動確定相應(yīng)內(nèi)容的編碼,減少大量工作且使用方便。

    2.2爬取流程

    爬取的數(shù)據(jù)主要以JSON格式進(jìn)行存取,因此爬取流程主要分為如下步驟完成。

    (1)利用requests庫中的request(‘GET,url,headers=headers).ison()獲得response對象。

    一些請求如果不是從瀏覽器發(fā)出,則無法獲得相應(yīng)內(nèi)容,所以爬蟲程序需要偽裝成一個從瀏覽器發(fā)出的請求。即在發(fā)送Request請求時,加入特定的headers,在爬取拉勾網(wǎng)招聘信息時,傳遞url同時,必須傳遞偽裝瀏覽器發(fā)送請求的headers頭。

    Referer字段也被用作防盜鏈,即下載時,判斷來源地址是不是在網(wǎng)站域名之內(nèi),否則無法下載或顯示。拉鉤網(wǎng)在header中必須攜帶Referer字段。同時,由于請求以get方式發(fā)送,當(dāng)傳遞的URL中包含中文或者其它特殊字符(例如,空格或‘/等)時,需要利用urllib.parse.urlencode()方法將中文參數(shù)進(jìn)行編碼。它可以將key:value這樣的鍵值對轉(zhuǎn)換成“key=value”的形式。為了增加爬取程序的通用性,利用input接收用戶輸入需要爬取的職位名稱,并利用split(‘=)[1]進(jìn)行切割。完成上述功能后定義get_page(url,headers)函數(shù),返回response對象。

    (2)將response對象返回的數(shù)據(jù)進(jìn)行分頁爬取。在獲取的response對象中包含每一頁最多15個招牌信息,如圖3所示。

    2.3相關(guān)問題

    在測試過程中,為盡量使程序面對各種問題時仍能正常運行,本文對爬蟲細(xì)節(jié)進(jìn)行如下設(shè)置。

    (1)為了防止因頻繁訪問而被網(wǎng)站封鎖,本文爬蟲設(shè)置了隨機時間間隔。根據(jù)實驗結(jié)果,將間隔設(shè)置為0.5~2s。

    (2)設(shè)計了斷點記錄功能。在獲取職位列表和詳細(xì)資訊內(nèi)容的同時,將正在爬取的地址和其在職位列表中的位置保存起來。爬蟲重新啟動時,根據(jù)斷點位置繼續(xù)運行,無需從頭開始,該功能可節(jié)省大量時間。

    (3)采用多線程爬取數(shù)據(jù)技術(shù),效率可大幅提高。

    (4)拉鉤網(wǎng)采取反爬取技術(shù),若同一個IP反復(fù)爬取同一個網(wǎng)頁,很可能被封,因此設(shè)置代理IP池。

    3結(jié)果分析

    在爬蟲效率測試中,分別使用不同的線程數(shù)量進(jìn)行測試,測試數(shù)據(jù)如表2所示。為了節(jié)省爬取時間,將爬取搜索職位頁面設(shè)置為3頁。

    從測試結(jié)果可以看出,線程數(shù)量從1分別變化為2、3時,爬取速度均有明顯提升。線程數(shù)量上升到4時,系統(tǒng)為了維護各個線程需要分配出一定資源;同時考慮到網(wǎng)絡(luò)帶寬等因素,增加線程對爬蟲速度已無明顯影響。因此,多線程技術(shù)的使用需要考慮機器性能、網(wǎng)絡(luò)帶寬等各種因素。

    4結(jié)語

    本文以爬取拉鉤網(wǎng)招聘數(shù)據(jù)為例,介紹了一種爬取招聘數(shù)據(jù)的爬蟲程序設(shè)計。面對復(fù)雜的網(wǎng)絡(luò),本文爬蟲設(shè)計方法仍存在一些問題,有進(jìn)一步優(yōu)化的空間。例如:爬取數(shù)據(jù)較多時,速度較慢,可以通過緩存與多進(jìn)程技術(shù)再次提升爬蟲效率,建立分布式爬蟲應(yīng)對海量數(shù)據(jù)。本文爬蟲工具的實現(xiàn)為后續(xù)研究工作奠定了一定基礎(chǔ)。

猜你喜歡
網(wǎng)絡(luò)爬蟲招聘數(shù)據(jù)分析
煉鐵廠鐵量網(wǎng)頁數(shù)據(jù)獲取系統(tǒng)的設(shè)計與實現(xiàn)
H工程咨詢有限公司招聘有效性的影響因素
淺談企業(yè)財務(wù)人員管理的思考及對策
淺析大數(shù)據(jù)時代對企業(yè)營銷模式的影響
汉寿县| 丰镇市| 华容县| 禄丰县| 鹰潭市| 永登县| 太仓市| 罗田县| 达日县| 正蓝旗| 武川县| 荣成市| 郑州市| 修水县| 永春县| 田林县| 巫溪县| 平昌县| 醴陵市| 青州市| 宁国市| 寿宁县| 双牌县| 九江市| 科尔| 楚雄市| 溧阳市| 龙州县| 荃湾区| 奈曼旗| 唐河县| 洛川县| 泗洪县| 南充市| 都兰县| 呼伦贝尔市| 庆阳市| 保德县| 锡林郭勒盟| 阿尔山市| 新民市|