《基于Python的大數(shù)據(jù)可視化系統(tǒng)的設(shè)計與實現(xiàn)》8100字_第1頁
《基于Python的大數(shù)據(jù)可視化系統(tǒng)的設(shè)計與實現(xiàn)》8100字_第2頁
《基于Python的大數(shù)據(jù)可視化系統(tǒng)的設(shè)計與實現(xiàn)》8100字_第3頁
《基于Python的大數(shù)據(jù)可視化系統(tǒng)的設(shè)計與實現(xiàn)》8100字_第4頁
《基于Python的大數(shù)據(jù)可視化系統(tǒng)的設(shè)計與實現(xiàn)》8100字_第5頁
已閱讀5頁,還剩13頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

第[13]大大增強了用戶的體驗效果。在本次開發(fā)中,我使用Echarts直接連接MySQL數(shù)據(jù)庫中清洗后的數(shù)據(jù)用圖表表示,更加直觀的將結(jié)果呈現(xiàn)出來。使數(shù)據(jù)的解析性表現(xiàn)更加準(zhǔn)確。

3系統(tǒng)設(shè)計3.1開發(fā)環(huán)境介紹系統(tǒng)基于Python語言構(gòu)建,通過Python中的json、Request等第三方庫來完成數(shù)據(jù)的采集工作,將篩選出來的數(shù)據(jù)儲存到MySQL數(shù)據(jù)庫中,之后使用SQL語句在MySQL上運行達到數(shù)據(jù)的清洗和整理。在后端,使用SQL語句分析和計算MySQL數(shù)據(jù)庫中已清洗過的數(shù)據(jù),之后將結(jié)果推送到前端頁面。前端主要調(diào)用Echarts可視化組件,將其各類數(shù)據(jù)及其之間的聯(lián)系以柱狀圖、餅形圖等形式呈現(xiàn)出來,完成各類數(shù)據(jù)向可視化圖表的轉(zhuǎn)化,最后用戶只需通過其接口地址觀察系統(tǒng),使用Google或Firefox等瀏覽器即可。3.2系統(tǒng)架構(gòu)設(shè)計系統(tǒng)層次架構(gòu)如下圖3.2所示:結(jié)果展示網(wǎng)絡(luò)招聘數(shù)據(jù)采集與存儲結(jié)果展示網(wǎng)絡(luò)招聘數(shù)據(jù)采集與存儲數(shù)據(jù)清洗數(shù)據(jù)分析視圖層處理層采集層圖3.2系統(tǒng)層次架構(gòu)圖數(shù)據(jù)可視化系統(tǒng)主要由采集層、處理層及視圖層所組成,每一層都有著非常重要的意義。數(shù)據(jù)采集是整個系統(tǒng)數(shù)據(jù)的來源之處,在這個過程中我們不需要考慮別的影響因素,只需要能夠把數(shù)據(jù)爬取出來并保存到數(shù)據(jù)庫中即可。視圖層是最重要的一層,它代表了我們本次實驗是否能夠完成,也結(jié)合了前端和后端的知識,使用接口的形式來將數(shù)據(jù)導(dǎo)入到前端圖表中,這是從來沒有嘗試過的方式。3.3功能模塊設(shè)計3.3.1數(shù)據(jù)采集和導(dǎo)入模塊設(shè)計數(shù)據(jù)采集功能是通過Python語言自定義代碼寫出爬取51job網(wǎng)站的職位信息的代碼。爬取之前我們需要先觀察51job網(wǎng)頁上翻頁的規(guī)律以保證能夠持續(xù)的爬取每一頁的數(shù)據(jù),很多網(wǎng)站的規(guī)律都不一樣,51job網(wǎng)頁的規(guī)律比較明顯,會在網(wǎng)頁鏈接上直接出現(xiàn)變化,這對我的代碼編寫有很大的方便。由于我們需要的數(shù)據(jù)量比較大,所以可以不設(shè)置終止條件,在想要停止爬取時只需要停止運行代碼即可。通過對資料的查詢發(fā)現(xiàn),使用Python的Json庫解析出的數(shù)據(jù)格式更加方便保存,故將爬取出來的數(shù)據(jù)轉(zhuǎn)化為Json格式并將其保存到MySQL數(shù)據(jù)庫中。具體的字段如下表3.3所示。字段名字段類型字段描述業(yè)務(wù)主鍵idInt是positionIDInt崗位ID否longitudefloat經(jīng)度否latitudefloat緯度否positionNameVarchar崗位名稱否workYearVarchar工作年限否educationVarchar學(xué)歷否jobNatureVarchar崗位性質(zhì)否financeStageVarchar公司類型否companySizeVarchar公司規(guī)模否industryFieldVarchar業(yè)務(wù)方向否cityVarchar所在城市否positionAdvantageVarchar崗位標(biāo)簽否companyShortNameVarchar公司簡稱否companyFullNameVarchar公司全稱否districtVarchar公司所在區(qū)否companyLabelListVarchar公司福利標(biāo)簽否salaryVarchar薪資水平否crawl_dateVarchar抓取日期否表3.3數(shù)據(jù)字段由于51job不需要考慮被反爬的影響所以不需要用到第三方庫time。具體流程如下圖3.4所示:圖3.4數(shù)據(jù)采集和導(dǎo)入流程圖3.3.2數(shù)據(jù)清洗模塊設(shè)計由于獲取數(shù)據(jù)量過大、種類較多、采集到的初始數(shù)據(jù)會有很多不符合要求的,比如area中我們需要的是省份信息,而有的會另外顯示出其所在的市,我們需要將其去除,只保留省份信息即可。經(jīng)過觀察不難看出數(shù)據(jù)的格式是:省份-市區(qū),這樣我們就可以設(shè)置將“-”及其后面的內(nèi)容刪掉即可。還有一些公司沒有注明工作經(jīng)驗要求,爬蟲工具便把一些錯誤信息爬到education中,由于其較少我們可以直接刪除掉這一行數(shù)據(jù)信息。我們可以直接采用SQL語句設(shè)置每列數(shù)據(jù)的要求即可完成清洗模塊。具體流程如下圖3.5所示:開始開始結(jié)束education中字符數(shù)是否大于2刪除整個字段保存在MySQLcity中是否有“-”刪除“-”及后面的字符圖3.5數(shù)據(jù)清洗模塊流程3.3.3數(shù)據(jù)分析模塊設(shè)計數(shù)據(jù)分析需要是利用一些知識和模型,讓我們非常方便的分析出來一些有價值的啟示,就比如在網(wǎng)絡(luò)招聘的模型中,我們可以通過不同的模型對比,分析出很多對網(wǎng)絡(luò)求職有用的啟發(fā)。數(shù)據(jù)分析模塊主要是根據(jù)清洗后的數(shù)據(jù)來進行關(guān)聯(lián)分析,在這里可以使用Python中的第三方庫pandas來做數(shù)據(jù)分析,也可以使用Jupyter軟件來做數(shù)據(jù)分析。本此實驗我們使用pandas針對薪資水平做了一些簡單的數(shù)據(jù)分析。3.3.4數(shù)據(jù)可視化模塊設(shè)計系統(tǒng)模塊采用Flask框架搭建,在數(shù)據(jù)查詢時主要采用SQL語句,將數(shù)據(jù)庫表中的數(shù)據(jù)查詢出來展示到前端頁面上,前端主要用js+rem搭配使用,rem能使網(wǎng)站頁面大小縮放一致,能夠使頁面更加流暢??梢暬瘓D表是將分析的結(jié)果進行展示,主要采用Echarts可視化組件,可以在百度推行的Echarts網(wǎng)站中布置好圖表,將其整個封裝起來寫入js.js當(dāng)中,其中主要包括八個圖表和一個地圖。其中八個圖表有:行業(yè)及職位數(shù)量圖、職業(yè)方向分布情況圖、薪資分布情況圖、工作經(jīng)驗分布情況圖、融資情況圖、公司規(guī)模圖、崗位要求圖和學(xué)歷要求情況圖,而地圖中則顯示爬取的數(shù)量在當(dāng)?shù)赜卸嗌賯€。數(shù)據(jù)傳輸方面主要使用ajax的異步傳輸,更加方便的將數(shù)據(jù)傳輸?shù)巾撁娈?dāng)中。圖表展示主要將數(shù)據(jù)通過接口導(dǎo)入js渲染文件中然后傳遞給相應(yīng)的index.html文件中,并在index.html文件中使用不同的路徑將數(shù)據(jù)導(dǎo)入到相應(yīng)的直方圖或餅圖中。

4系統(tǒng)實現(xiàn)與測試4.1數(shù)據(jù)采集及導(dǎo)入模塊實現(xiàn)數(shù)據(jù)采集及導(dǎo)入模塊主要是獲取相關(guān)的數(shù)據(jù)。經(jīng)過初始的觀察,發(fā)現(xiàn)翻頁時網(wǎng)站鏈接發(fā)生了變化,由此可以在程序中以變量的形式定義頁數(shù),動態(tài)構(gòu)造頁面訪問的網(wǎng)站鏈接爬取數(shù)據(jù)。這時可以發(fā)現(xiàn),請求數(shù)據(jù)的網(wǎng)站鏈接是以json數(shù)據(jù)格式返回,我們需要設(shè)置不限制爬取的頁數(shù)以便于持續(xù)爬取,若想停止只需停止運行即可。在返回的頁面信息中對我們有用的信息包括崗位名稱:positionName、公司全稱:companyFullName、薪資水平:salary、城市:city、工作年限:workYear、學(xué)歷:education等信息。由于51job網(wǎng)站沒有太嚴(yán)格的反爬程序,所以我們只需要在爬蟲程序中需要添加一個頭部headers信息和cookies信息就可以完成爬取任務(wù),cookies中主要是用戶的訪問地址和用戶個人信息,同樣需要寫出。然后使用response=requests.get(first_request_url,headers=self.headers,params=self.params,cookies=self.cookies)的方法添加請求參數(shù)以及headers等信息進行url請求。核心代碼如圖4.1所示。圖4.1核心代碼圖由于請求的返回結(jié)果是一個json串的形式,所以可以使用response=json.loads(response)定位職位信息,再使用job_list=response['engine_search_result']的方法得到數(shù)據(jù)信息最后使用forjobinjob_list:來完成循環(huán),保證爬取到全部數(shù)據(jù)并保存到MySQL數(shù)據(jù)庫中。數(shù)據(jù)如下圖4.2所示。圖4.2職位信息圖4.2數(shù)據(jù)清洗模塊實現(xiàn)在將數(shù)據(jù)文件導(dǎo)入系統(tǒng)之后就要進行數(shù)據(jù)清洗的操作。首先要將導(dǎo)入數(shù)據(jù)庫的數(shù)據(jù)進行分析,找到一些不符和要求的數(shù)據(jù)。有些公司有未標(biāo)明的信息,當(dāng)我們爬取數(shù)據(jù)時,錯誤的信息就會被爬取到學(xué)歷要求一列,所以需要剔除掉,使用SQL語句可以非常輕松的給剔除;而那些公司所在城市中有許多都在省份后面用-標(biāo)明了所在市區(qū),這是非常影響數(shù)據(jù)分析的因素,但這些數(shù)據(jù)都有一個共同的特點,我們可以使用updatetestsetarea=left(area,locate('-',area)-1)wherearealike'%-%'的方法來讓“-”后面及“-”同時刪除掉。數(shù)據(jù)如下圖4.3所示。圖4.3清洗后的數(shù)據(jù)4.3數(shù)據(jù)分析模塊實現(xiàn)數(shù)據(jù)分析模塊相對來說使用pandas較為方便,本次實驗中是單獨爬出的數(shù)據(jù)放入Excel表格中,數(shù)據(jù)分析時我們可以從Excel中提取其數(shù)據(jù)。將薪資水平:salary這一項拉出來單獨分析,結(jié)果如下圖4.4所示:圖4.4薪資水平結(jié)果然后使用y[:5]將其前五個篩選出來并將其平均值求出。結(jié)果如下圖4.5所示:圖4.5求平均值結(jié)果4.4數(shù)據(jù)可視化模塊實現(xiàn)該模塊主要用到了前端HTML的代碼編寫和js渲染格式的編寫,使用js能夠?qū)⑽覀兊捻撁婵雌饋砀杏^賞性,首先使用HTML代碼進行網(wǎng)頁頁面的格局設(shè)計,這里頁面布局比較簡單,只需要在li標(biāo)簽里分出一個整體布局即可,之后再使用一下代碼實現(xiàn)接口功能如下圖4.6所示。4.6接口實現(xiàn)圖數(shù)據(jù)可視化模塊共設(shè)計出九個圖形化展示,分別為:行業(yè)及職位數(shù)量表、薪資分布情況表、融資情況表、公司規(guī)模表、崗位要求表、職業(yè)方向分布情況表、工作經(jīng)驗分布情況表、學(xué)歷要求情況表以及職位數(shù)量的地圖分布表,這些數(shù)據(jù)都是從數(shù)據(jù)庫使用SQL語句中調(diào)用出來的??梢暬瘓D表結(jié)果如下圖4.7所示:圖4.7可視化圖表展示

結(jié)論本系統(tǒng)是根據(jù)現(xiàn)在社會求職的情況所創(chuàng)建的網(wǎng)絡(luò)招聘數(shù)據(jù)可視化系統(tǒng)。本文通過對招聘行業(yè)需求的調(diào)查研究,確立了較為科學(xué)的數(shù)據(jù)可視化設(shè)計架構(gòu)。在進行本系統(tǒng)開發(fā)的時候也是困難重重,不過好在通過幾個月的不斷努力,最終順利的完成了該系統(tǒng)的開發(fā)。從最初確定了題目之后,就開始去上網(wǎng)查詢相關(guān)的各種資料,參考類似的系統(tǒng),經(jīng)過反復(fù)的研究,最后確定了該系統(tǒng)實現(xiàn)要設(shè)計的步驟。在確定之后,就要開始程序的編碼,一開始感覺爬蟲程序挺好寫的,但是經(jīng)過一番嘗試之后發(fā)現(xiàn),自己走了很多彎路,比如:招聘網(wǎng)站的選擇是一大問題,有的網(wǎng)站反爬技術(shù)非常的強,會把我們的IP給禁用掉,導(dǎo)致我們無法爬取數(shù)據(jù)。我發(fā)現(xiàn)只有知識和實踐經(jīng)驗的相互結(jié)合,才是最重要的。這對即將踏入社會的我們來說是非常寶貴的。這可以讓我們在以后的工作中提高自己的工作效率,更加完善了自己的工作方法。該系統(tǒng)比較成功的實現(xiàn)了全套的功能,從數(shù)據(jù)采集一直到數(shù)據(jù)可視化展示等功能,實現(xiàn)了更直觀的數(shù)據(jù)可視化功能,幫助用戶可以更方便的觀察到網(wǎng)絡(luò)招聘行業(yè)的具體情況,很大程度上提升求職效率。以上內(nèi)容僅僅是個人對網(wǎng)絡(luò)招聘的數(shù)據(jù)可視化系統(tǒng)的具體需求的分析,相信數(shù)據(jù)可視化系統(tǒng)的深入研究還有很長的路要走。我會繼續(xù)學(xué)習(xí)該方面技術(shù),不斷的努力,不怕困難,爭取開發(fā)更多有用的程序。在系統(tǒng)的開發(fā)過程中,我大致實現(xiàn)了全部的需求,但是在一些地方還是有很多的不足,比如爬蟲的網(wǎng)站方面,我嘗試過對一些其他的招聘網(wǎng)站爬取信息,如拉勾網(wǎng)、boss直聘等,這些網(wǎng)站都具有自身的反爬功能,所以我的爬蟲方式不適合這些網(wǎng)站。此代碼只針對了get請求方式的網(wǎng)站,對于post請求方式的網(wǎng)站并不適用,所以還需要繼續(xù)開發(fā)。由于對數(shù)據(jù)分析的要求不高,并沒有著重去研究數(shù)據(jù)分析方面的算法,相信后續(xù)的研究中也應(yīng)該加入這些功能。

參考文獻裴丹丹.基于ECharts的數(shù)據(jù)可視化實現(xiàn)[D].北京郵電大學(xué),2018.王瑞梅.網(wǎng)絡(luò)招聘數(shù)據(jù)可視化分析系統(tǒng)的設(shè)計與實現(xiàn)[D].河北師范大學(xué),2020.薛競.大數(shù)據(jù)時代求職者使用社會化招聘平臺影響因素研究[D].北京郵電大學(xué),2016.中國網(wǎng)絡(luò)招聘行業(yè)半年度報告2017年[A].上海艾瑞市場咨詢有限公司.艾瑞咨詢系列研究報告(2017年第11期)[C].:上海艾瑞市場咨詢有限公司,2017:33.中國網(wǎng)絡(luò)招聘行業(yè)發(fā)展報告2019年[A].上海艾瑞市場咨詢有限公司.艾瑞咨詢系列研究報告(2019年第7期)[C].:上海艾瑞市場咨詢有限公司,2019:61.李爽,陳瑞瑞,林楠.面向大數(shù)據(jù)挖掘的Hadoop框架K均值聚類算法[J].計算機工程與設(shè)計,2018,39(12):3734-3738.殷麗鳳,張浩然.基于Python網(wǎng)上招聘信息的爬取和分析[J].電子設(shè)計工程,2019,27(20):22-26.ClintonW.Brownley.Python數(shù)據(jù)分析基礎(chǔ)[M].北京:人民郵電出版社,2017年8月.黎曦.基于網(wǎng)絡(luò)爬蟲的論壇數(shù)據(jù)分析系統(tǒng)的設(shè)計與實現(xiàn)[D].華中科技大學(xué),2019.孫瑜.基于Scrapy

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論