python實(shí)戰(zhàn)案例:全國(guó)崗位可視化分析
實(shí)戰(zhàn)案例內(nèi)容
今天這個(gè)實(shí)戰(zhàn)案例來(lái)源于大學(xué)《python爬蟲基礎(chǔ)與可視化》課程的期末大作業(yè)。大作業(yè)要求采用虛擬瀏覽器等爬蟲技術(shù),完成拉勾網(wǎng)網(wǎng)站的崗位數(shù)據(jù)爬取。將爬取的數(shù)據(jù)清洗和保存,同時(shí)利用相關(guān)技術(shù)對(duì)數(shù)據(jù)進(jìn)行可視化,向用戶展示一個(gè)全面真實(shí)的崗位情況。
整體思路
數(shù)據(jù)爬取
首先,設(shè)計(jì)爬蟲程序,以網(wǎng)址為起始點(diǎn),分析初始網(wǎng)頁(yè)的url及其網(wǎng)頁(yè)內(nèi)容和結(jié)構(gòu)信息,完成分析后就可以獲取數(shù)據(jù)。這一部分的設(shè)計(jì)思路和實(shí)現(xiàn)可以查看我之前分享的文章:[Python爬蟲拉勾網(wǎng)崗位數(shù)據(jù)](https://juejin.cn/post/7028133174051864612 "https://juejin.cn/post/7028133174051864612")
數(shù)據(jù)存儲(chǔ)
后面我們會(huì)使用Flask框架進(jìn)行可視化分析,而Flask本身不限制數(shù)據(jù)庫(kù)的選擇,為了方便我就將獲取到的數(shù)據(jù)存儲(chǔ)到sqlite數(shù)據(jù)庫(kù)中,存儲(chǔ)的數(shù)據(jù)內(nèi)容如下:

數(shù)據(jù)可視化
通過(guò)對(duì)該網(wǎng)站崗位數(shù)據(jù)的爬取可以獲取到很多有價(jià)值的信息,同時(shí)進(jìn)行可視化分析。我這里使用了python的常用框架--Flask框架,它是一個(gè)輕量級(jí)的web框架。在Flask中調(diào)用視圖函數(shù)后,會(huì)將視圖函數(shù)的返回值作為響應(yīng)的內(nèi)容(一般為字符串和狀態(tài)碼)返回給瀏覽器。
1、創(chuàng)建Flask工程
我是使用的編輯器是pycharm,只要在新建工程時(shí)選擇Flask就可,但是要記得打開Debug模式,不然如果你更改的數(shù)據(jù)或代碼時(shí),刷新頁(yè)面時(shí)沒有效果,需要重新編譯才可以,打開的位置見下圖:

2、設(shè)計(jì)網(wǎng)頁(yè)
這里我在網(wǎng)上找了一個(gè)大數(shù)據(jù)分析的模板,網(wǎng)頁(yè)布局如下:

3、提取數(shù)據(jù)
根據(jù)Flask框架的語(yǔ)法,設(shè)計(jì)在用戶訪問網(wǎng)址時(shí),需要像服務(wù)器端獲取的數(shù)據(jù),并將數(shù)據(jù)渲染到瀏覽器頁(yè)面中。
Flask框架中,獲取服務(wù)器端數(shù)據(jù)的函數(shù)方法實(shí)現(xiàn)如下圖:

Flask中網(wǎng)頁(yè)數(shù)據(jù)渲染模板如下:

最后就是數(shù)據(jù)渲染到瀏覽器頁(yè)面,這一部分就是通過(guò)發(fā)送ajax請(qǐng)求獲取到數(shù)據(jù),然后將數(shù)據(jù)轉(zhuǎn)換成需要的格式,最后將數(shù)據(jù)添加到對(duì)應(yīng)的位置就可以了。我這里使用了一個(gè)JavaScript 實(shí)現(xiàn)的開源可視化庫(kù)--**ECharts**來(lái)制作圖表
