摘 要:近年來,校園招聘因招聘時(shí)間集中、更具針對性的特點(diǎn),為企業(yè)招聘和應(yīng)屆大學(xué)生求職提供了極大的便利。基于Python對校園招聘網(wǎng)站的數(shù)據(jù)進(jìn)行分析,設(shè)計(jì)并實(shí)現(xiàn)了一個(gè)校園招聘網(wǎng)站數(shù)據(jù)分析與可視化系統(tǒng)。系統(tǒng)主要包括用戶注冊、登錄、數(shù)據(jù)爬取、數(shù)據(jù)分析與可視化等功能。實(shí)驗(yàn)結(jié)果表明,本系統(tǒng)可以幫助求職者更好地了解招聘市場情況,分析市場趨勢,以更好地規(guī)劃自己的職業(yè)方向。
關(guān)鍵詞:Python;校園招聘網(wǎng)站;數(shù)據(jù)分析與可視化;求職者;Django;MySQL
中圖分類號:TP391 文獻(xiàn)標(biāo)識碼:A 文章編號:2095-1302(2025)06-0-04
DOI:10.16667/j.issn.2095-1302.2025.06.027
0 引 言
近20年來,我國高校畢業(yè)生人數(shù)增長了446%以上。2024屆高校畢業(yè)生規(guī)模預(yù)計(jì)1 179萬人,同比增加21萬人。在就業(yè)市場中,人才供需比增大,大學(xué)生就業(yè)難度逐年上升。校園招聘作為大學(xué)生就業(yè)的最主要途徑之一,對于解決就業(yè)難問題起到了關(guān)鍵性的作用[1],因此,對校園招聘網(wǎng)站(以下簡稱“校招網(wǎng)”)的數(shù)據(jù)進(jìn)行分析和可視化,可以幫助高校大學(xué)生更好地了解招聘市場情況[2],提前做好職業(yè)規(guī)劃和就業(yè)準(zhǔn)備。
本文設(shè)計(jì)開發(fā)的校招網(wǎng)數(shù)據(jù)分析與可視化系統(tǒng),基于數(shù)智化校招平臺??途W(wǎng)、使用Django作為Web框架、利用Python語言和Selenium爬蟲庫爬取網(wǎng)站中的企業(yè)招聘信息,系統(tǒng)首先在數(shù)據(jù)獲取階段通過網(wǎng)絡(luò)爬蟲技術(shù)爬取牛客網(wǎng)中互聯(lián)網(wǎng)行業(yè)的職位信息,然后通過Python的BeautifulSoup庫對網(wǎng)頁內(nèi)容進(jìn)行解析[3],收集工作崗位、薪水、地域等數(shù)據(jù),并將這些數(shù)據(jù)存儲在MySQL數(shù)據(jù)庫中,從而更加便捷地完成對數(shù)據(jù)的分析與可視化處理。
1 系統(tǒng)功能需求分析
本系統(tǒng)需要爬取數(shù)據(jù)并進(jìn)行可視化分析,主要分為四大模塊,包括數(shù)據(jù)采集與存儲模塊、數(shù)據(jù)處理與分析模塊、可視化模塊以及數(shù)據(jù)管理模塊。
數(shù)據(jù)采集與存儲模塊:本系統(tǒng)數(shù)據(jù)來源是通過爬蟲機(jī)制爬取牛客網(wǎng)招聘模塊中的各類職位需求數(shù)據(jù),并通過MySQL數(shù)據(jù)庫實(shí)現(xiàn)對大學(xué)生招聘職位需求數(shù)據(jù)的存儲。針對網(wǎng)絡(luò)爬蟲技術(shù)選型較多,影響抓取效率和準(zhǔn)確性的問題,一般以Requests、Scrapy和Selenium三種爬蟲技術(shù)為主流[4]。為防止在爬取數(shù)據(jù)時(shí)被網(wǎng)站封禁,本系統(tǒng)采用了自動(dòng)化爬蟲Selenium框架,該框架能夠模擬人瀏覽網(wǎng)頁的操作,爬取動(dòng)態(tài)加載的數(shù)據(jù),同時(shí)可以繞過一些網(wǎng)站設(shè)置的反爬措施,防止因長時(shí)間的異常數(shù)據(jù)加載而被網(wǎng)站屏蔽,從而更好地爬取數(shù)據(jù)[5-7]。
數(shù)據(jù)處理與分析模塊:該模塊主要用于處理與分析從網(wǎng)站爬取并保存的數(shù)據(jù),包括過濾無效數(shù)據(jù)和刪除多余的重復(fù)數(shù)據(jù),運(yùn)用算法和模型來分析數(shù)據(jù)并提取出有價(jià)值的信息,以保證后續(xù)模塊正常運(yùn)行。該模塊需要具備高效的數(shù)據(jù)分析和處理能力,以便有效地處理大量數(shù)據(jù),并從中提取出有意義的信息。
可視化模塊:可視化模塊主要為用戶提供圖表、報(bào)表等形式的數(shù)據(jù)分析結(jié)果展示,以便于用戶快速地理解數(shù)據(jù)。該模塊需要提供多種圖表類型和交互式界面,能夠進(jìn)行數(shù)據(jù)的篩選與查看等,以方便用戶對不同類型的數(shù)據(jù)進(jìn)行比較與分析。
數(shù)據(jù)管理模塊:數(shù)據(jù)管理模塊主要包括賬戶管理(用戶和管理員)、個(gè)人信息管理、歷史查閱記錄管理、招聘信息管理四種功能。用戶可以在查看招聘職位時(shí),將有意向的職位加入自己的歷史查閱記錄,方便以后快速查找。系統(tǒng)為管理員提供了數(shù)據(jù)的增刪改查功能,方便管理員對數(shù)據(jù)庫進(jìn)行更新和維護(hù),保證系統(tǒng)數(shù)據(jù)的有效性。
2 系統(tǒng)總體設(shè)計(jì)
2.1 系統(tǒng)功能模塊設(shè)計(jì)
通過需求分析,從系統(tǒng)開發(fā)的角度可將系統(tǒng)設(shè)計(jì)為四個(gè)功能模塊:用戶、管理員、個(gè)人設(shè)置、數(shù)據(jù)分析與可視化,系統(tǒng)功能模塊如圖1所示。
用戶:用戶具有注冊、登錄、退出功能。
管理員:管理員具有用戶管理、權(quán)限管理和條件查詢功能,能夠保證系統(tǒng)數(shù)據(jù)的時(shí)效性。
個(gè)人信息:用戶登錄系統(tǒng)后,可對用戶名、學(xué)歷、工作經(jīng)驗(yàn)、頭像、密碼等個(gè)人信息進(jìn)行修改和管理,也可以對個(gè)人的歷史查閱記錄進(jìn)行管理。
數(shù)據(jù)分析與可視化:針對薪資分布、企業(yè)情況、專業(yè)需求(標(biāo)簽詞云)、城市類型的可視化需求,所使用的全部數(shù)據(jù)可在數(shù)據(jù)總覽模塊查看。
2.2 系統(tǒng)整體架構(gòu)設(shè)計(jì)
通過需求分析,本系統(tǒng)從技術(shù)架構(gòu)角度設(shè)計(jì)規(guī)劃了六個(gè)層面,分別是前端 UI、展示層、業(yè)務(wù)層、計(jì)算層、數(shù)據(jù)庫、操作系統(tǒng)層[2]。系統(tǒng)架構(gòu)如圖2所示。
(1)前端UI和展示層,主要利用前端頁面相關(guān)技術(shù)和 ECharts對業(yè)務(wù)層所輸出的數(shù)據(jù)進(jìn)行可視化展示,幫助用戶更直觀地了解目前的就業(yè)市場情況。
(2)業(yè)務(wù)層,該層主要展示了項(xiàng)目后端開發(fā)所實(shí)現(xiàn)的相關(guān)功能,將所需數(shù)據(jù)傳輸?shù)角岸苏故緦印?/p>
(3)計(jì)算層,主要針對網(wǎng)絡(luò)爬取并清洗后存儲在數(shù)據(jù)庫中的數(shù)據(jù)進(jìn)行分析計(jì)算,并通過業(yè)務(wù)層將相關(guān)數(shù)據(jù)傳輸?shù)角岸苏故緦?。使用Pandas進(jìn)行聚合計(jì)算。
(4)數(shù)據(jù)庫,使用 MySQL存儲登錄用戶的信息以及爬取并清洗后的數(shù)據(jù)。
(5)操作系統(tǒng)層是系統(tǒng)運(yùn)行的基本環(huán)境,在 Windows 系統(tǒng)中搭建Python、MySQL、Django環(huán)境以運(yùn)行系統(tǒng)。
2.3 數(shù)據(jù)表結(jié)構(gòu)設(shè)計(jì)
通過對基于Python的校招網(wǎng)數(shù)據(jù)分析與可視化系統(tǒng)中功能模塊的需求分析,系統(tǒng)選用關(guān)系型數(shù)據(jù)庫MySQL來實(shí)現(xiàn)數(shù)據(jù)實(shí)體邏輯關(guān)系的設(shè)計(jì)。
系統(tǒng)賬號表主要用于存儲系統(tǒng)中所有用戶角色的登錄賬號信息。在表結(jié)構(gòu)設(shè)計(jì)中,字段內(nèi)容包含主鍵、用戶名、登錄密碼、姓名。系統(tǒng)賬號見表1。
用戶自定義信息表用于存放用戶自定義設(shè)置的信息。在表結(jié)構(gòu)設(shè)計(jì)中,字段內(nèi)容包含主鍵、用戶名、姓名、學(xué)歷、工作經(jīng)驗(yàn)、意向城市、所在城市、意向崗位、頭像,用戶自定義信息見表2。
3 系統(tǒng)實(shí)現(xiàn)
3.1 登錄
該系統(tǒng)分為管理員和普通用戶兩種類型。定義一個(gè)login模塊,用戶可點(diǎn)擊“注冊”按鈕進(jìn)行注冊,注冊完成后可在此頁面輸入username和password登錄系統(tǒng),與數(shù)據(jù)庫user表中的數(shù)據(jù)進(jìn)行比對驗(yàn)證,驗(yàn)證成功后,系統(tǒng)會根據(jù)不同的登錄身份配對不同的應(yīng)用權(quán)限,以保證系統(tǒng)不會受到普通用戶的惡意損壞,提高了系統(tǒng)的安全性,使系統(tǒng)可以正常運(yùn)行。
3.2 個(gè)人信息修改
定義一個(gè)selfInfo模塊,用戶可在個(gè)人信息修改界面對個(gè)人信息數(shù)據(jù)進(jìn)行修改,如用戶名、學(xué)歷、工作經(jīng)驗(yàn)、意向城市、意向崗位和頭像。修改后,系統(tǒng)會自動(dòng)替換數(shù)據(jù)庫中原本的個(gè)人信息。個(gè)人信息修改界面如圖3所示。
3.3 修改密碼
定義一個(gè)changePassword模塊,用戶可在修改密碼界面對登錄密碼進(jìn)行修改。在輸入舊密碼時(shí),系統(tǒng)會將輸入的舊密碼與數(shù)據(jù)庫中存儲的密碼比對驗(yàn)證,在驗(yàn)證成功后,密碼被修改,同時(shí)新密碼將替換數(shù)據(jù)庫中原本儲存的數(shù)據(jù)。
3.4 歷史查閱
定義一個(gè)historytableData模塊,通過設(shè)置外鍵約束來完成數(shù)據(jù)庫history表中的數(shù)據(jù)一對多關(guān)系設(shè)置。定義一個(gè)addHistory模塊,將id、job_id、user_id、count作為參數(shù)傳入,用戶可在數(shù)據(jù)總覽界面將自己感興趣的招聘信息添加到歷史查閱中,系統(tǒng)會根據(jù)點(diǎn)擊次數(shù)排序,方便用戶在查閱歷史時(shí)更快地找到自己感興趣的招聘信息。歷史查閱界面如圖4所示。
3.5 數(shù)據(jù)總覽
定義一個(gè)tableData模塊,通過修改界面標(biāo)簽的方式使界面與數(shù)據(jù)庫中的數(shù)據(jù)連接,同時(shí),使用Django自帶的工具庫Paginator類對數(shù)據(jù)進(jìn)行分頁。用戶可以通過翻頁閱覽所有數(shù)據(jù),初步了解招聘市場。數(shù)據(jù)總覽界面如圖5所示。
3.6 薪資分布
用戶可通過選擇學(xué)歷和工作年限來獲取薪資分布、學(xué)歷需求分布和年底多薪的可視化圖表。定義一個(gè)salary模塊,將可視化圖表素材數(shù)據(jù)初始化,通過修改標(biāo)簽定位完成網(wǎng)頁制作和圖表可視化,方便用戶更加直觀清晰地了解招聘市場、薪資分布、學(xué)歷需求和年底多薪的情況。薪資分布查詢界面如圖6所示。
3.7 企業(yè)情況
用戶可通過選擇應(yīng)聘崗位來獲取行業(yè)數(shù)量、工作城市、公司規(guī)模情況和公司融資情況的可視化圖表。定義一個(gè)company模塊,將可視化圖表素材初始化,通過修改標(biāo)簽定位完成網(wǎng)頁制作和圖表可視化。可視化可以幫助用戶更直觀地了解企業(yè)情況,對企業(yè)規(guī)模、所處城市、融資情況有所了解,方便用戶進(jìn)行選擇比對[8]。企業(yè)情況界面如圖7所示。
3.8 標(biāo)簽詞云
該系統(tǒng)對出現(xiàn)最頻繁的崗位標(biāo)簽和公司標(biāo)簽做統(tǒng)計(jì)。定義一個(gè)companyTags模塊對數(shù)據(jù)集進(jìn)行詞匯切分、停用詞過濾、特征選擇,再設(shè)置好字體文件路徑、寬度、高度、詞云圖中最多顯示的詞和數(shù)量以及詞之間的間距,遍歷每個(gè)詞及概率,將其添加到wdict中,最后調(diào)用Python第三方庫WordCloud對wdict中的數(shù)據(jù)進(jìn)行詞云圖繪制,生成詞云圖[9]。
數(shù)據(jù)分析可以幫助用戶更好地了解當(dāng)前就業(yè)市場的用人需求,為其職業(yè)規(guī)劃提供參考依據(jù),幫助就業(yè)者更好地選擇合適的崗位。標(biāo)簽詞云界面如圖8所示。
3.9 城市類型
用戶可以通過選擇具體城市名稱來獲取基于該城市的薪資分布情況,公司人數(shù)分布圖、崗位標(biāo)簽詞云圖和學(xué)歷需求分布的可視化圖表。定義一個(gè)companyPeopleData模塊,將可視化圖表素材初始化,通過修改標(biāo)簽定位完成網(wǎng)頁制作和圖表可視化。城市類型可視化可以幫助用戶更直觀地了解該城市相關(guān)招聘信息,方便用戶更準(zhǔn)確地判斷自己是否可以在該城市獲得合適的崗位[10]。具體城市類型界面如圖9所示。
4 結(jié) 語
本文以??途W(wǎng)為基礎(chǔ)研究了如何對校招網(wǎng)招聘數(shù)據(jù)進(jìn)行分析與可視化。首先,采用Python編寫爬蟲程序從??途W(wǎng)獲取招聘數(shù)據(jù),然后運(yùn)用Pandas庫對數(shù)據(jù)進(jìn)行深度分析,最后以Django作為Web框架,利用WordCloud和PyLab對分析結(jié)果進(jìn)行可視化展示[3]。用戶通過系統(tǒng)能夠更加直觀地了解當(dāng)前校招市場情況和目標(biāo)職業(yè)的相關(guān)信息,分析當(dāng)前就業(yè)趨勢,精準(zhǔn)制定自己的職業(yè)規(guī)劃。
參考文獻(xiàn)
[1]王玉龍.爭搶“00”后,從校園招聘發(fā)力[J].人力資源,2023(21):106-107.
[2]姜永成.基于Django的網(wǎng)絡(luò)招聘數(shù)據(jù)可視化分析系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].科技資訊,2023(19):57-60.
[3]王瑞梅.網(wǎng)絡(luò)招聘數(shù)據(jù)可視化分析系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[D].石家莊:河北師范大學(xué),2020.
[4]楊健,陳偉.基于Python的三種網(wǎng)絡(luò)爬蟲技術(shù)研究[J].軟件工程,2023,26(2):24-27.
[5]李澤文,陳曉柱.基于Selenium+Python+Tableau的BOSS直聘數(shù)據(jù)的爬取與分析—以“軟件”專業(yè)為例[J].廣州城市職業(yè)學(xué)院學(xué)報(bào),2023,17(2):87-91.
[6]裴麗麗.基于Selenium框架實(shí)現(xiàn)Boss直聘網(wǎng)數(shù)據(jù)爬取與分析[J].山西電子技術(shù),2022(5):66-68.
[7]張嘉威,關(guān)成斌.基于Python和Selenium的智聯(lián)招聘數(shù)據(jù)的爬取與分析[J].軟件,2022,43(8):170-175.
[8]湯夢瑤,程斐斐.基于 Spark 的地震數(shù)據(jù)分析與可視化系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[J].現(xiàn)代信息科技,2023,7(18):20-24.
[9]馮淼.基于Python的電視劇視頻彈幕分析[J].電腦知識與技術(shù),2023,19(30):34-36.
[10]鄭磊,顧書緣,王學(xué)友,等.基于CNN模型的文本分類可視化系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[J].電腦與電信,2023(6):22-27.
作者簡介:楊立驍(2003—),男,研究方向?yàn)閿?shù)據(jù)可視化。
孫鵬飛(2002—),男,研究方向?yàn)閿?shù)據(jù)可視化。
袁 博(2002—),男,研究方向?yàn)閿?shù)據(jù)可視化。
龍青未(2004—),女,研究方向?yàn)閿?shù)據(jù)可視化。
肖大薇(1978—),女,碩士,教授,研究方向?yàn)橛?jì)算機(jī)體系結(jié)構(gòu)及大數(shù)據(jù)技術(shù)。
收稿日期:2024-03-28 修回日期:2024-05-08
基金項(xiàng)目:大學(xué)生創(chuàng)新訓(xùn)練項(xiàng)目:基于??途W(wǎng)的企業(yè)招聘數(shù)據(jù)分析與可視化系統(tǒng)(X202313198013)