





關鍵詞:Python;Selenium;數據爬取;數據可視化;招聘數據;大數據崗位;某直聘
中圖分類號:TP311.5 文獻標識碼:A
文章編號:1009-3044(2024)36-0063-04"開放科學(資源服務) 標識碼(OSID) :
0 引言
隨著人工智能和大數據技術的快速發展,從海量數據中提取有用信息的需求日益增長,網絡爬蟲和數據可視化技術成為重要的工具。現有研究已應用這些技術對招聘數據進行分析,例如,裴麗麗[1]利用Sele? nium和Matplotlib分析了爬蟲工程師崗位的地區平均薪資;蔡文樂等[2]使用Scrapy和Echarts對C語言工程師崗位進行了可視化分析;郭瑾[3]利用Requests和Mat? plotlib分析了北京地區大數據運維崗位數據;付騰達等[4]使用Requests和Echarts分析了南昌市IT崗位信息。然而,這些研究存在數據量不足、分析維度單一、區域局限性等問題。本文基于Python,利用Selenium、Pandas和Matplotlib,對某直聘網站12個一線城市的“大數據”崗位招聘信息進行爬取、清洗和可視化分析,旨在更全面地揭示大數據崗位的市場需求特征,為求職者、高校和用人單位提供更具參考價值的信息。
1 技術概述
1.1 技術原理
網絡爬蟲是指按照一定的規則,自動地抓取萬維網信息的程序或者腳本[5]。本文通過編寫網絡爬蟲程序,利用爬蟲程序獲取某直聘網站“大數據”崗位頁面,然后從頁面中提取崗位信息,并保存數據。數據清洗是指對數據進行重新審查和校驗的過程,包括檢查重復、缺失或錯誤的數據以及處理一些特殊的數據。本文通過編寫數據清洗程序,對爬取的原始數據進行刪除重復值、補充缺失值、清理不需要的字符、替換字符串、刪除含有特定字符串的行等操作,完成對數據的清洗處理,從而保證“大數據”崗位數據的準確性和完整性。數據分析是指用適當的統計分析方法對收集來的大量數據進行分析,將它們加以匯總、理解和消化。數據可視化則是指將數據以圖表的形式呈現,以便更好地理解和分析數據,幫助用戶發現數據中的模式、趨勢和關聯,更直觀地發現數據的規律,并從中獲取有價值的信息和見解。本文通過編寫數據可視化分析程序,將清洗后的數據,通過篩選、分詞、分組、求和、求平均值、排序等統計方法,得出有參考價值的數據并生成各種圖表,最后根據圖表進行分析,得出“大數據”崗位需求結論。
1.2 功能模塊
主要包括數據采集模塊、數據清洗模塊、數據可視化分析模塊。一是數據采集模塊,主要利用Sele? nium庫獲取崗位簡介頁面和崗位詳情頁面的源代碼,然后進行頁面解析,將解析提取的崗位數據保存至本地文件中。二是數據清洗模塊,主要利用Pandas庫對文件中的崗位數據進行清洗和處理,包括刪除重復數據、填充缺失值、清理不需要的字符、將字符串轉換為小寫或大寫、刪除含有某個特定字符串的行等。三是數據可視化分析模塊,先利用Pandas模塊對清洗之后的崗位數據進行篩選、分組、統計、排序等操作,然后使用Matplotlib模塊實現數據可視化,常見的可視化圖表包括柱形圖、條形圖、餅圖、詞云圖等。
相關流程步驟表現為:第一步確定目標網址URL,利用Selenium庫,獲取指定的cookie信息;第二步注入cookie信息,發送頁面請求,獲取響應回來的源代碼;第三步解析源代碼,提取所需的崗位數據;如果所有頁面都請求完畢,則保存采集到的所有數據到文件中。否則,繼續請求下一個頁面,流程回到第二步。當數據保存完畢后,接下來對數據進行清洗處理,然后對清洗后的數據進行可視化分析。
2 數據爬取關鍵技術實現
2.1 獲取頁面源代碼
網站為了保護網站安全和減輕服務器壓力會設置反爬機制。常見的反爬機制有:IP封禁,同一IP地址在短時間內發送大量請求,很可能會導致該IP被封禁;User-Agent 檢測,通過檢測HTTP 請求頭中的User-Agent字段來判斷是否為爬蟲訪問;驗證碼,通過要求用戶輸入驗證碼來驗證訪問者的真實性,防止機器自動訪問;追蹤用戶登錄狀態,通過Session 和Cookies來追蹤用戶的登錄狀態,爬蟲如果沒有正確管理Session或模擬登錄狀態,可能會被限制或封禁。
針對IP封禁可以采取的應對策略:1) 使用代理池,通過切換IP地址來規避限制,可以使用代理服務商提供的高匿名代理或自己搭建代理池。2) 控制請求頻率,通過隨機延時來避免過于頻繁的請求,模擬正常用戶行為。針對User-Agent檢測可以采取的應對策略:更換請求頭User-Agent來模擬來自不同用戶的請求。針對驗證碼可以采取的應對策略:1) 使用驗證碼識別服務,利用第三方驗證碼識別服務(如TTOCR、 2Captcha、百度OCR等) 可以幫助自動識別驗證碼并返回結果。2) 人工干預,如果爬蟲需要頻繁處理驗證碼,可以采取人工介入的方式解決。在腳本中加入人工干預的步驟,比如暫停腳本執行,讓用戶輸入驗證碼。針對用戶登錄狀態可以采取的應對策略:1) 模擬登錄,獲取必要的認證信息(如Cookies) 后,攜帶這些信息發起后續請求。2) 自動處理Session,使用瀏覽器自動化工具來模擬真實用戶的登錄行為,獲取動態生成的認證信息,再次發送請求,Cookies信息會被自動攜帶。
在爬取某直聘網站數據時遇到的反爬問題主要包括追蹤用戶登錄狀態、圖形驗證碼、IP封禁。本文采取的應對策略:利用Selenium庫,模擬真實瀏覽器,發送請求,并模擬用戶登錄,保持登錄狀態以便訪問被限制的崗位信息;由于該網站需要頻繁處理驗證碼,所以采取人工干預的方式解決驗證碼問題;輪換使用代理IP(如random.choice(proxy_list)),從而避免IP被封,確保爬蟲能夠持續運行。
首先使用webdriver.Chrome()打開瀏覽器,接著使用driver.get()發送頁面請求,然后使用driver.get_cook? ies()獲取所有Cookies信息,并保存為.json文件。
2.3 保存數據
爬取到的數據可以保存到MySQL數據庫中,也可以保存到Excel文件中,本文選擇后者,這樣方便后續對數據進行清洗處理。具體做法是使用pd.DataFrame ()函數,將爬取到的信息構建成一個數據框架df,使用df.to_excel('大數據崗位.xlsx',index=False)函數寫入到Excel文件,總共3 598行,17個字段,文件部分截取內容如圖1所示。
3 數據清洗關鍵技術實現
接下來利用Pandas庫對Excel文件中的原始數據進行清洗處理,步驟和方法如下:
第一步,讀出原始數據。使用pd.read_excel('大數據崗位.xlsx')函數讀出Excel中的所有數據。
4.3 使用年限、學歷等數據生成餅圖
獲取“年限”“學歷”字段的所有數據,使用(df['年限']==\"1-3年\").sum()統計各個年限級別、各個學歷級別的崗位數量,然后使用plt.pie()分別繪制餅圖。如圖5所示,該圖表明3~5年經驗年限的崗位最多,占比為36.5%,其次是5~10年的,然后是1~3年的,接著是1年以下或經驗不限,占比15.9%,這說明適合應屆畢業生的崗位還是比較多的。另一個餅圖,本科學歷對應的崗位最多,占比為75%,其次是大專,占比11.1%,這說明適合高職畢業生的就業崗位也比較多。
4.4 其他可視化分析
一是按照工作地區統計平均薪資。獲取“工作地區”“崗位薪資”字段的所有數據,從“工作地區”字段提取出城市名,然后按城市名分組統計出每個城市的平均薪資,繪制“各個城市對應的平均薪資”條形圖。統計得出杭州的平均薪資最高32.7,其次是深圳28.3、上海28.1、北京28.0,而廣州平均薪資相對較低,只有20.5,單位都是千元/月。杭州平均薪資高的原因是大部分企業都是按超出12個月的薪資來計算的,如15、16或17月薪。杭州的互聯網產業非常發達,這帶動了整個城市的數字經濟發展。其以電子商務、互聯網、金融服務等為支柱的產業體系,帶動了大量的就業機會,同時也提高了高新技術的工資水平。二是按照崗位涉及的行業統計崗位占比。從“公司規模”字段提取到涉及行業數據,然后按照“行業”分組統計出每個行業的崗位數量,繪制“各個行業的崗位數量占比”環形圖。可以得出,計算機軟件行業的大數據崗位最多,占34.4%,其次是互聯網、大數據行業、通信/ 網絡設備、計算機服務、電子商務等。三是按照公司規模人數統計崗位占比。從“公司規模”字段提取到企業規模數據,然后按照“企業規模”分組統計出每種規模級別的崗位數量,繪制“各種規模級別的崗位數量占比”環形圖。可以得出,崗位數量占比最大的企業規模是100~499人,占24.8%,其次是20~99人的規模,說明中小企業提供的大數據崗位較多。
5 結束語
本文基于Python爬蟲技術,對某直聘網站的大數據崗位招聘信息進行了爬取和可視化分析,揭示了大數據崗位的市場需求特征,包括技能要求、薪資水平、學歷與經驗要求、地區分布、行業分布和公司規模分布等。研究結果可為求職者提供就業指導,為高校制定人才培養方案提供參考,也為用人單位的招聘決策和人力資源管理提供依據。未來研究可以進一步探索其他數據源,例如拉勾網、智聯招聘等,并結合更先進的數據分析方法,例如機器學習等,對招聘數據進行更深入的挖掘和分析。