楊眾
摘要:隨著近些年來Python語言在各個行業(yè)廣泛應用,各大公司對Python技術人員的招聘數(shù)量日益增多。利用Python語言的Scrapy框架技術從國內(nèi)招聘網(wǎng)站上采集了15 000條招聘數(shù)據(jù),對數(shù)據(jù)進行了處理和存儲,將招聘信息中的行業(yè)情況、經(jīng)驗要求、工資情況、學歷要求、公司規(guī)模和招聘地區(qū)等進行了展現(xiàn)和分析。對Python語言框架技術、實現(xiàn)方式方法和必要代碼進行詳細講解,對目前國內(nèi)招聘崗位的需求特點進行了大數(shù)據(jù)分析,為正在學習Python技術或有意向從事該行業(yè)的技術人員提供了參考和借鑒。
關鍵詞:Pyhton;Scrapy;網(wǎng)絡爬蟲;可視化;數(shù)據(jù)分析
中圖分類號:TP393文獻標志碼:A文章編號:1008-1739(2020)02-61-4
0引言
根據(jù)IEEE2019年對編程語言的排名,Python語言高居榜首,并且連續(xù)3年奪冠,已經(jīng)超越Java和C語言,被稱為當今最流行的編程語言。目前,國內(nèi)對Python人才的缺口已經(jīng)高達50萬,使得相關職位的薪資和待遇逐年攀升,部分高精尖職位如人工智能和大數(shù)據(jù)開發(fā)等人才更是稀缺,不少公司開出30萬元的年薪都招不到人。IT領域人才招聘的渠道主要集中在互聯(lián)網(wǎng)招聘和熟人推薦,文章利用Python語言的爬蟲、數(shù)據(jù)存儲、處理和展現(xiàn)分析技術對當前主流的招聘網(wǎng)站進行分析,從數(shù)據(jù)層面反映了當前IT領域對Python技術人員的需求情況。
1相關技術
1.1 Python語言背景
Python語言是一種開放源代碼、免費的跨平臺高級語言,由Guido van Rossum于1989年發(fā)明。Python語言被稱為“膠水語言”,它可以非常容易地把Java和C++等主流語言粘在一起,實現(xiàn)程序之間的聯(lián)動。此外,Python語言還具有入門快、簡單高效、運行可靠、可擴展和數(shù)據(jù)處理能力強等特點[1 ]。Python語言擁有大量的第三方開源庫,使其在互聯(lián)網(wǎng)、數(shù)據(jù)分析、云計算、網(wǎng)絡爬蟲、自動化運維、Web開發(fā)和人工智能領域得到了廣泛的支持和應用。
1.2 Scrapy爬蟲框架
網(wǎng)絡爬蟲是Python應用中的一個分支,又稱為全網(wǎng)爬蟲,爬行對象可以從一些種子擴充到整個Web,主要為門戶站點、搜索引擎和大型的Web服務商提供采集數(shù)據(jù)[2]。Scrapy框架是Python中最著名、最受歡迎的爬蟲框架,完全通過Python語言進行編寫,基于Twisted的異步處理框架,架構清晰、成熟,模塊之間的耦合度低、可擴展性強,可以應用在數(shù)據(jù)挖掘、信息處理和存儲歷史數(shù)據(jù)等一系列的程序中。
1.3 Echars可視化庫
Echarts是由百度公司開發(fā)的一款基于JavaScript技術來實現(xiàn)的開源Web可視化庫,稱為商業(yè)級數(shù)據(jù)圖表。Echars底層依賴輕量級的canvas類庫ZRender,提供直觀、友好、可交互和高度個性化定制的數(shù)據(jù)可視化圖表,如折線圖、柱狀圖、散點圖、餅圖、K線圖、雷達圖和位置坐標圖等上百個圖表。
Echars的架構分為ZRender層和Echars層兩部分,其中ZRender層對圖形動畫、渲染引擎和一些基本的用戶交互方法進行了封裝;Echars層包含了具體的調用接口、視圖和一些交互組件。目前,Echars已經(jīng)成為國內(nèi)互聯(lián)網(wǎng)行業(yè)最熱門的可視化工具,被百度、阿里、騰訊、華為和京東等公司所使用。
2數(shù)據(jù)獲取
本文數(shù)據(jù)主要通過某大型互聯(lián)網(wǎng)招聘網(wǎng)站進行爬取,整個過程通過Python語言進行編寫。在數(shù)據(jù)爬取過程中,采用了模擬請求登錄、動態(tài)網(wǎng)頁抓取代理IP和多線程等技術手段。數(shù)據(jù)爬取后進行采集分析,對數(shù)據(jù)進行了清洗和轉換處理,并存儲到MySql數(shù)據(jù)庫,最后通過Echars可視化庫對數(shù)據(jù)進行展現(xiàn)和分析。
2.1框架搭建
通過比較流行的Scrapy爬蟲框架進行編程獲取,對網(wǎng)站中的崗位名稱、工作年限、學歷、崗位性質、公司性質、公司規(guī)模、公司全稱、業(yè)務方向、所在城市、福利待遇、工資標準和發(fā)布日期等12條信息進行抓取。
2.2數(shù)據(jù)定義
2.4數(shù)據(jù)處理與存儲
本設計采用MongoDB數(shù)據(jù)庫作為數(shù)據(jù)源存儲,MongoDB作為非關系型數(shù)據(jù)庫,基于Key-Value形式保存數(shù)據(jù),這點與Python字典非常相似[3]。該語言可輕松橫向拓展、分片和集群,能夠輕松應對爬蟲字段變化等情況,非常適合存儲大規(guī)模爬蟲數(shù)據(jù)。
在Python中使用MongoDB,需要安裝驅動,并且導入驅動包。創(chuàng)建并進行訪問數(shù)據(jù)庫,數(shù)據(jù)庫創(chuàng)建代碼為Client = MongoClient(‘localhost,27017)[4]。數(shù)據(jù)庫創(chuàng)建后需要實現(xiàn)對數(shù)據(jù)的處理方法,程序pipelines.py實現(xiàn)了Item pipelines項目管道的具體實現(xiàn),包括編寫數(shù)據(jù)清理、去重等方法,以及實現(xiàn)數(shù)據(jù)存儲。根據(jù)對招聘網(wǎng)站的解析,在工作年限字段,有部分內(nèi)容為“不限”或“迎接畢業(yè)生”,為了便于統(tǒng)計和分析,將這2類信息的工作年限設置為0[5]。有部分含有“實習”的工作崗位,由于本分析僅限于全職崗位,故將實習崗位刪除。最后,將處理好的數(shù)據(jù)存入MongoDB數(shù)據(jù)庫,并且在settings.py中定義好數(shù)據(jù)庫的鏈接信息,在pipelines.py中實現(xiàn)MongoPipeline方法,部分代碼如下:
3.2行業(yè)情況分析
通過對15 000條招聘數(shù)據(jù)進行可視化實現(xiàn),對行業(yè)及職位數(shù)量進行分析,找出了Python招聘崗位應用前6名行業(yè),它們的排名和數(shù)量分別為移動互聯(lián)網(wǎng)招聘數(shù)據(jù)有4 893條信息、數(shù)據(jù)服務有2 981條、金融行業(yè)有2 211條、電商行業(yè)有2 107條、信息安全有1 423條、游戲行業(yè)有1 001條、其他行業(yè)有376條信息??梢钥闯?,隨著采用Python技術的互聯(lián)網(wǎng)網(wǎng)站及應用越來越多,對Python工程師的需求也最大。
3.3工作經(jīng)驗要求
在Echars程序的series部分,通過設置markPoint{data:[最大值,最小值]}可以設置數(shù)值曲線的最大值和最小值[6]。從工作經(jīng)驗要求曲線中可以看出1/3的崗位均要求3~5年的工作經(jīng)驗,共有5 700條招聘信息,應屆畢業(yè)生和超過10年工作經(jīng)驗的人需求最少,僅剩600條招聘信息。
3.4工資情況
在Echars程序中markLine屬性設置data: {type: average, name: 平均值}可以計算出曲線平均值[6],如圖2所示。從工資曲線中,可以看到,Python崗位的平均工資為每月19 134元,其中招聘的應屆畢業(yè)生的工資最低,平均僅為8 030元,招聘3~10年以上工作經(jīng)驗工資最高,達到27 380元。
從曲線趨勢中可以發(fā)現(xiàn),經(jīng)驗在3~5年左右的程序員工資會有一個較大提升,超過行業(yè)內(nèi)平均工資,結合上面工作經(jīng)驗曲線可以發(fā)現(xiàn),這些技術人員的需求量也最大,所以相應的工資給的也比較多。經(jīng)驗在5~10年內(nèi)工資將會達到一個比較高的水平,但是招聘需求量有所遞減。經(jīng)驗要求超過10年的變化不大甚至還有些回落的趨勢,分析10年以上的程序員雖然經(jīng)驗豐富,但是年齡也偏大,工資變動不大。
3.5學歷要求
通過學歷要求餅狀圖可以發(fā)現(xiàn)大部分Python崗位對學歷要求不高,崗位需求普遍集中在本科生和??粕究粕灿? 512條,占50%;??粕灿? 249條,占35%;碩士研究生有1 510條,占10%;博士生有148條,僅占1%;不限學歷的招聘信息有613條,占4%。
3.6公司規(guī)模情況
通過對公司上市情況和公司人員規(guī)模情況進行分析,發(fā)現(xiàn)Python崗位招聘的公司規(guī)模大部分以中小型企業(yè)為主。沒有經(jīng)歷過融資的公司為1 493家占47%,上市公司為655家占19%。在公司規(guī)模上,以150人以下的小公司居多為1 495家占44%,2 000人以上的大型公司為701家占20%。
3.7地區(qū)城市
在參數(shù)geoCoordMap中定義城市坐標位置,并且通過Convert Data將坐標數(shù)據(jù)值進行拼接,最后通過setOption函數(shù)對地圖進行展現(xiàn),形成坐標地圖。通過對崗位地圖坐標圖進行分析,Python崗位數(shù)量城市分布由多到少分別為:北京、廣州、深圳、上海、成都、杭州、西安、南京、武漢和蘇州等10個城市。可以發(fā)現(xiàn),Python語言技術需求比較大的幾個城市仍然是互聯(lián)網(wǎng)比較發(fā)達的北上廣深等一線城市,Python技術從業(yè)者在一線城市有比較大的發(fā)展。
4結束語
本文利用比較流行的Python語言Scrapy框架對互聯(lián)網(wǎng)數(shù)據(jù)進行采集和分析,并通過Echars可視化圖表將分析出來的數(shù)據(jù)進行多元展現(xiàn),采用的方法為在互聯(lián)網(wǎng)下的大數(shù)據(jù)分析和決策支持提供了思路。通過對互聯(lián)網(wǎng)Python崗位的招聘信息進行分析可以發(fā)現(xiàn),在一線城市中從事互聯(lián)網(wǎng)行業(yè)、具備3~5年工作經(jīng)驗的本科生最為搶手,工資待遇也比較不錯,為IT行業(yè)的求職者提供了方向。
參考文獻
[1]王芳.基于Python的招聘網(wǎng)站信息爬取與數(shù)據(jù)分析[J].信息技術與網(wǎng)絡安全,2019,38(8):42-46.
[2]李文龍.基于Docker集群的分布式爬蟲研究與設計[D].杭州:浙江理工大學,2017.
[3]賈檸瑜.基于python爬蟲的崗位數(shù)據(jù)分析———以拉勾網(wǎng)為例[J].信息技術與信息化,2019(4):64-66.
[4]李璋.基于Hadoop的互聯(lián)網(wǎng)數(shù)據(jù)營銷系統(tǒng)的設計與實現(xiàn)[D].北京:中國科學院大學,2017.
[5]林長謀,黃瑋.基于Python的就業(yè)崗位數(shù)據(jù)獲取與預處理[J].電腦知識與技術,2019,15(12):6-7.
[6]趙海國.Ajax技術支持下的ECharts動態(tài)數(shù)據(jù)實時刷新技術的實現(xiàn)[J].電子技術,2018,47(3):25-27.