摘要:本文利用Python爬蟲技術,從天津電子信息職業(yè)技術學院就業(yè)信息網(wǎng)采集近五年招聘信息,并運用數(shù)據(jù)采集、預處理和可視化分析方法,揭示了該院畢業(yè)生就業(yè)地區(qū)分布、崗位需求及專業(yè)匹配度等趨勢,為學生職業(yè)規(guī)劃和就業(yè)指導提供數(shù)據(jù)支撐。
關鍵詞:Python爬蟲;招聘信息;采集;處理;可視化分析
中圖分類號:TP311文獻標識碼:A
文章編號:1009-3044(2024)34-0057-03開放科學(資源服務)標識碼(OSID):
0引言
高校就業(yè)形勢日益嚴峻,各方積極努力為畢業(yè)生創(chuàng)造良好就業(yè)環(huán)境。高校就業(yè)信息網(wǎng)的建設為畢業(yè)生提供了便捷的就業(yè)信息獲取渠道,但也面臨著信息量龐大、檢索難度增加的挑戰(zhàn)。
為解決這一問題,本文基于天津電子信息職業(yè)技術學院就業(yè)信息網(wǎng)數(shù)據(jù),利用Python爬蟲技術,對近五年招聘信息進行采集、處理和可視化分析,為學院就業(yè)指導工作提供數(shù)據(jù)支持。
1招聘信息爬取研究現(xiàn)狀
在國內(nèi),眾多學者已經(jīng)開始應用網(wǎng)絡爬蟲技術收集與整理招聘信息?,F(xiàn)有研究已利用Python、Jsoup、Scrapy等技術對招聘信息進行爬取和可視化分析,主要關注崗位技能、工作年限、薪資水平等方面。例如,郭瑾[1]通過Matplotlib庫面向主流招聘網(wǎng)站分析。張鵬[2]基于Jsoup對BOSS直聘信息篩選判斷。鄭燦偉等[3]使用基于Scrapy框架分析招聘數(shù)據(jù)。高鳳毅等[4]使用Matplotlib從某招聘網(wǎng)站進行關鍵詞整理篩選。
本文在此基礎上,通過設計爬蟲模型完成數(shù)據(jù)信息的獲取和可視化展示,進一步探究天津電子信息職業(yè)技術學院畢業(yè)生就業(yè)現(xiàn)狀與趨勢。
2技術概述
2.1技術方案
Python爬蟲技術指利用爬蟲程序自動抓取網(wǎng)絡數(shù)據(jù)的一種技術。Python語言在易用性、庫支持及數(shù)據(jù)處理能力等方面具有顯著優(yōu)勢。使用Python爬蟲技術可以實現(xiàn)在海量數(shù)據(jù)中實時準確地采集目標數(shù)據(jù),并進行智能化分析和處理,挖掘出數(shù)據(jù)背后潛在的價值與意義[5]。
使用Requests庫發(fā)送HTTP請求,獲取網(wǎng)頁數(shù)據(jù)。Requests庫簡化了HTTP請求的發(fā)送過程。它能夠發(fā)送各種HTTP請求(如GET、POST、PUT、DELETE等),并自動處理cookies、重定向、超時等問題。
使用JSON庫解析網(wǎng)頁數(shù)據(jù)。JSON庫是Python標準庫中專門用于處理JSON數(shù)據(jù)的工具。作為輕量級數(shù)據(jù)交換格式,它簡單易讀且便于編寫。JSON庫提供了幾個主要功能:dumps用于將Python對象編碼成JSON字符串,loads用于將JSON字符串解碼成Py?thon對象,dump用于將Python對象寫入到文件中(以JSON格式),load用于從文件中讀取JSON數(shù)據(jù)并解析為Python對象。這些功能使得Python能夠方便地與JSON數(shù)據(jù)進行交互,進而實現(xiàn)數(shù)據(jù)存儲、網(wǎng)絡數(shù)據(jù)傳輸?shù)榷喾N功能。
直接使用XPath在動態(tài)網(wǎng)頁數(shù)據(jù)抓取時會遇到問題。由于動態(tài)網(wǎng)頁的內(nèi)容往往不是直接加載在HTML源碼中,而是通過JavaScript代碼在客戶端動態(tài)生成或修改的原因,當從服務器獲取到HTML源碼時,頁面上實際顯示的內(nèi)容可能還沒有被渲染或生成。利用網(wǎng)絡請求分析技術對請求參數(shù)(如URL)、響應狀態(tài)碼(如200表示成功、404表示未找到等)、響應內(nèi)容(如JSON數(shù)據(jù))等因素進行分析,配合Requests庫技術獲取頁面數(shù)據(jù)。
常用的數(shù)據(jù)處理方法有數(shù)據(jù)清洗,數(shù)據(jù)轉換及數(shù)據(jù)合并等。數(shù)據(jù)清洗的以去除數(shù)據(jù)噪聲、填補缺失值和糾正錯誤數(shù)據(jù)格式為目的。數(shù)據(jù)轉換以將數(shù)據(jù)從一種格式或結構轉換為另一種格式或結構為方式。數(shù)據(jù)合并以消除不同量綱數(shù)據(jù)之間的差異,使得數(shù)據(jù)在同一尺度上進行比較和分析為目的。這些方法提高了數(shù)據(jù)的質(zhì)量和可靠性。
使用CVS進行文件存儲。CVS文件存儲作為數(shù)據(jù)文件格式的代表,它采用純文本形式對表格數(shù)據(jù)進行存儲。具有簡潔、可讀性好及靈活性強等特點。CVS文件存儲經(jīng)常用于數(shù)據(jù)交換、數(shù)據(jù)備份與恢復、數(shù)據(jù)分析等場景。CSV文件可通過編輯器手動創(chuàng)建,也可以通過編程語言寫入。
2.2遵循反爬機制
開發(fā)中要遵循反爬機制的原則。開發(fā)者尊重目標網(wǎng)站的規(guī)定,如遵守網(wǎng)站roboats.txt文件規(guī)則,同時避免過度請求、模擬登錄等行為,以合法合規(guī)的方式獲取數(shù)據(jù),確保爬蟲行為的合法性和網(wǎng)站的穩(wěn)定性。
3爬取招聘信息系統(tǒng)架構和實施
3.1數(shù)據(jù)采集
3.1.1路徑確定
學院就業(yè)信息網(wǎng)在線招聘頁面是動態(tài)網(wǎng)頁,通過查看源碼,該網(wǎng)頁的URL由兩部分組成,其中如下URL為固定不變部分:
其后由多個可變參數(shù)組成。分別時參數(shù)start、起始頁碼startPage和每頁顯示條數(shù)count。如下為完整的URL構造:
start_page=1:這個參數(shù)通常用于指定請求的起始頁碼,這里表示請求的是第一頁的數(shù)據(jù)。
count=15:這個參數(shù)指定了每頁應該返回的數(shù)據(jù)條數(shù)。這里表示每頁顯示15條數(shù)據(jù)。
start=startPage+1:這個參數(shù)通常它用于指定從哪個條目開始獲取數(shù)據(jù)。這里表示起始頁碼startPage的下一個位置。
_=時間戳:這個參數(shù)通常用于防止瀏覽器緩存結果。通過在請求中添加一個時間戳(通常是當前時間的某種表示),可以確保每次請求都是最新的,因為URL會隨著時間戳的變化而變化。
構建一個完整請求URL后,需要獲取請求頭數(shù)據(jù)headers,構造請求參數(shù)params,組成請求方法參數(shù)組(url,headers,params)。隨后,調(diào)用requests.get()方法,將基礎URL、請求頭和請求參數(shù)作為參數(shù)傳入,發(fā)起GET請求獲取頁面數(shù)據(jù),并返回結果。
3.1.2網(wǎng)頁分析
根據(jù)3.1.1小節(jié),得到學院就業(yè)信息網(wǎng)在線招聘頁面的第一頁數(shù)據(jù),頁面內(nèi)包含15條招聘信息。通過json解析數(shù)據(jù)的loads函數(shù),將頁面返回結果response解析為json數(shù)據(jù)。通過關鍵字“data”獲取數(shù)據(jù)列表信息,companyList=dataJson['data']。
3.1.3數(shù)據(jù)獲取
利用源碼查看功能找到目標關鍵字key值,從data數(shù)據(jù)列表中獲取對應關鍵字的信息并封裝成一組招聘信息字典companyMessage,所有封裝好的com?panyMessage字典組合成一個列表MessageList。
3.1.4循環(huán)爬取
每頁招聘信息包含15條數(shù)據(jù),通過計算每頁信息的數(shù)量,利用for循環(huán)進行遞歸獲取。預設想要獲取total條數(shù)據(jù),通過page=(total//count+1)(地板除,除完之后取整數(shù)部分)運算計算當前頁碼,其中通過startPage滿足range(page)范圍循環(huán)調(diào)用爬取函數(shù)。
3.1.5數(shù)據(jù)存儲
本文通過定義存儲函數(shù)和寫入函數(shù),可以將循環(huán)爬取的數(shù)據(jù)以結構化方式保存到CSV文件中。存儲函數(shù)saveData接收數(shù)據(jù)列表;列名csvHeader=['公司名稱','所需專業(yè)','崗位名稱','發(fā)布時間','公司簡介','招聘類型']作為表頭;提取關鍵信息;函數(shù)Dict?Writer則利用Python的csv模塊將數(shù)據(jù)循環(huán)遍歷并寫入指定的CSV文件中。其中,循環(huán)部分邏輯為:如果文件不存在,則寫入表頭writeHeader;如果文件已經(jīng)存在,則直接追加數(shù)據(jù)。這種方法極大地促進了數(shù)據(jù)的持久化存儲,使得數(shù)據(jù)能夠長期保存并隨時可用。處理編碼問題時,根據(jù)實際需求確定數(shù)據(jù)庫和表的默認編碼為UTF-8,在存儲過程中使用了MySQL自帶的函數(shù)進行編碼轉換,保證數(shù)據(jù)輸入和輸出格式一致。為了防止數(shù)據(jù)丟失,采取了將數(shù)據(jù)備份到不同設備的方式,對敏感數(shù)據(jù)進行加密存儲。同時限制了對存儲服務器的未經(jīng)授權的訪問,避免數(shù)據(jù)泄露和丟失。
存儲成功后,保存的招聘信息中,“公司簡介”和“工作地點”部分內(nèi)容有缺失或者格式不一致(天津市,天津或者天津市)的情況。未經(jīng)數(shù)據(jù)處理的CVS部分內(nèi)容如表1所示。
3.2數(shù)據(jù)處理
經(jīng)過爬取后保存的招聘信息中,“公司簡介”和“工作地點”兩列部分內(nèi)容空缺值需要合理填補,“工作地點”列格式進行統(tǒng)一處理。這個過程是數(shù)據(jù)預處理和數(shù)據(jù)清洗的重要環(huán)節(jié)。針對空缺值問題,使用手動查詢和輸入的方式進行了補充。針對格式問題,利用Excel文本分列功能、查找和替換功能及Excel的宏等多種方式進行修改統(tǒng)一。處理后的CVS文件內(nèi)容如表2所示。
3.3可視化分析
從工作地分布規(guī)律來看,針對天津本地的招聘信息比較集中,占整個招聘信息的50%左右,排名第一。其次是北京市、深圳市等。隨著天津產(chǎn)業(yè)升級和新興產(chǎn)業(yè)的發(fā)展,對高技能人才的需求不斷增加,為專科生等層次人才提供了更為廣闊的就業(yè)空間。天津高校致力于服務京津冀協(xié)同發(fā)展,在招聘信息收集工作中,積極與優(yōu)秀企業(yè)合作,營造良好就業(yè)環(huán)境,為畢業(yè)生提供更多就業(yè)機會和發(fā)展空間,助力天津高質(zhì)量發(fā)展。因此,就業(yè)工作地的分布呈現(xiàn)以天津為核心,緊密依托京津冀協(xié)同發(fā)展戰(zhàn)略,同時展現(xiàn)出向南方發(fā)達城市多元拓展的特點。具體見圖1招聘信息工作地狀態(tài)分布圖。
此外,從學生對招聘崗位的瀏覽次數(shù)可以看出,不同崗位對學生的吸引強度。其中,能提供廣泛就業(yè)領域、不設專業(yè)限制的崗位,成為學生們心中的熱門之選。另外,信息類、計算機類和機械機電類是學院的特色專業(yè),也具有豐富的就業(yè)機會,穩(wěn)居就業(yè)崗位吸引力排行榜的前三名。
從2020年至2024年(截至5月份)以來,招聘單位的數(shù)量整體趨勢不容樂觀,從2020年到2023年呈現(xiàn)逐年降低的趨勢(其中因2024年為1~5月數(shù)據(jù),按照同比例算法模擬2024整年的數(shù)據(jù)為橙色部分。實際上,要準確判斷2023之后招聘單位數(shù)量的變化趨勢,需要具體的、實時的數(shù)據(jù)支持),其中在2021年達到最大值。就業(yè)網(wǎng)招聘信息數(shù)量呈現(xiàn)下降趨勢的原因可能是多方面的,比如宏觀經(jīng)濟、就業(yè)形勢和學院自身因素等。在全球經(jīng)濟不確定性增加的背景下,可能影響到企業(yè)的招聘縮減。學院通過優(yōu)化招聘流程、提高招聘效率等方式,也會影響招聘信息的發(fā)布次數(shù)。例如,線上智能化招聘、內(nèi)部點對點推薦等方式,可以更快速、更精準地找到合適的就業(yè)候選人。此外,學院工匠工坊建設作用關鍵,不僅能夠給學生提供扎實的專業(yè)知識和技能,也增加了豐富的實習實訓機會和就業(yè)渠道,提升高質(zhì)量就業(yè)。具體見圖2近5年招聘單位數(shù)量圖。
4結束語
本研究利用Python爬蟲技術對天津電子信息職業(yè)技術學院就業(yè)信息網(wǎng)招聘數(shù)據(jù)進行了采集與分析,結果表明:從工作地分布規(guī)律來看,天津本地占整個招聘信息的50%左右,其次是北京市,深圳市等,招聘崗位一線城市較多,可重點推薦給學生。從學生對招聘崗位的瀏覽次數(shù)可以看出,學生筆記關注就業(yè)領域、專業(yè)不限的崗位,尤其信息類、計算機類和機械機電類特色專業(yè)就業(yè)機會多,可加大專業(yè)人才培養(yǎng)等。本研究為高校就業(yè)指導提供了數(shù)據(jù)支持,未來研究將進一步改進爬蟲程序的效率和穩(wěn)定性,豐富數(shù)據(jù)類型,擴展數(shù)據(jù)來源,進行更深入的數(shù)據(jù)挖掘分析。
參考文獻:
[1]郭瑾.基于Python的招聘數(shù)據(jù)爬取與數(shù)據(jù)可視化分析研究[J].輕工科技,2024,40(2):94-96,99.
[2]張鵬.基于Jsoup爬蟲的BOSS直聘信息爬取[J].無線互聯(lián)科技,2023,20(2):106-108.
[3]鄭燦偉,賀丹,羅嘉惠,等.基于Scrapy框架的互聯(lián)網(wǎng)招聘信息可視化技術研究[J].科技與創(chuàng)新,2024(6):6-10.
[4]高鳳毅,葛蘇慧,林喜文,等.基于Python的招聘網(wǎng)站數(shù)據(jù)爬取與分析[J].電腦編程技巧與維護,2023(9):70-72.
[5]蘇明焱.基于Python的招聘網(wǎng)站信息的爬取與數(shù)據(jù)分析[J].信息與電腦(理論版),2022,34(24):193-195.
【通聯(lián)編輯:李雅琪】