羅卓君 徐宇星
關(guān)鍵詞:Python;爬蟲;高職計算機網(wǎng)絡(luò)技術(shù)專業(yè);市場調(diào)研
1項目需求
專業(yè)市場調(diào)研是保證專業(yè)教育教學(xué)與對應(yīng)產(chǎn)業(yè)深度融合、符合相關(guān)行業(yè)需求的核心工作基礎(chǔ)[1]。通過對高職計算機網(wǎng)絡(luò)技術(shù)崗位群[2]的分析,主要包括網(wǎng)絡(luò)售前技術(shù)支持、網(wǎng)絡(luò)售后技術(shù)支持、信息安全工程師、網(wǎng)絡(luò)管理工程師、網(wǎng)絡(luò)工程師、網(wǎng)站設(shè)計師、網(wǎng)絡(luò)系統(tǒng)集成工程師、數(shù)據(jù)庫管理工程師、網(wǎng)絡(luò)架構(gòu)師、系統(tǒng)工程師十個具體崗位。計算機網(wǎng)絡(luò)技術(shù)專業(yè)在撰寫調(diào)研專業(yè)報告時通過文獻調(diào)研、現(xiàn)場走訪調(diào)研、問卷調(diào)研、網(wǎng)絡(luò)調(diào)研等方法獲得了企業(yè)所需人才的相關(guān)數(shù)據(jù),但數(shù)據(jù)量較小,參考價值有限。
5ljob“前程無憂”是中國具有廣泛影響力的人力資源服務(wù)供應(yīng)商[3],國內(nèi)絕大部分企事業(yè)單位都會在此網(wǎng)站發(fā)布招聘信息,數(shù)據(jù)較為權(quán)威。如果能獲取5ljob網(wǎng)站上湖南省和全國的關(guān)于計算機網(wǎng)絡(luò)技術(shù)專業(yè)崗位的相關(guān)數(shù)據(jù),并有一個較為直觀的展示,會為專業(yè)調(diào)研報告提供可靠的數(shù)據(jù)來源,對專業(yè)的培養(yǎng)方向、人才培養(yǎng)方案的制定有重要的參考價值。
本文希望通過編寫一個Python爬蟲系統(tǒng)(以下稱“本系統(tǒng)”),爬取5ljob網(wǎng)站計算機網(wǎng)絡(luò)技術(shù)專業(yè)對應(yīng)十個崗位的相關(guān)數(shù)據(jù),并對數(shù)據(jù)進行清洗和可視化處理,以獲得人數(shù)需求量、薪資水平及學(xué)歷要求的直觀圖。
2關(guān)鍵技術(shù)分析
2.1爬蟲技術(shù)
Python中主要有urllib,urllib2,requests,aiohttp,Scrapy,pyspider等爬蟲庫。本系統(tǒng)采用requests庫,此模塊操作簡單、功能強大且高效o requests庫的核心功能是,向提供的網(wǎng)絡(luò)地址發(fā)出請求,返回網(wǎng)絡(luò)地址對應(yīng)頁面中所有信息的response對象,并將響應(yīng)的數(shù)據(jù)能永久存儲到文件中[4]。
2.2數(shù)據(jù)清洗技術(shù)
數(shù)據(jù)清洗是在爬蟲爬取數(shù)據(jù)之后,對數(shù)據(jù)進行分析處理,根據(jù)需求保留有意義的數(shù)據(jù),是保障最終數(shù)據(jù)有效性和正確性的重要方法。Python中主要有numpy和pandas庫來實現(xiàn)數(shù)據(jù)清洗。本系統(tǒng)主要采用pandas庫。pandas庫能讀取csv,execel,mysql等類型的存儲文件,常用的數(shù)據(jù)結(jié)構(gòu)主要有series和DataFrame,提供了功能強大的方法,能靈活地獲取和處理存儲文件中的數(shù)據(jù)[5]。
2.3數(shù)據(jù)可視化技術(shù)
數(shù)據(jù)可視化處理是在獲取有效數(shù)據(jù)之后,把數(shù)據(jù)以圖表的形式呈現(xiàn)出來,讓數(shù)據(jù)具備更好的可讀性。Python中matplotlib,pygal,pyecharts等庫都能進行可視化處理。本系統(tǒng)采用的pyecharts庫支持鏈?zhǔn)秸{(diào)用,具備高度靈活的配置項,囊括30多種常見圖表,并能繪制具有一定交互功能的動態(tài)圖像[6]。
3項目實現(xiàn)
本系統(tǒng)使用PyCharm作為開發(fā)工具,Python作為開發(fā)語言,主要采用requests庫做爬蟲、pandas庫做數(shù)據(jù)清洗、pyecharts庫做可視化處理,這三個庫都是第三方庫,需要采用pip install庫進行安裝再使用。
3.1爬取與初步清洗數(shù)據(jù)
通過登錄5ljob網(wǎng)站,搜索到地區(qū)和相關(guān)崗位的網(wǎng)址后,進行網(wǎng)站數(shù)據(jù)的爬取與初步清洗。其中有4部分關(guān)鍵代碼。
(1)構(gòu)造url,headers,params,cookies四個參數(shù)的內(nèi)容。url參數(shù)是程序要爬取的地址,已知計算機網(wǎng)絡(luò)技術(shù)專業(yè)的十個崗位,通過登錄5ljob網(wǎng)站,搜索崗位及地區(qū),獲取十個湖南省和十個全國的崗位鏈接地址,構(gòu)造湖南省和全國兩個url地址列表;Headers參數(shù)起到模擬瀏覽器的作用;params參數(shù)是在訪問url時攜帶的參數(shù);cookies參數(shù)用于完成5ljob用戶驗證。
(2)使用get方法發(fā)送請求,返回response對象。具體代碼如下。
response=requests. get(url,headers=headers,params=params,cookies=cookies)
(3)使用response對象的text方法獲取響應(yīng)對象中的數(shù)據(jù)值,同時考慮到url列表中的地址如果有頁碼,使用循環(huán)讀取每頁數(shù)據(jù)。關(guān)鍵代碼如下。
(4)初步清洗數(shù)據(jù),并存儲數(shù)據(jù)到CSV文件。這一步首先使用了pandas模塊的read_j son方法把獲取的數(shù)據(jù)轉(zhuǎn)成json格式,并用DataFame方法初步清洗數(shù)據(jù),獲取需要的數(shù)據(jù)信息,最后把湖南省的招聘數(shù)據(jù)存儲到“zhaopin_湖南.csv”文件內(nèi),全國的招聘數(shù)據(jù)存儲到“zhaopin_全國.CSV”文件內(nèi)。以湖南省招聘數(shù)據(jù)為例,關(guān)鍵代碼如下。
3.2清洗數(shù)據(jù)
在已有的csv文件的基礎(chǔ)上,進一步清洗數(shù)據(jù),方便進行可視化處理。其中有5部分關(guān)鍵代碼。
(1)匹配崗位。通過re模塊的compile方法來匹配崗位。以信息安全崗位為例的關(guān)鍵代碼如下。
3.3可視化處理
數(shù)據(jù)清洗完成后,為了讓數(shù)據(jù)的可讀性更強,本系統(tǒng)使用pyecharts庫對數(shù)據(jù)進行可視化處理。根據(jù)數(shù)據(jù)的特性,崗位與人數(shù)需求采用柱狀圖,崗位與學(xué)歷要求采用餅圖,崗位與薪資水平采用折線圖,最終以網(wǎng)頁的形式展示出來。其中有4部分關(guān)鍵代碼。
(3)參數(shù)配置。參數(shù)配置根據(jù)具體的圖形各有區(qū)別,但基本分為添加坐標(biāo)、全局配置和系列配置三個部分。以崗位與人數(shù)需求的柱狀圖為例,代碼如下。
通過可視化處理后,崗位與人數(shù)需求如圖1所示。崗位與學(xué)歷需求(由于崗位與學(xué)歷是以每個崗位一張圖,僅以信息安全崗位學(xué)歷需求為例)如圖2所示。全國崗位與薪資水平如圖3所示。
4結(jié)束語
本文通過Python的爬蟲模塊,爬取了5ljob網(wǎng)站內(nèi)計算機網(wǎng)絡(luò)技術(shù)專業(yè)對應(yīng)十個崗位在2021年12月的相關(guān)數(shù)據(jù)信息,并對數(shù)據(jù)進行清洗和可視化處理。通過數(shù)據(jù)結(jié)論圖表,能清晰地看到每個崗位在湖南省和全國分別需要的人數(shù)、薪資水平和學(xué)歷要求。本系統(tǒng)既為書寫專業(yè)調(diào)研報告打下了重要的數(shù)據(jù)基礎(chǔ),還為選擇專業(yè)人才培養(yǎng)方向和制定人才培養(yǎng)方案提供了重要的參考價值。通過定期重新爬取、更新數(shù)據(jù),可持續(xù)作為計算機網(wǎng)絡(luò)技術(shù)專業(yè)崗位數(shù)據(jù)信息的重要來源之一,稍作修改即可在其他專業(yè)進行推廣應(yīng)用。