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