楊眾
摘要:隨著近些年來Python語言在各個行業廣泛應用,各大公司對Python技術人員的招聘數量日益增多。利用Python語言的Scrapy框架技術從國內招聘網站上采集了15 000條招聘數據,對數據進行了處理和存儲,將招聘信息中的行業情況、經驗要求、工資情況、學歷要求、公司規模和招聘地區等進行了展現和分析。對Python語言框架技術、實現方式方法和必要代碼進行詳細講解,對目前國內招聘崗位的需求特點進行了大數據分析,為正在學習Python技術或有意向從事該行業的技術人員提供了參考和借鑒。
關鍵詞:Pyhton;Scrapy;網絡爬蟲;可視化;數據分析
中圖分類號:TP393文獻標志碼:A文章編號:1008-1739(2020)02-61-4

0引言
根據IEEE2019年對編程語言的排名,Python語言高居榜首,并且連續3年奪冠,已經超越Java和C語言,被稱為當今最流行的編程語言。目前,國內對Python人才的缺口已經高達50萬,使得相關職位的薪資和待遇逐年攀升,部分高精尖職位如人工智能和大數據開發等人才更是稀缺,不少公司開出30萬元的年薪都招不到人。IT領域人才招聘的渠道主要集中在互聯網招聘和熟人推薦,文章利用Python語言的爬蟲、數據存儲、處理和展現分析技術對當前主流的招聘網站進行分析,從數據層面反映了當前IT領域對Python技術人員的需求情況。
1相關技術
1.1 Python語言背景
Python語言是一種開放源代碼、免費的跨平臺高級語言,由Guido van Rossum于1989年發明。Python語言被稱為“膠水語言”,它可以非常容易地把Java和C++等主流語言粘在一起,實現程序之間的聯動。此外,Python語言還具有入門快、簡單高效、運行可靠、可擴展和數據處理能力強等特點[1 ]。Python語言擁有大量的第三方開源庫,使其在互聯網、數據分析、云計算、網絡爬蟲、自動化運維、Web開發和人工智能領域得到了廣泛的支持和應用。
1.2 Scrapy爬蟲框架
網絡爬蟲是Python應用中的一個分支,又稱為全網爬蟲,爬行對象可以從一些種子擴充到整個Web,主要為門戶站點、搜索引擎和大型的Web服務商提供采集數據[2]。Scrapy框架是Python中最著名、最受歡迎的爬蟲框架,完全通過Python語言進行編寫,基于Twisted的異步處理框架,架構清晰、成熟,模塊之間的耦合度低、可擴展性強,可以應用在數據挖掘、信息處理和存儲歷史數據等一系列的程序中。
1.3 Echars可視化庫
Echarts是由百度公司開發的一款基于JavaScript技術來實現的開源Web可視化庫,稱為商業級數據圖表。Echars底層依賴輕量級的canvas類庫ZRender,提供直觀、友好、可交互和高度個性化定制的數據可視化圖表,如折線圖、柱狀圖、散點圖、餅圖、K線圖、雷達圖和位置坐標圖等上百個圖表。
Echars的架構分為ZRender層和Echars層兩部分,其中ZRender層對圖形動畫、渲染引擎和一些基本的用戶交互方法進行了封裝;Echars層包含了具體的調用接口、視圖和一些交互組件。目前,Echars已經成為國內互聯網行業最熱門的可視化工具,被百度、阿里、騰訊、華為和京東等公司所使用。
2數據獲取
本文數據主要通過某大型互聯網招聘網站進行爬取,整個過程通過Python語言進行編寫。在數據爬取過程中,采用了模擬請求登錄、動態網頁抓取代理IP和多線程等技術手段。數據爬取后進行采集分析,對數據進行了清洗和轉換處理,并存儲到MySql數據庫,最后通過Echars可視化庫對數據進行展現和分析。
2.1框架搭建
通過比較流行的Scrapy爬蟲框架進行編程獲取,對網站中的崗位名稱、工作年限、學歷、崗位性質、公司性質、公司規模、公司全稱、業務方向、所在城市、福利待遇、工資標準和發布日期等12條信息進行抓取。
2.2數據定義


2.4數據處理與存儲
本設計采用MongoDB數據庫作為數據源存儲,MongoDB作為非關系型數據庫,基于Key-Value形式保存數據,這點與Python字典非常相似[3]。該語言可輕松橫向拓展、分片和集群,能夠輕松應對爬蟲字段變化等情況,非常適合存儲大規模爬蟲數據。
在Python中使用MongoDB,需要安裝驅動,并且導入驅動包。創建并進行訪問數據庫,數據庫創建代碼為Client = MongoClient(‘localhost,27017)[4]。數據庫創建后需要實現對數據的處理方法,程序pipelines.py實現了Item pipelines項目管道的具體實現,包括編寫數據清理、去重等方法,以及實現數據存儲。根據對招聘網站的解析,在工作年限字段,有部分內容為“不限”或“迎接畢業生”,為了便于統計和分析,將這2類信息的工作年限設置為0[5]。有部分含有“實習”的工作崗位,由于本分析僅限于全職崗位,故將實習崗位刪除。最后,將處理好的數據存入MongoDB數據庫,并且在settings.py中定義好數據庫的鏈接信息,在pipelines.py中實現MongoPipeline方法,部分代碼如下:



3.2行業情況分析
通過對15 000條招聘數據進行可視化實現,對行業及職位數量進行分析,找出了Python招聘崗位應用前6名行業,它們的排名和數量分別為移動互聯網招聘數據有4 893條信息、數據服務有2 981條、金融行業有2 211條、電商行業有2 107條、信息安全有1 423條、游戲行業有1 001條、其他行業有376條信息。可以看出,隨著采用Python技術的互聯網網站及應用越來越多,對Python工程師的需求也最大。
3.3工作經驗要求
在Echars程序的series部分,通過設置markPoint{data:[最大值,最小值]}可以設置數值曲線的最大值和最小值[6]。從工作經驗要求曲線中可以看出1/3的崗位均要求3~5年的工作經驗,共有5 700條招聘信息,應屆畢業生和超過10年工作經驗的人需求最少,僅剩600條招聘信息。
3.4工資情況
在Echars程序中markLine屬性設置data: {type: average, name: 平均值}可以計算出曲線平均值[6],如圖2所示。從工資曲線中,可以看到,Python崗位的平均工資為每月19 134元,其中招聘的應屆畢業生的工資最低,平均僅為8 030元,招聘3~10年以上工作經驗工資最高,達到27 380元。

從曲線趨勢中可以發現,經驗在3~5年左右的程序員工資會有一個較大提升,超過行業內平均工資,結合上面工作經驗曲線可以發現,這些技術人員的需求量也最大,所以相應的工資給的也比較多。經驗在5~10年內工資將會達到一個比較高的水平,但是招聘需求量有所遞減。經驗要求超過10年的變化不大甚至還有些回落的趨勢,分析10年以上的程序員雖然經驗豐富,但是年齡也偏大,工資變動不大。
3.5學歷要求
通過學歷要求餅狀圖可以發現大部分Python崗位對學歷要求不高,崗位需求普遍集中在本科生和專科生,本科生共有7 512條,占50%;專科生共有5 249條,占35%;碩士研究生有1 510條,占10%;博士生有148條,僅占1%;不限學歷的招聘信息有613條,占4%。
3.6公司規模情況
通過對公司上市情況和公司人員規模情況進行分析,發現Python崗位招聘的公司規模大部分以中小型企業為主。沒有經歷過融資的公司為1 493家占47%,上市公司為655家占19%。在公司規模上,以150人以下的小公司居多為1 495家占44%,2 000人以上的大型公司為701家占20%。

3.7地區城市
在參數geoCoordMap中定義城市坐標位置,并且通過Convert Data將坐標數據值進行拼接,最后通過setOption函數對地圖進行展現,形成坐標地圖。通過對崗位地圖坐標圖進行分析,Python崗位數量城市分布由多到少分別為:北京、廣州、深圳、上海、成都、杭州、西安、南京、武漢和蘇州等10個城市。可以發現,Python語言技術需求比較大的幾個城市仍然是互聯網比較發達的北上廣深等一線城市,Python技術從業者在一線城市有比較大的發展。
4結束語
本文利用比較流行的Python語言Scrapy框架對互聯網數據進行采集和分析,并通過Echars可視化圖表將分析出來的數據進行多元展現,采用的方法為在互聯網下的大數據分析和決策支持提供了思路。通過對互聯網Python崗位的招聘信息進行分析可以發現,在一線城市中從事互聯網行業、具備3~5年工作經驗的本科生最為搶手,工資待遇也比較不錯,為IT行業的求職者提供了方向。
參考文獻
[1]王芳.基于Python的招聘網站信息爬取與數據分析[J].信息技術與網絡安全,2019,38(8):42-46.
[2]李文龍.基于Docker集群的分布式爬蟲研究與設計[D].杭州:浙江理工大學,2017.
[3]賈檸瑜.基于python爬蟲的崗位數據分析———以拉勾網為例[J].信息技術與信息化,2019(4):64-66.
[4]李璋.基于Hadoop的互聯網數據營銷系統的設計與實現[D].北京:中國科學院大學,2017.
[5]林長謀,黃瑋.基于Python的就業崗位數據獲取與預處理[J].電腦知識與技術,2019,15(12):6-7.
[6]趙海國.Ajax技術支持下的ECharts動態數據實時刷新技術的實現[J].電子技術,2018,47(3):25-27.