◆徐梓赫 廖錦
(中國礦業大學(北京)地球科學與測繪學院 北京 100000)
GIS,GPS,RS 合稱3S,GIS 是一門涉及計算機,地理學,地圖學,遙感,測繪等學科的新興交叉學科,20年來,計算機技術的飛快發展使得GIS 領域技術也取得重大進步,如webgis,三維gis技術等,目前GIS 就業有以下幾個方向:(1)GIS 開發;(2)GIS 數據分析;(3)遙感制圖;(4)工程測繪;(5)學科教學。
高校在培養教育GIS 人才上總體發展正常,但是不同的高校側重方向不同,就導致不同學校GIS 畢業生掌握的能力和技術有較大的差別,使得非常多得畢業生對職位需求,就業方向,薪資水平等一系列問題感到困惑和迷茫,通過走訪得知,學生目前獲取就業信息得渠道非常有限,總結只有兩種:一種是師兄師姐,另一種就是網絡,而不管是哪種方法,學生所獲得的信息都相對的較窄,不能從整體上把控GIS 專業的就業形勢。
不管是給剛入學的GIS 專業學生提供專業未來發展前景,GIS技能,就業形勢等綜合信息,還是對畢業生整體把控就業方向,做到就業目標明確,對大量就業數據進行統計分析都是十分重要的,本文利用Python 爬取拉鉤網關于GIS 的就業數據,經過數據清洗預處理后,進行可視化,不僅能得到相應基礎信息的圖表還可以對招聘技能要求繪制詞云,總結GIS 專業就業形式特點。
使用GIS,遙感,測繪等關鍵詞在拉勾網進行搜索,最大程度抓取就業信息數據,對拉鉤網上每一個城市都進行數據抓取,先在Microsoft Edge 瀏覽器進入拉勾網首頁,搜索GIS 關鍵詞之后按F12或者單擊右鍵選擇檢查,檢查源代碼,觀察到瀏覽器的搜索欄url 并沒有變化,職位信息也不在源代碼中,這是因為拉勾網有反爬機制,通過對抓取的數據進行分析,找到職位信息儲存在了JSON 文件中,請求方式是post,相對于get 請求,post 請求的操作對所有用戶來說都是不可見的而且傳送數據量較大,這就為爬取增加了非常大的難度。添加headers 信息后用代碼模擬瀏覽器下載JSON 文件,用字典讀取數據得到.csv 文件,就可以拿到GIS 相關職位信息。
1.1.1 數據抓取
在瀏覽器控制臺XHR 中找到需要的數據包,這個包里面result下就儲存著要爬取的職位數據,要用程序來模擬瀏覽器進行網頁的訪問,這就需要加上頭信息(headers)和請求方式post,兩者都是通過網頁分析得到的,這樣就會拿到要請求的url,接下來通過JSON 讀取總職位數,根據每一頁顯示多少職位計算總頁數,寫循環來遍歷頁數爬取,最后將得到的數據全部寫入.csv 文件中。
爬取職位信息代碼如下:


1.1.2 數據存儲
將得到的.csv 所有文件合并成一個進而得到全國的GIS 職業數據,合并用cmd 命令提示符copy *.CSV all.csv,提取的基本信息如表1所示:

表1 數據存儲格式
臟數據處理分析
臟數據是指重復使用和不滿足條件的數據,網站上直接爬取下來的數據不能夠直接使用原因就是有大量的臟數據存在,因此要先對臟數據進行清洗處理,由于是.csv 文件,所以pandas 可以直接提取。
①去重并保存


②去除不需要的數據
得到的數據不全都是需要的信息,比如實習生崗位就要刪除,要進行數據清洗,過濾掉實習崗位。

一共得到了12354 條數據,經過數據清洗后得到有效數據8000條,用Python 將這些數據可視化處理,得到學歷,職位分布,薪資,職位名稱詞云和職位技能詞云的圖片并進行分析研究。
從圖1 可以看出,目前出現最多的職位名稱是GIS 開發工程師,主要職責有三個方面:(1)webgis 項目開發;(2)空間數據庫存儲;(3)GIS 產品測試。GIS 在我國正在快速發展,許多高校在培養學生時只有學術方面的講解,基本沒有實際項目的經驗,這也就使得學生很難適應GIS 開發工程師這個職位,而GIS 公司規模一般都不大,大多數都從事軟件開發,國企和事業單位非常少,經常會陷入學GI S 專業覺得不好就業,用人單位又招不到人的尷尬局面。圖2 展示了職位需求技能的詞云圖,出現頻率最高的是MySQL 數據庫,WebGI S,前端開發和javaScript,C++,HTML5 等幾門計算機語言,這也印證從事GIS 開發工程師工作需要不弱的編程能力,JavaScript 是目前在瀏覽器端最常見和應用最廣泛的語言,因此WebGIS 開發用它幾乎是必然的,而且大多都是前端開發,像ArcGIS API for JavaScript、OpenLayers、Mapbox、leaflet 都是js 封裝的地圖API 庫。Java 和C#主要是用來做后臺處理,C++主要用于底層開發,java 出現頻率更高說明web 前端開發要高于底層開發,不管是HTML5,JavaScript,C++計算機語言還是數據庫,WebGIS 前端開發,這些職位技能關鍵詞在招聘信息中所占的比例都很大,而且都與GIS 開發工程師這個職位相關,因此GIS 開發行業熱度很高。

圖1 職位名稱

圖2 職位技能
從圖3 可以看出職位學歷要求大部分要求本科,其次是大專,碩士和不限學歷都非常少,這說明本科學歷足以勝任大部分的工作,是大多數招聘單位的門檻學歷,研究生因更注重科研所以從事GIS 開發比例較少,而本科更注重實際應用,也有薪資相對較少的優勢,這在一定程度上說明本科比碩士從事GIS 開發更有利。從事一般的GIS開發工作本科學歷已經足夠。

圖3 學歷要求
將8000 條數據中的薪資區間繪制直方圖進行統計分析,如圖4,薪資主要集中在8k-15k,GIS 行業與計算機行業有著密不可分的關系,數據處理,存儲等等都要通過計算機來完成,學GIS 的學生必須要掌握計算機的基本知識,尤其要熟悉編程,但是按照實際情況GIS行業與計算機行業薪資差距較大,這可能源于以下兩個原因:

圖4 薪資水平
(1)GIS 二次開發熱度很高,但是更偏向于編程,一般不是特別需求GIS 的項目,原有的計算機開發人員在經歷短時間的學習之后可以較為輕松地投入工作,而且較GIS 專業學生開發經驗更豐富,代碼更精確,效率更高,因此專門招聘GIS 開發人員是沒有必要的,計算機開發人員對于公司而言可以得到更大的收益。
(2)GIS 開發人員往往只會使用單一的API,技能知識范圍太窄,在處理其他問題上能力不足,核心能力較計算機從業人員偏弱,但是隨著大數據逐漸興起,GIS 開發的需求會有所增長,這就為GIS開發人員提出了新的考驗。總的來說,雖然GIS 開發薪資水平較計算機行業有差距,但是比傳統的測繪和地信要好。
將崗位城市分布繪制餅狀圖,如圖5,顯示需求主要集中在北上廣深,武漢和成都,都是老牌一線城市和新一線大城市,這意味著在這些大城市中GIS 學生會有更多的就業機會,GIS 的智慧城市建設,數字城市建設,城市大腦,深度神經網絡等技術特點,在大城市中能夠更多地發揮出來。

圖5 崗位分布
(1)爬蟲是一個自動運行的程序,能夠將網頁上指定的目標抓取,獲得有用的信息,Python中有許多網絡爬蟲框架且語法更簡單易讀,因此用Python實現爬蟲是很好的選擇。
(2)本文通過Python抓取招聘職位信息相比傳統方法更加的高效準確,經過可視化分析后,能夠清晰直觀的展示出GIS行業目前人才需求方向,了解GIS開發詳情,通過數據分析可以認為:從總量上看,GIS開發崗位較多同時需要更強的編程能力;從薪資水平看,GIS開發人員擁有比傳統測繪地信專業更高的工資,但低于計算機行業;從地區分布看,大城市對GIS人員的需求更為旺盛。
(3)GIS學生應努力提升自己編程能力,擴展知識面,增長參加項目的經驗,不只局限于理論的學習,在大數據日漸興起的今天更應該緊跟潮流,加緊與計算機的聯系,滿足社會的需要。
(4)本文不足之處有兩點:沒有對連續年份職位變化進行分析,沒有獲得相應數據,無法進行崗位預測;數據采集局限于拉鉤網,相對較為單一。