劉 斌,高尚兵,吳慶國(guó)
(1. 淮陰工學(xué)院 信息化建設(shè)與管理處,江蘇 淮安 223000;2.淮陰工學(xué)院 科學(xué)與技術(shù)處,江蘇 淮安 223000)
關(guān)鍵字: Web挖掘;Pandas;可視化;Django
計(jì)算機(jī)和互聯(lián)網(wǎng)技術(shù)不斷發(fā)展,通過網(wǎng)絡(luò)瀏覽信息已經(jīng)成為生活的一部分[1],高校師生對(duì)于網(wǎng)絡(luò)的使用頻率也在急劇增加,隨之產(chǎn)生的便是龐大的網(wǎng)絡(luò)數(shù)據(jù)[2]。要了解網(wǎng)絡(luò)使用情況主要是通過記錄師生在校網(wǎng)絡(luò)瀏覽的URL記錄,使用人工統(tǒng)計(jì)或第三方軟件進(jìn)行分析。隨著高校網(wǎng)絡(luò)使用變的愈發(fā)頻繁,海量的網(wǎng)絡(luò)日志之下進(jìn)行人工處理的效率,無法滿足網(wǎng)絡(luò)輿情分析和直觀了解高校師生的網(wǎng)絡(luò)使用情況。使用Excel處理大量數(shù)據(jù)則容易發(fā)生失去響應(yīng)等問題, Excel統(tǒng)計(jì)方法亦難以對(duì)龐大的數(shù)據(jù)進(jìn)行分析,傳統(tǒng)的基于Web內(nèi)容分析的惡意URL檢測(cè)技術(shù)遇到了很大的性能瓶頸[3]。
目前,大數(shù)據(jù)以其體積、種類、速度和準(zhǔn)確性等四個(gè)方面的特點(diǎn),已成為許多領(lǐng)域的研究熱點(diǎn)。Web日志挖掘即通過對(duì)用戶的Web日志記錄的大數(shù)據(jù)挖掘,對(duì)用戶訪問Web頁(yè)面的瀏覽模式進(jìn)行了解,從而進(jìn)一步分析和研究用戶在日常瀏覽過程中的規(guī)律,進(jìn)而改善Web站點(diǎn)的性能和組織結(jié)構(gòu),或者提供個(gè)性化服務(wù)[4]。
Web日志挖掘技術(shù)的應(yīng)用十分的廣泛,在個(gè)性化設(shè)計(jì)的場(chǎng)景下普遍適用。目前來說,世界上兩種主要的Web日志挖掘技術(shù)(基于Web事務(wù)和基于數(shù)據(jù)立方體)[5],在高校網(wǎng)絡(luò)輿情方面的研究比較少。
國(guó)內(nèi)Web數(shù)據(jù)挖掘的相關(guān)研究起步較晚,但普通認(rèn)識(shí)到能夠通過對(duì)Web的數(shù)據(jù)挖掘,獲取到所需要的數(shù)據(jù)信息、知識(shí),能夠?qū)τ脩舻脑L問行為、內(nèi)容進(jìn)行深入分析,Web日志挖掘是數(shù)據(jù)挖掘中的重點(diǎn)內(nèi)容。針對(duì)日志挖掘中的一些重點(diǎn)難點(diǎn)問題,國(guó)內(nèi)外研究學(xué)者提出了一些很好的算法,較好地解決了日志聚合分類、數(shù)據(jù)預(yù)處理和特征選擇等問題。宗瑜等[6]給出了一種面向Weblog的模糊協(xié)同聚類FCOW(Fuzzy CO- clustering for Weblog)算法來解決協(xié)同聚類算法的邊界問題,以提高聚類結(jié)果的質(zhì)量。李華等[7]借助日志挖掘的數(shù)據(jù)預(yù)處理技術(shù),獲取到用戶特征,將自身的Web的服務(wù)設(shè)計(jì)進(jìn)行優(yōu)化,開展針對(duì)性的網(wǎng)絡(luò)活動(dòng),對(duì)Web日志挖掘中的數(shù)據(jù)預(yù)處理技術(shù)進(jìn)行研究,提出預(yù)處理算法,。國(guó)外Web數(shù)據(jù)挖掘相關(guān)研究較早。Thakre等[8]使用Apriori混合算法,即加權(quán)Apriori算法和hash樹算法相結(jié)合,對(duì)數(shù)據(jù)集進(jìn)行搜索,并將所得結(jié)果進(jìn)一步推廣到FDM(快速分布算法)中進(jìn)行比較。Selvaganapathy等[9]使用堆疊限制Boltzmann機(jī)器進(jìn)行特征選擇,使用深度神經(jīng)網(wǎng)絡(luò)進(jìn)行二值分類對(duì)27 700個(gè)URL樣本進(jìn)行了測(cè)試,結(jié)果表明,基于深度學(xué)習(xí)的特征選擇和分類技術(shù)能夠快速訓(xùn)練網(wǎng)絡(luò),減少誤報(bào)率。Ansari等[10]提出了一種基于先驗(yàn)的關(guān)聯(lián)規(guī)則挖掘算法的新優(yōu)化,從而大大提高數(shù)據(jù)挖掘過程的效率。
教育部要求各高校深入貫徹落實(shí)《中華人民共和國(guó)網(wǎng)絡(luò)安全法》,網(wǎng)絡(luò)日志保存是基本目標(biāo),但高校學(xué)生宿舍與教學(xué)區(qū)網(wǎng)絡(luò)一般是分開管理的,并且日志數(shù)據(jù)非常龐大,數(shù)據(jù)歸集和有效分析復(fù)雜度高,很難得到充分利用。為了能夠獲取到完整的用戶興趣數(shù)據(jù),有必要針對(duì)高校網(wǎng)絡(luò)情況設(shè)計(jì)一款BI系統(tǒng)。
本系統(tǒng)基于MVC模式(Model View Controller即模型(model)、視圖(view)、控制器(controller),B/S架構(gòu)(瀏覽器/服務(wù)器模式,browser/server),在Python語言下基于Django框架進(jìn)行搭建,運(yùn)用HTML(超級(jí)文本標(biāo)記語言)、CSS樣式進(jìn)行前端頁(yè)面的搭建。運(yùn)用Mysql進(jìn)行數(shù)據(jù)庫(kù)的搭建,運(yùn)用Pandas進(jìn)行Excel文本數(shù)據(jù)的處理。具體搭建情況如表1。
表1 系統(tǒng)運(yùn)行環(huán)境
在左側(cè)導(dǎo)航欄的單位時(shí)間內(nèi)使用人數(shù)統(tǒng)計(jì)圖,可以查看單位時(shí)間內(nèi)高校網(wǎng)絡(luò)瀏覽人數(shù)的折線統(tǒng)計(jì)圖如圖1所示。
圖1 瀏覽人數(shù)折線圖界面
左側(cè)導(dǎo)航欄的網(wǎng)站類別統(tǒng)計(jì)圖,在右側(cè)圖表中展示高校網(wǎng)絡(luò)各個(gè)類別網(wǎng)站瀏覽人數(shù)的統(tǒng)計(jì)如圖2所示。
圖2 網(wǎng)站類別柱狀圖界面
本系統(tǒng)為B/S架構(gòu),共分Frontend(前端)、Backend(后端)、Database(數(shù)據(jù)庫(kù))三層,系統(tǒng)總體層次圖。如圖3所示。
圖3 系統(tǒng)整體層次圖
系統(tǒng)功能清晰明確、簡(jiǎn)單易用,能夠大大提高用戶體驗(yàn),所以在開發(fā)一個(gè)B/S架構(gòu)的系統(tǒng)之前,應(yīng)先設(shè)計(jì)好網(wǎng)站的層次圖。
本系統(tǒng)的層次圖主要依據(jù)需求分析總結(jié)歸納出的管理員用例圖來進(jìn)行設(shè)計(jì)。 管理員層次圖如圖4所示。
圖4 管理員層次圖
用戶的層次圖如圖5所示。
圖5 用戶層次圖
數(shù)據(jù)庫(kù)是由Excel表格通過Pandas進(jìn)行整合之后Navicat導(dǎo)入Mysql中。整合代碼如下:
li =
for i in file:
li.append(pd.read_excel(i))
writer = pd.ExcelWriter('F:/hebing/11.xlsx')
pd.concat(li).to_excel(writer, 'Sheet1', index=False)
writer.save()
經(jīng)過整合之后的Excel表格如圖6所示。
圖6 整合之后數(shù)據(jù)表
在Django中,每一個(gè)Model 類都對(duì)應(yīng)一個(gè)數(shù)據(jù)庫(kù)表。網(wǎng)絡(luò)使用情況數(shù)據(jù)的總體數(shù)據(jù)類,網(wǎng)絡(luò)使用情況見表2。
表2 網(wǎng)絡(luò)使用情況類
(1)使用Django創(chuàng)建項(xiàng)目時(shí)產(chǎn)生的settings.py文件是Django默認(rèn)的配置文件,Django默認(rèn)使用的數(shù)據(jù)庫(kù)為sqlite3,此處重新指定Django所使用的數(shù)據(jù)庫(kù)類型為Mysql,并添加相應(yīng)的數(shù)據(jù)庫(kù)信息。
(2)在項(xiàng)目中創(chuàng)建APP,在Terminal中輸入python manage.py startapp xxx創(chuàng)建xxx 應(yīng)用,之后需要修改settings文件,在INSTALLED_APPS下加入該應(yīng)用。
(3)數(shù)據(jù)庫(kù)同步。由于Pymysql與Django在3.7版本下不兼容,所以采用Mysqlclient通過在Terminal中輸入數(shù)據(jù)庫(kù)通過Python manage.py inspectdb > models.py來實(shí)現(xiàn)Sql數(shù)據(jù)庫(kù)的映射,最終數(shù)據(jù)庫(kù)在models中為user數(shù)據(jù)庫(kù),瀏覽記錄數(shù)據(jù)庫(kù)Bishe1,Manager數(shù)據(jù)庫(kù)。
Django的視圖函數(shù)設(shè)計(jì)和模板設(shè)計(jì)遵循松耦合原則。使用Django的模板系統(tǒng)( Template System) 便可實(shí)現(xiàn)這種模式,模板是一個(gè)包含Django標(biāo)簽的HTML文件,當(dāng)通過URLconf調(diào)用視圖函數(shù)時(shí),視圖函數(shù)處理用戶請(qǐng)求,并通過模板系統(tǒng)將函數(shù)中的值傳入對(duì)應(yīng)的模板中的標(biāo)簽,然后返回對(duì)應(yīng)的HTML模板來呈現(xiàn)結(jié)果[11]。Django中的模板可以通過繼承,使用基礎(chǔ)模板進(jìn)行站點(diǎn)的設(shè)計(jì)修改,所有其他模板會(huì)立即反映出所做修改,而作為下面的模板則不會(huì)直接影響到基礎(chǔ)模板。本系統(tǒng)中的基礎(chǔ)模板文件叫做base.html,由它定義其它頁(yè)面的基本框架,通過{%if %}對(duì)身份進(jìn)行判斷從而實(shí)現(xiàn)manager和用戶界面的劃分,manager可以獲取更多的權(quán)限,而相沖突的權(quán)限則通過{%if%}{%else%}實(shí)現(xiàn)。
2.2.1系統(tǒng)登錄模塊
系統(tǒng)登錄模塊主要由LoginView、ChooseUser、Index三個(gè)視圖函數(shù)來實(shí)現(xiàn)用戶登錄。登錄模塊流程圖如圖7所示:
圖7 登錄流程圖
2.2.2查看網(wǎng)絡(luò)瀏覽情況模塊
查看單位時(shí)間內(nèi)網(wǎng)絡(luò)使用情況。首先用Pandas獲取經(jīng)過整合過后的Excel中的數(shù)據(jù),用Datetime將時(shí)間轉(zhuǎn)為小時(shí),按照每小時(shí)進(jìn)行統(tǒng)計(jì),進(jìn)行統(tǒng)計(jì),用Matplotlib進(jìn)行構(gòu)圖。Pandas生成結(jié)果如圖8所示。
圖8 Pandas折線圖
2.2.3查看各類網(wǎng)站瀏覽人數(shù)
首先用Pandas獲取經(jīng)過整合過后的Excel中的數(shù)據(jù),用Groups將網(wǎng)站類別作為目錄對(duì)其進(jìn)行統(tǒng)計(jì),將網(wǎng)站類別作為x軸,網(wǎng)站類別統(tǒng)計(jì)次數(shù)為y軸,用Matplotlib進(jìn)行構(gòu)圖:Pandas生成圖片如圖9所示。
圖9 導(dǎo)出柱狀圖
網(wǎng)絡(luò)技術(shù)的不斷發(fā)展增加了高校網(wǎng)絡(luò)的使用量,高校網(wǎng)絡(luò)的瀏覽記錄在現(xiàn)在不到6小時(shí)內(nèi)就有超過百萬數(shù)據(jù),高效的網(wǎng)絡(luò)瀏覽記錄統(tǒng)計(jì)方式越來越重要,有必要開發(fā)高校網(wǎng)絡(luò)瀏覽記錄系統(tǒng)。本文首先滿足管理員對(duì)網(wǎng)絡(luò)進(jìn)行直觀了解的需要,主要的功能包括用戶管理、個(gè)人信息管理、高校網(wǎng)絡(luò)使用情況查看。系統(tǒng)前端是CSS樣式的HTML頁(yè)面,主框架采用Django框架,具有小巧、靈活等特點(diǎn)。實(shí)現(xiàn)了瀏覽統(tǒng)計(jì)數(shù)據(jù)進(jìn)行查詢查看每小時(shí)網(wǎng)絡(luò)瀏覽情況,查看網(wǎng)站類別統(tǒng)計(jì)情況,并實(shí)現(xiàn)對(duì)用戶的管理,用戶可以查看個(gè)人的瀏覽記錄。高校網(wǎng)絡(luò)使用情況系統(tǒng)有著良好的擴(kuò)展性,相對(duì)簡(jiǎn)單的維護(hù),為日后的系統(tǒng)擴(kuò)展提供可能和便利。但同時(shí),高校網(wǎng)絡(luò)情況系統(tǒng)也存在一些不足,高校網(wǎng)絡(luò)瀏覽情況頁(yè)面內(nèi)容過多需要借助滾動(dòng)條查看完整的信息,需進(jìn)一步完善。