邊倩 王振鐸 庫趙云
摘 要: 目前,網(wǎng)上數(shù)據(jù)呈現(xiàn)幾何級數(shù)的增長,人們獲得有效、準(zhǔn)確信息的難度增大。有必要對數(shù)據(jù)進(jìn)行合理的采集和分析,尤其是與人們工作有關(guān)的招聘數(shù)據(jù)的真實性和有效性。為了解決在職人員和廣大高校畢業(yè)生獲取滿意的招聘崗位信息,利用Python對該信息進(jìn)行收集和分析,勢在必行。首先、以某招聘為例,爬取招聘數(shù)據(jù),其次,從地區(qū)、行業(yè)、專業(yè)、熱門崗位等維度進(jìn)行數(shù)據(jù)分析,最后,利用可視化技術(shù),將有效的數(shù)據(jù)展示給用戶。經(jīng)測試表明,該系統(tǒng)能夠正常運行,數(shù)據(jù)可靠,能夠為求職者提供準(zhǔn)確的數(shù)據(jù)。
關(guān)鍵詞: 招聘; 爬蟲; 數(shù)據(jù)分析; Python
中圖分類號: TP311 ? ? ?文獻(xiàn)標(biāo)志碼: A
Abstract: At present, there is a geometric increase in online data, which makes more difficult for people to obtain effective and accurate information. It is necessary to collect and analyze the data reasonably. In particular, the authenticity and validity of hiring data are related to peoples jobs. In order to solve the problem that the in-service personnel and the majority of college graduates obtain satisfactory recruitment post information, this paper presents to collect and analyze theinformation by using Python. Firstly, we take a certain recruitment as an example to crawl the recruitment data. Secondly, data analysis is conductedfrom the dimensions of region, industry, major and popular post. Finally, visualization technologyis used to display effective data to users. The test shows that the prototype system can work normally, the data arereliable and can provide accurate data for job seekers.
Key words: recruitment; crap; data analysis; Python
0 引言
隨著互聯(lián)網(wǎng)的迅猛發(fā)展,網(wǎng)絡(luò)數(shù)據(jù)已經(jīng)進(jìn)入大數(shù)據(jù)時代。傳統(tǒng)的搜索引擎盡管解決了信息搜索問題,但無法進(jìn)行有效的數(shù)據(jù)分析和優(yōu)質(zhì)資源的獲取。并且,人們的需求不同,數(shù)據(jù)的要求也不同。為了解決這一問題,定向抓取數(shù)據(jù)的爬蟲誕生了。它的誕生把人們從重復(fù)性的勞動中解放出來,節(jié)約人們寶貴的時間。
對于畢業(yè)班的大學(xué)生以及想重新?lián)駱I(yè)的人,上網(wǎng)快速找到合適的工作,無疑是急需的。而如今的招聘網(wǎng)站信息多,想要獲取有效的信息需要的時間太長。針對以上不足,有必要通過爬蟲技術(shù),幫助求職者在雜亂無序的數(shù)據(jù)中尋找有用的數(shù)據(jù),科學(xué)分析,縮短求職者找工作的時間成本,幫助求職者快速擇業(yè)。筆者在參考文獻(xiàn)[2-7]后,設(shè)計和開發(fā)了本系統(tǒng)。
1 網(wǎng)絡(luò)爬蟲的原理和步驟
1.1 爬蟲的原理
網(wǎng)絡(luò)爬蟲是一種按照一定的規(guī)則,自動地抓取萬維網(wǎng)信息的程序或者腳本。爬蟲對某一站點訪問,如果可以訪問就下載其中的網(wǎng)頁內(nèi)容,并且通過爬蟲解析模塊解析得到的網(wǎng)頁鏈接,把這些鏈接作為之后的抓取目標(biāo),并且在整個過程中完全不依賴用戶,自動運行[1]。若不能訪問則根據(jù)爬蟲預(yù)先設(shè)定的策略進(jìn)行下一個URL的訪問。在整個過程中爬蟲會自動進(jìn)行異步處理數(shù)據(jù)請求,返回網(wǎng)頁的抓取數(shù)據(jù)。在整個的爬蟲運行之前,用戶都可以自定義的添加代理,偽裝請求頭以便更好地獲取網(wǎng)頁數(shù)據(jù)。
1.2 爬蟲的步驟
數(shù)據(jù)抓取的工作流程是:首先,通過Http向目標(biāo)站點發(fā)送請求,在請求的時候,如果服務(wù)器返回200狀態(tài)碼,則表示可以進(jìn)行數(shù)據(jù)抓取;繼而根據(jù)預(yù)設(shè)的抓取規(guī)則將得到的內(nèi)容進(jìn)行解析保存處理。如果返回的是錯誤的狀態(tài)碼,系統(tǒng)就請求下一個鏈接。直到將URL LIST遍歷完,工作流程如圖1所示。
1.3 爬取策略
在爬蟲系統(tǒng)中,因為涉及到先抓取那個頁面,后抓取哪個頁面。而決定這些URL排列順序的方法,叫做抓取策略。爬蟲主要采取兩種抓取策略,深度優(yōu)先和廣度優(yōu)先。采用這兩種策略得到的結(jié)果也不一樣。
其中,深度優(yōu)先主要是從一個鏈接開始一個一個的往里深入,直到整個的這一鏈接路線完成之后才進(jìn)行下一層URL的爬取。這種采集方式主要強調(diào)的是,抓取數(shù)據(jù)的深度,抓取順序1,2,3,4,5,6,7,如圖2所示。
爬蟲采用的廣度優(yōu)先算法主要是完成當(dāng)前層的URL后才進(jìn)行下一階段的URL的獲取。這種主要是為了更多的獲取到多樣的數(shù)據(jù)信息,數(shù)據(jù)的深度相對前者不夠,順序1,2,3,4,5,6,7,如圖3所示。
2 系統(tǒng)設(shè)計
2.1 功能設(shè)計
本系統(tǒng)主要分為爬取數(shù)據(jù)、數(shù)據(jù)存儲和WEB數(shù)據(jù)分析和顯示三個模塊,WEB模塊依賴于爬蟲模塊。爬蟲模塊由許多頁面處理模塊組成,WEB模塊在提取了爬蟲數(shù)據(jù)后主要進(jìn)行的是數(shù)據(jù)分析。本文的系統(tǒng)結(jié)構(gòu)設(shè)計,如圖4所示。
2.2 數(shù)據(jù)庫設(shè)計
數(shù)據(jù)庫設(shè)計主要包含用于數(shù)據(jù)分析的字段,在抓取數(shù)據(jù)過程中正則獲取到數(shù)據(jù)庫中所依賴的信息。數(shù)據(jù)庫字段表如表1所示。
2.3 開發(fā)工具
系統(tǒng)開發(fā)平臺:JetBrains PyCharm 5.0.3
程序語言:Python 3.7
框架:Scrapy1.5.1
系統(tǒng)運行環(huán)境:Windows10 64位
數(shù)據(jù)庫:Mysql 5.5
3 招聘爬蟲系統(tǒng)的實現(xiàn)
系統(tǒng)選擇某招聘網(wǎng)站作為數(shù)據(jù)源。系統(tǒng)主要功能是實現(xiàn)對招聘崗位數(shù)據(jù)的爬取,主要涉及招聘信息中的所在城市、崗位名稱、薪資、福利、公司名稱、發(fā)布時間等信息。
3.1 網(wǎng)頁數(shù)據(jù)的爬取
網(wǎng)頁抓取模塊可以說是爬蟲的核心,它定義了爬蟲的抓取規(guī)則,請求的數(shù)據(jù)參數(shù)以及在整個的抓取過程中頁面的等待時間,頁面的頁數(shù)。其中,header定義了它的請求頭,page定義了它的初始頁數(shù),start_requests函數(shù)定義了它的初始請求parse定義了它隨后的抓取規(guī)則。抓取數(shù)據(jù)如圖5所示。
3.2 數(shù)據(jù)存儲模塊
由于爬蟲抓取的數(shù)據(jù)量較大,為了高效地進(jìn)行數(shù)據(jù)分析,采用Excel,Json的方式效率明顯降低。所以,采用數(shù)據(jù)庫技術(shù)進(jìn)行存儲是必要的。數(shù)據(jù)存儲模塊主要完成將爬蟲抓取數(shù)據(jù)持久化到MYSQL數(shù)據(jù)庫中。
3.3 數(shù)據(jù)可視化
為了讓數(shù)據(jù)更加的直觀,系統(tǒng)采用ECharts圖表方式,增強用戶的視覺效果。ECharts是一款由百度前端技術(shù)部開發(fā)的,基于Javascript的數(shù)據(jù)可視化圖表庫,提供直觀,生動,可交互,可個性化定制的數(shù)據(jù)可視化圖表[8]。
在系統(tǒng)前端數(shù)據(jù)可視化時,首先是將echarts.min.js放在static/js下的目錄。然后在模板頁中引用{% static 'js/echarts.min.js'%}。最后在頁面中調(diào)用ECHARTS。通過集成ECHARTS可以很方便的去實現(xiàn)數(shù)據(jù)分析圖表,直觀的觀察數(shù)據(jù)信息,得出更加真實的對比值。數(shù)據(jù)分析結(jié)果如圖6所示。
4 總結(jié)
系統(tǒng)的設(shè)計,旨在為求職者提供有益的數(shù)據(jù),幫助求職者更快的找到心儀的工作。從數(shù)據(jù)的爬取、存儲和數(shù)據(jù)分析給出了設(shè)計和實現(xiàn)步驟,為相關(guān)爬蟲項目提供了借鑒。
參考文獻(xiàn)
[1] 王芳.基于Python的招聘網(wǎng)站信息爬取與數(shù)據(jù)分析[J].信息技術(shù)與網(wǎng)絡(luò)安全,2019,38(8):42-46.
[2] 趙綠草,饒佳冬.基于python的二手房數(shù)據(jù)爬取及分析[J].電腦知識與技術(shù),2019,15(19):1-3.
[3] 趙亮,賴研,仝鑫.基于Python的微博用戶分析系統(tǒng)設(shè)計與實現(xiàn)[J].計算機產(chǎn)品與流通,2019(6):282-283.
[4] 廖勇毅,丁怡心.基于Python的股票定向爬蟲實現(xiàn)[J].電腦編程技巧與維護,2019(5):45-46.
[5] 檀冬宇.基于Python的大眾點評網(wǎng)數(shù)據(jù)抓取技術(shù)研究[J].計算機產(chǎn)品與流通,2019(5):116.
[6] 程增輝,夏林旭,劉茂福.基于Python的健康數(shù)據(jù)爬蟲設(shè)計與實現(xiàn)[J].軟件導(dǎo)刊,2019,18(2):60-63.
[7] 崔玉嬌,孫結(jié)冰,祁曉波,等.基于Python的51-job數(shù)據(jù)抓取程序設(shè)計[J].無線電通信技術(shù),2018,44(4):416-419.
[8] 賀路路,阮曉龍.高校學(xué)生考試成績的數(shù)據(jù)分析模式與可視化研究[J].計算機時代,2019(9):50-52.
(收稿日期: 2019.10.08)