古軍偉 靳海亮 杜軍 王超
摘 要:GIS專業相關招聘數據缺乏,導致學生不能整體把握行業需求及就業前景。通過Python爬蟲程序爬取智聯招聘中與GIS開發相關的就業信息,將處理后的數據利用Echarts和Excel進行可視化分析。通過分析數據得出以下結論:本科學歷為大多數單位的招聘門檻;省會、中部以及東部沿海城市地區人才需求較多;WebGIS相比較底層或者移動端的GIS開發需求比例更高;GIS開發薪資待遇略低于計算機,但比傳統GIS其它方向要高;GIS專業學生從事GIS開發比較有優勢。這些結論為地信專業的學生未來從事GIS開發制定學習計劃提供借鑒,也可為高校教學對接社會需求提供參考。
關鍵詞:Python爬蟲;GIS開發就業信息;數據可視化
DOI:10. 11907/rjdk. 191482 開放科學(資源服務)標識碼(OSID):
中圖分類號:TP391文獻標識碼:A 文章編號:1672-7800(2020)002-0140-04
英標:GIS Development Employment Information Acquisition and Analysis Based on Python
英作:GU Jun-wei1,JIN Hai-liang1,DU Jun2,WANG Chao2
英單:(1. School of Surveying and Land Information Engineering, Henan Polytechnic University, Jiaozuo 454150, China;2. Institute of Geographical Sciences, Henan Academy of Sciences, Zhenzhou 450000, China)
Abstract: Colleges and universities lack the support of data analysis of GIS development and recruitment for students majoring in GIS, which leads to students'inability to grasp the industry needs and employment prospects as a whole. This paper describes the process of using Python crawler program to crawl employment information related to the development of GIS in the recruitment of Intelligent Union. After data processing, the processed data are visualized by Echarts and Excel. Through the analysis of the data, the following conclusions are drawn: undergraduate degree has been called the recruitment threshold of most units; there is more demand for talents in provincial capitals, central and eastern coastal cities; WebGIS has a higher proportion of demand than the bottom or mobile GIS development; the salary of GIS development is slightly lower than that of computer, but higher than other directions of traditional GIS; students majoring in GIS are engaged in GIS development. There are comparative advantages. These conclusions can provide references for students majoring in Geoclass to make learning plans for future GIS development industry, and also for university teachers to meet the needs of society.
Key Words: Python crawler; recruitment information for GIS development; data visualization
0 引言
GIS專業是與多種學科有交集的新興邊緣學科[1]。GIS就業分為兩大類:一類從事數據處理與應用,另一類從事GIS開發[2]。隨著計算機技術的發展,GIS開發領域不斷擴大[3-5]。
高校GIS教育發展良好,但是在GIS專業學生培養方面卻存在很多問題[6-8]。GIS專業的學生對職業需要的專業技能、學歷要求、地區需求以及待遇等一系列問題很困惑[9-13]。學生獲取就業信息主要有兩種方式:一是通過詢問老師或師兄師姐獲取就業信息,二是通過搜索招聘網站獲取信息[14-15]。無論哪種方式,學生都不能從整體上把控就業信息,所以高校通常采用問卷調查或者互聯網在線答題方式解決這一問題,但是此方式費時、費力,獲取的數據量較小。
為了讓高校教師和剛入學的GIS專業學生了解當下GIS就業技能需求、地域分布以及學歷要求等綜合信息,本文通過Python獲取智聯招聘網站GIS開發招聘信息,經過數據清洗和反地理編碼處理,利用Echart和Excel對數據進行可視化展示和分析。
1 數據采集和處理
1.1 數據采集
地信二次開發方向涉及到WebGIS、桌面開發和底層開發[16],為了最大程度地抓取數據,將關鍵詞設為GIS開發,區域設置為全國,以便抓取全國范圍的數據,然后在火狐瀏覽器的智聯招聘首頁上輸入關鍵詞與區域進行數據檢索,利用開發人員工具(F12)獲取數據請求URL,對請求的參數以及響應內容進行分析。抓取數據采用多種方式,可以通過返回Json的數據格式,也可以通過獲取每個招聘信息的靜態頁面鏈接進行二次爬取,還可以通過兩種方式相結合獲取數據。相結合的方式可以獲取每個職位的靜態頁面地址,并發起請求獲取靜態頁面的數據進行正則匹配,這種方式比第一種方式獲取的職位信息更多,比第二種方式獲取靜態頁面的URL更為簡單[17-18],最后將獲取的數據保存為xlsx文件。
1.1.1 數據抓取
采用json數組和正則表達式相結合的方式獲取智聯招聘數據,首先設置請求的關鍵詞和請求區域,獲取招聘職位的總頁數,然后通過總頁數以及頁數據量構造每一頁的數據請求,從而獲取每一頁招聘信息的json數組,提取數組中的每一個靜態網頁URL存儲到數組中。偽造頭部采用隨機方式,將頭部信息聲明為數組結合Random進行隨機獲取,設置每個請求休息一秒,防止計算機IP地址被封而無法進行數據爬取,采用xpath進行匹配獲取每個靜態頁面的招聘信息[18]。以下是獲取信息進行匹配的核心代碼:
job_stat = s.xpath('//div[@class="main1 cl main1-stat"])[0]
stat_li_first = job_stat.xpath('./div[@class="new-info"]/ul/li[1])[0]
job_name = stat_li_first.xpath('./h1/text()')[0] # 工作名
salary = stat_li_first.xpath('./div/strong/text()')[0] # 月薪
stat_li_second = job_stat.xpath('./div[@class="new-info"]/ul/li[2]')[0]
company_name = stat_li_second.xpath('./div[1]/a/text()')[0] # 公司名稱
city_name = stat_li_second.xpath('./div[2]/span[1]/a/text()')[0] # 城市名
workingExp = stat_li_second.xpath('./div[2]/span[2]/text()')[0] # 工作經驗
eduLevel = stat_li_second.xpath('./div[2]/span[3]/text()')[0] # 學歷
amount = stat_li_second.xpath('./div[2]/span[4]/text()')[0] # 招聘人數
job_text = s.xpath('//div[@class="pos-ul"]//text()') # 工作要求
1.1.2 數據存儲
利用xpath代碼對抓取的數據進行匹配,然后將數據以表1的數據格式存儲到csv文件中,以地名+搜索關鍵字的方式命名文件。
1.2 數據處理
數據處理主要包括“臟數據”(包括重復數據和無法使用數據)的剔除和反地理編碼。獲取的元數據不能直接使用,因為其中有一些“臟數據”需要剔除,同時也需要為地名反地理編碼。由于待處理的數據需要結合百度地圖進行區域分布渲染,所以處理數據采用Java語言進行書寫,剔除臟數據,同時將數據轉換成json數據格式,方便數據可視化分析。反地理編碼采用百度API提供的地理編碼接口進行轉換,逆地理編碼核心代碼如下:
if (ValidateHelper.isNotEmptyString(str)) {
Map
String subStr = str.substring(str.indexOf('(') + 1, str.indexOf("})") + 1);
//字符串轉成json格式
JSONObject jsonObj = JSONObject.parseObject(subStr);
//獲取經度
Object lng= jsonObj.getJSONObject("result").getJSONObject("location").get("lng");
//獲取緯度
Object lat = jsonObj.getJSONObject("result").getJSONObject("location").get("lat");
map.put("lng", lng);
map.put("lat", lat);
/返回經緯度
return map;
}
2 數據可視化與分析
通過程序爬取3 123條招聘信息,經過數據清洗和去重,有3 000條可供使用。將這些數據通過Excel和Echarts[19-21]進行人才學歷、招聘空間分布、技能關鍵字以及專業要求進行分析。
2.1 人才學歷需求分析
從圖1可以看出,地信開發行業招聘的學歷需求呈現兩極分化的特點:大多集中于本科和??茖W歷,其中本科要高于專科;研究生和學歷不限的非常少,這點也說明研究生從事地信開發職業的較少,而無學歷要求僅占5%的比例,說明大多數招聘單位會設有學歷門檻限制。圖1從一定程度上說明在地信開發行業中,本科學歷就能完全滿足招聘單位要求,比研究生學歷從事地信開發更有優勢。這種現象也與我國教育有關:研究生注重科研而本科生注重實際應用。GIS招聘要求本科學歷占比非常高。
2.2 招聘需求空間分布分析
將招聘信息數據在空間分布上進行渲染,以熱力圖形式展示如圖2所示。熱力圖越接近紅色表示招聘需求越高,由熱力圖分布可以看出,GIS開發崗位需求大多集中于中東部地區或沿海城市,北京和上海形成了兩個中心區域,顏色越深表明該區域招聘需求越大。
2.3 技能關鍵字分析
招聘需求的關鍵字以詞云方式展示出來,統計數據中技能、數量越多的關鍵字,字體就越大。從圖3可以看出,首要的技能就是ArcGIS系列軟件操作,需要通過ArcGIS商業軟件對前期數據進行加工,其次對開源的需求也有一定數量;在前端像Openlayers和LeaFlet 這類開源的API需求比商業的arcgis for javacaript需求相對較少,在數據庫方面開源數據庫mysql和postgresql所占比例不大,而Oracle和SqlServer所占比例較大;在編程語言方面Java和C#占比較大,緊接著是C++。Java和C#主要用于WebGIS后臺處理,C++用于底層開發,說明Web開發要高于底層開發;對于WebGIS開發服務器的選擇,GeoServer和ArcServer兩者比例大致相等,前者代表開源,后者代表商業。無論是HTML、Css、JavaScript這類前端所用的標簽和腳本語言,還是數據庫、前端GIS開發API,這些技能在招聘信息中占比都較大,而且這些關鍵字都與WebGIS有關,印證了地信開發行業WebGIS需求很高。
2.4 專業要求分析
3000多份招聘信息中的專業要求(小數目專業不統計,一個職位可以多個專業)采用直方圖方式展示。如圖4所示,地信專業遙遙領先,緊接著就是計算機專業,兩者相差不大,測繪和遙感所占比例較小。GIS開發主要涉及的是GIS理論和計算機開發技術,非專業人才難以理解GIS理論。隨著各大地圖廠商如百度、谷歌、高德等相繼推出高度封裝的API,使得非專業性的地信開發方向難度降低,對開發人員的GIS理論要求不是很高,這也是為什么計算機專業需求較高的原因,總的來說GIS專業學生比較有優勢。
2.5 薪資水平分析
在3000份樣本中主要展示WebGIS工資水平直方圖(不分城市地區,工資區間格式取下限),桌面端和底層開發太少不展示。地信開發(WebGIS)的主要薪資集中于10k、8k、9k和6k,薪資水平和計算機行業差的比較多。WebGIS屬于前端開發,薪資待遇要低于計算機行業的純前端,這個問題可能源于兩個方面:
(1)WebGIS在技術開發中主要是對API的使用,例如開源中的OpenLayers和Leaflet,商業中的超圖和ArcGIS。在商業方案中對API集成比較全,開發者容易快速適應。雖說開源集成可能沒有商業那么好,但是開源有眾多的插件可供使用,容易入門學習、成本低、可以短時間快速投入工作。一般不是專業層級的GIS項目,只需原有的前端人員簡單學習就可完成項目,沒有必要去招聘專門做GIS的開發人員。
(2)WebGIS開發人員社會需求還不是很大,據招聘信息可知,招聘人數需求大約5000人,這個比例相比較計算機行業還是較少的。但是隨著大數據的興起,WebGIS社會需求會有所改變。WebGIS開發人員技能往往比較單一,即只會單一API使用,僅僅只能處理WebGIS問題,造成綜合處理問題能力較低并且核心競爭力偏弱,變成項目附屬人員??傮w而言,GIS開發人員待遇比傳統測繪和地信行業待遇好,但要略低于純計算機行業。
3 結語
Python提供了多種類庫,能夠便捷地獲取網絡數據,通過Python爬蟲獲取網絡數據是一個比較好的方式。Echart可視化結合Excel彌補了Excel在空間分布展示的缺陷。以上幾種技術結合,能夠快速獲取和展示數據,為數據分析提供方便。
相比較以往學校通過問卷調查、走訪、發送郵件、電話咨詢等方式獲取就業信息,本文通過Python抓取招聘信息方式具有更加方便、快捷、準確等優勢,數據通過Excel和Echart可視化展示,能夠直觀顯示GIS開發行業人才需求,通過分析數據能夠深入了解當下GIS開發詳情。但此次分析的數據沒有連續的年份數據,無法對GIS開發需求作出預測,如何獲取連續年份數據以及對連續年份數據進行分析還需進一步研究。
參考文獻:
[1] 王小兵,孫久運. 地理信息系統綜述[J]. 地理空間信息,2012,10(1):25-28.
[2] 龔健雅. 當代地理信息系統進展綜述[J]. 測繪與空間地理信息,2004(1):5-11.
[3] 郝杰.? 基于WebGIS的近岸海域空間綜合整治管理信息系統圖形子系統的設計與實現[D]. 沈陽:遼寧師范大學,2018.
[4] 宋仁波,張云,李文慧,等. 軟件考試驅動的GIS專業教學改革與實踐——以“空間數據庫”課程為例[J]. 測繪工程,2018,27(4):76-80.
[5] 郭先春,李大軍,程朋根,等. GIS二次開發課程案例化教學方法探索[J]. 測繪科學,2011,36(3):244-246.
[6] 白建軍. GIS專業碩士研究生培養中存在的問題及對策[J]. 教育現代化 ,2018,53(5):33-35.
[7] 中國地理信息系統協會. 2010?中國地理信息產業高校畢業生就業報告 [J]. 3s 新聞周刊,2010(10):38-44.
[8] 陳泰生,王春,王妮,等. 新建本科高校地理信息科學專業人才培養模式研究——以滁州學院為例[J]. 湖北科技學院學報,2018,38(5):140-143,148.
[9] 吳長彬,孫在宏,陳磊. GIS企業研究生工作站運營和人才培養模式探究[J]. 地理信息世界,2018,25(3):118-122.
[10] 曉東. 美國GIS特色院校申請及就業展望[J]. 中國測繪,2011(6):20-25.
[11] 劉正綱,楊金玲,李玲,等. 以人才需求為導向的GIS專業課程體系構建[J]. 測繪工程,2018,27(6):77-80.
[12] 羅瓊,蔣煥洲. 應用型地方高校地理科學專業創新人才GIS技能培養體系構建與實踐的探索——以凱里學院地理科學專業為例[J]. 西部素質教育,2018,4(7):11-12.
[13] 肖振強. 從美國GIS調查淺談國內GIS教育與就業[J]. 中國測繪,2009(6):48-51.
[14] 劉彥花,周美寧. GIS專業就業現狀分析與人才培養的思考[J]. 大眾科技,2012,14(2):187-189.
[14] 溫永寧. 淺論開源軟件在GIS專業能力培養中作用[J]. 電腦知識與技術,2017,13(18):135-137.
[15] 徐艷,黃瑞,馬玉銀,等. 高職院?!癎IS設計與開發”課程教學改革探索[J]. 職教通訊,2017(9):8-10.
[16] LZU-GIS . 寫給在校的GISER[EB/OL]. [2018-11-08]. https://blog.csdn.net/gisshixisheng/article/details/83796585.
[17] 羅江華. 基于MD5與Base64的混合加密算法[J]. 計算機應用,2012,32(S1):47-49.
[18] 白雪麗. 淺析基于Python爬蟲技術的特性及應用[J]. 山西科技,2018,33(2):53-55.
[19] UNDCL.什么是Echarts?如何使用Echarts?[EB/OL]. [2017-11-04].http://www.cnblogs.com/Undeceive/p/7782830.html.
[20] 洪敏,吳紅亞,楊保華. 基于HTML的ECharts的動態數據顯示前端設計[J]. 計算機時代,2018(8):27-28,32.
[21] 萬穎樺.? 基于GIS技術的電商銷售數據時空統計分析及可視化表達[D]. 南昌:東華理工大學,2018.
(責任編輯:杜能鋼)