吳薛凱 劉天波 胡文馨



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