吳薛凱 劉天波 胡文馨
摘? 要:隨著互聯(lián)網(wǎng)的高速發(fā)展,網(wǎng)絡(luò)信息量呈現(xiàn)爆炸式增長的趨勢,利用網(wǎng)絡(luò)爬蟲對大數(shù)據(jù)進行分析和處理有非常重要的意義。該文以拉勾網(wǎng)為例,利用Python 3.7和MySQL 5.5設(shè)計了一個關(guān)于Java相關(guān)崗位招聘信息的數(shù)據(jù)采集與存儲系統(tǒng)。并且對采集的數(shù)據(jù)進行多方位分析,為相關(guān)行業(yè)的就業(yè)者在就業(yè)選擇以及未來規(guī)劃的時候提供一個有據(jù)可依的參照,起到一個就業(yè)指導(dǎo)的作用。
關(guān)鍵詞:網(wǎng)絡(luò)爬蟲? 招聘信息? 數(shù)據(jù)分析? 就業(yè)指導(dǎo)
Abstract: With the rapid development of the Internet, the amount of network information presents an explosive growth trend, it is important to analyze and process big data by using web crawler. This paper takes LaGou recruitment website as an example, using Python 3.7 and MySQL 5.5 to design a data acquisition and storage system about Java related job recruitment information.And through the multidimensional analysis of the collected data, the use of the analysis results can provide a reference for the employment choice and future planning of the employment and play a role of employment guidance.
Key Words: Web crawler; Recruitment information; Data analysis; Career guidance
Java作為一門成熟的語言,憑借其廣泛的應(yīng)用,深受高校學(xué)生以及社會人士的喜愛。該文使用Python語言開發(fā)了一套針對爬取Java行業(yè)招聘數(shù)據(jù)的專用爬蟲,并對爬取的數(shù)據(jù)進行處理及分析,這里就以“拉勾網(wǎng)”作為實例,對如何開發(fā)爬蟲獲取數(shù)據(jù),以及對數(shù)據(jù)的處理、分析做了深入的探討與研究,為畢業(yè)生以及社會求職人士應(yīng)聘Java崗位提出了寶貴的建議。
1? 爬蟲設(shè)計過程
1.1 需求分析
爬蟲的目的是在網(wǎng)站內(nèi)抽取結(jié)構(gòu)化的、大量的數(shù)據(jù),并將這些數(shù)據(jù)永久保存在計算機硬盤中。該文選擇MySQL數(shù)據(jù)庫來保存結(jié)構(gòu)化數(shù)據(jù),并使用該數(shù)據(jù)庫對數(shù)據(jù)進行清洗,再將處理過的數(shù)據(jù)導(dǎo)出至Excel中,最后利用pyecharts可視化庫對數(shù)據(jù)進行展現(xiàn)和分析。
1.2 爬蟲模塊化設(shè)計
模塊化的爬蟲程序具有高延展性,因此它能適應(yīng)不同的應(yīng)用場景,通過對不同模塊進行組合,就能構(gòu)建出一個完整的網(wǎng)絡(luò)爬蟲系統(tǒng),并且模塊化的程序更加方便測試以及后期維護。
該文開發(fā)的爬蟲程序一共分為3個模塊,分別是網(wǎng)頁抓取模塊、數(shù)據(jù)提取模塊、數(shù)據(jù)存儲模塊,這3個模塊組合成為一個完整的網(wǎng)絡(luò)爬蟲系統(tǒng)。
1.2.1 網(wǎng)頁抓取模塊分析
爬蟲程序的本質(zhì)就是模擬客戶端請求網(wǎng)頁信息,并在返回網(wǎng)頁的網(wǎng)頁源碼中爬取所需要的數(shù)據(jù)信息。但面對“拉勾網(wǎng)”多重的反爬機制,發(fā)現(xiàn)網(wǎng)頁源碼中隱藏了有關(guān)崗位的關(guān)鍵信息。經(jīng)過研究得知網(wǎng)頁使用了AJAX異步加載技術(shù),AJAX可以使網(wǎng)頁實現(xiàn)異步更新。這意味著可以在不重新加載整個網(wǎng)頁的情況下,對網(wǎng)頁的某部分進行更新。通過審查網(wǎng)頁元素得知,崗位信息以JSON文件的形式存放在XHR中,XHR是AJAX功能實現(xiàn)所依賴的對象。
在找到網(wǎng)頁的數(shù)據(jù)接口后,經(jīng)過對此接口Headers請求頭的觀察,可以看到請求是以POST的方式傳遞的,同時傳遞了參數(shù),經(jīng)過研究發(fā)現(xiàn),“pn”代表爬取的頁碼,“kd”代表關(guān)鍵字,通過改變這兩個參數(shù)就可以改變爬取的內(nèi)容。
針對拉勾網(wǎng)的高度反爬,還需要在模塊中引入適當(dāng)?shù)钠平夥磁啦呗裕瑏泶_保成功爬取網(wǎng)頁數(shù)據(jù)。如使用IP代理池的技術(shù)去訪問服務(wù)器、修改請求頭信息、設(shè)置訪問時間間隔等。部分設(shè)計代碼如下。
1.2.2 數(shù)據(jù)提取模塊分析
在獲取存有崗位信息的JSON文本后,需要將關(guān)鍵數(shù)據(jù)從中提取出來。由于在當(dāng)前時間段,拉勾網(wǎng)有關(guān)Java的崗位信息共有200頁,所以在爬取數(shù)據(jù)的時候,設(shè)置pn為200,kd為Java即可。
1.2.3 數(shù)據(jù)存儲模塊分析
抓取拉勾招聘網(wǎng)站上所有Java崗位獲得的信息相對來說是一個比較大的數(shù)據(jù),所以在這里選擇MySQL Service5.5數(shù)據(jù)庫對這些數(shù)據(jù)進行存儲,并通過MySQLdb對數(shù)據(jù)庫進行操作,在程序開始,利用API建立數(shù)據(jù)庫的連接。接下來,將基于需要保存的信息,建立數(shù)據(jù)表。隨后在數(shù)據(jù)提取模塊提取信息后,將這些數(shù)據(jù)導(dǎo)入到所創(chuàng)建的數(shù)據(jù)庫中的表內(nèi)。這樣就實現(xiàn)了用Python語言對數(shù)據(jù)庫進行操作,將爬取的數(shù)據(jù)永久性地存儲到數(shù)據(jù)庫中,為下文的就業(yè)數(shù)據(jù)分析奠定了基礎(chǔ)。該文利用MySQL可視化圖形界面SQLyog展示的部分數(shù)據(jù),具體見圖1。
2? 數(shù)據(jù)可視化分析
上文通過設(shè)計好的爬蟲程序?qū)⑿枰臄?shù)據(jù)導(dǎo)入到數(shù)據(jù)庫中,通過使用SQL語句對數(shù)據(jù)庫進行查詢得到,在當(dāng)前時間段,拉勾網(wǎng)總共發(fā)布了2 991條Java崗位信息,下文將通過Pandas庫和pyecharts庫對數(shù)據(jù)進行可視化分析,來初步指導(dǎo)廣大的Java行業(yè)的就業(yè)人員。
數(shù)據(jù)分析結(jié)果如下。
隨著應(yīng)屆畢業(yè)生數(shù)量的顯著增長,和各行業(yè)社會人員向IT行業(yè)轉(zhuǎn)職意愿的增強,整個社會的就業(yè)壓力也隨之增大,在這種就業(yè)形勢如此激烈的社會中,如何做出正確的選擇,成了廣大學(xué)者研究的熱點和焦點。
經(jīng)研究可得,全國各地提供的Java崗位數(shù)量的前15名的城市具體見圖2。
從圖2可以看出,國內(nèi)各地區(qū)提供的崗位數(shù)量還是有很大差別的,其中北京、深圳、上海和杭州提供的崗位最多,分別為659、530、490、340。且從圖中可以看出排名在武漢之后的城市提供的崗位數(shù)量較少,大多數(shù)崗位都集中在一線城市以及部分發(fā)展較好的新一線城市。
再對所有城市提供的崗位數(shù)量進行分析,得知Java崗位在全國各地的分布主要存在以北京、上海、杭州和深圳為中心并向周邊城市輻射的現(xiàn)象。這意味著IT行業(yè)越發(fā)達的地區(qū),提供的崗位數(shù)量也越多,并且以這4個城市為中心的周邊城市所提供的崗位數(shù)量也比較可觀。由此可見,IT產(chǎn)業(yè)發(fā)達的城市可以帶動周邊城市IT產(chǎn)業(yè)的發(fā)展,并且IT產(chǎn)業(yè)發(fā)達城市的就業(yè)機會比較多,更適合作為畢業(yè)生以及社會人士求職的地方。
Java就業(yè)市場對應(yīng)聘人員的學(xué)歷層次要求也各有不同。全國Java招聘單位對學(xué)歷的要求見圖3。從圖3的結(jié)果可以看出在全國范圍內(nèi)崗位招聘當(dāng)前的需求主要還是本科學(xué)歷以上,對于部分應(yīng)屆生,也可以選擇考研或者考博來提升自己在就業(yè)市場上的競爭力。
在薪資水平方面,總體上還是相當(dāng)可觀的。主要集中在月薪10~15 K、15~20 K以及20~30 K這3個層次,并且這3個層次的崗位數(shù)量共占整體的78.61%,整體的收入保持在一個較高的水平。
在前文對全國的收入水平進行直觀判斷的基礎(chǔ)上,進而得到國內(nèi)提供崗位數(shù)量前10名地區(qū)的招聘收入情況,具體見圖4。應(yīng)聘人員的工作年限與薪資水平的關(guān)系具體見圖5。從圖4可以看出,薪資水平處于前5位的地區(qū)分別是北京、上海、杭州、深圳以及南京,其中一線城市的工資要明顯高于其余城市,這也跟當(dāng)?shù)氐慕?jīng)濟發(fā)展和消費水平有關(guān)。這樣應(yīng)屆畢業(yè)生以及社會人員在就業(yè)的時候可以根據(jù)地區(qū)消費的不同,以及對未來的規(guī)劃選擇合適的工作區(qū)域。
與此同時,應(yīng)聘人員以往擁有不同的工作年限,則企業(yè)給出的薪資的整體水平也各有不同,由圖5分析可知,目前在整個Java領(lǐng)域工作機會最多的是有3~5年工作經(jīng)驗的人才,針對這個批次的人才,企業(yè)給出的平均薪資水平約為20.2 K,并且月薪在30 K以上的崗位數(shù)量明顯增多。擁有5~10年工作經(jīng)驗的程序員的工資將會達到一個相對較高的水平,主要集中在20~30 K或以上,但是招聘需求量也會遞減。此外,工作經(jīng)驗在1~3年的就業(yè)人員也擁有不錯的就業(yè)機會和薪資待遇,平均月薪約為14.4 K,這個階段的人才有很大的職業(yè)發(fā)展空間。反觀那些沒有任何相關(guān)工作經(jīng)驗的人員以及應(yīng)屆畢業(yè)生,企業(yè)提供的崗位較少,薪資水平的分布也比較均勻,各個層次的崗位數(shù)量相差不多。通過更進一步研究發(fā)現(xiàn),對于這兩類人,影響薪資的主要因素便是技術(shù)能力和學(xué)歷水平。所以擁有優(yōu)秀的技術(shù)和較高的學(xué)歷,更容易找到高薪崗位。
綜上所述,以往的工作經(jīng)驗跟薪資水平存在正相關(guān)的關(guān)系,且在一定的范圍內(nèi),工作年限越長,就業(yè)機會也越多。針對沒有經(jīng)驗的人員以及畢業(yè)生,就業(yè)機會相對偏少,并且薪資水平和技術(shù)能力以及學(xué)歷層次呈正相關(guān)的關(guān)系,針對這兩類人員,提升學(xué)歷和技術(shù)水平更容易找到滿意的工作。對于部分應(yīng)屆畢業(yè)生,則可選擇考研考博,憑此來提升在未來市場上的競爭實力。
3? 結(jié)語
該文通過Python語言以及MySQL Service5.5數(shù)據(jù)庫,創(chuàng)建了一個基于拉勾網(wǎng)的網(wǎng)絡(luò)爬蟲系統(tǒng)。該爬蟲系統(tǒng)可以模擬用戶登錄拉勾網(wǎng),獲取網(wǎng)頁數(shù)據(jù)接口,并采用一系列技術(shù)手段繞過網(wǎng)站的反爬蟲系統(tǒng),爬取數(shù)據(jù)接口中的信息,同時對數(shù)據(jù)進行篩選。最后,將篩選后的數(shù)據(jù)存儲至數(shù)據(jù)庫,并在此基礎(chǔ)上,對這些數(shù)據(jù)進行了深度的挖掘,也就是運用一系列的數(shù)據(jù)分析手段,獲取關(guān)于全國各個城市對于Java開發(fā)工程師的需求程度、不同城市提供的薪資待遇、求職者的學(xué)歷及以往工作年限對于工作機會以及可能獲得的薪資待遇之間的關(guān)系等一系列重要信息,為廣大的就業(yè)人員提供有益的借鑒與參考。
參考文獻
[1] 項博良,唐淳淳,錢前,等.基于網(wǎng)絡(luò)爬蟲的就業(yè)數(shù)據(jù)分析[J].智能計算機與應(yīng)用,2020,10(1):223-226.
[2] 王碧瑤.基于Python的網(wǎng)絡(luò)爬蟲技術(shù)研究[J].數(shù)字技術(shù)與應(yīng)用,2017(5):76-77.
[3] 李培.基于Python的網(wǎng)絡(luò)爬蟲與反爬蟲技術(shù)研究[J].計算機與數(shù)字工程,2019,47(6):1415-1420.
[4] 王斌.基于聚焦爬蟲的輿情管理系統(tǒng)設(shè)計與實現(xiàn)[D].上海交通大學(xué),2016.
[5] Ou Gengxin.Development of GUI Applications for Groundwater Modeling Using Python[J].Groundwater,2020,58(4):91-94.
[6] 林捷.主題網(wǎng)絡(luò)爬蟲的研究和實現(xiàn)[D].武漢理工大學(xué),2011.
[7] 薛煒,袁媛,董思勤,等.基于可視化技術(shù)的城市餐飲數(shù)據(jù)分析[J].科技資訊,2020,18(18):17-18.
[8] 陸樹芬.基于Python對網(wǎng)絡(luò)爬蟲系統(tǒng)的設(shè)計與實現(xiàn)[J].電腦編程技巧與維護,2019(2):67-68.