發(fā)布時間:2022-11-17 09:24:30
序言:寫作是分享個人見解和探索未知領(lǐng)域的橋梁,我們?yōu)槟x了1篇的網(wǎng)站數(shù)據(jù)分析系統(tǒng)設(shè)計研究樣本,期待這些樣本能夠為您提供豐富的參考和啟發(fā),請盡情閱讀。
0引言
伴隨著互聯(lián)網(wǎng)技術(shù)的飛速發(fā)展,中國正迎來從IT時代到DT時代的變革。《2020中國網(wǎng)絡(luò)文學藍皮書》顯示,2020年中國網(wǎng)絡(luò)文學用戶規(guī)模達4.67億人,全網(wǎng)作品累計約2800萬部,全國文學網(wǎng)站日均更新字數(shù)超1.5億,全年累計新增字數(shù)超過500億。由此可見,網(wǎng)絡(luò)小說平臺在運營過程中會產(chǎn)生大量讀者、作者、類別、熱度、評分等信息。面對日益增加的數(shù)據(jù)壓力,網(wǎng)絡(luò)小說的平臺流量成本不斷提升,平臺在老用戶維持、新用戶吸引、網(wǎng)站點擊率等方面逐漸暴露出諸多問題[1]。由于新媒介的不斷崛起,讀者對網(wǎng)絡(luò)小說平臺的要求也越來越高,用戶閱讀時長呈現(xiàn)離散化分布,導(dǎo)致網(wǎng)絡(luò)小說平臺行業(yè)獨占率下滑,用戶爭奪日趨白熱化。因此,對小說平臺產(chǎn)生的海量數(shù)據(jù)進行整合分析勢在必行。一方面,有利于指導(dǎo)網(wǎng)絡(luò)小說平臺改編影視,降低運營成本,提高收益[2];另一方面,便于讀者和新手更加快捷有效地發(fā)現(xiàn)感興趣的小說題材。本文以“我愛小說網(wǎng)”為研究案例,通過開發(fā)一個海量數(shù)據(jù)分析系統(tǒng),旨在提高用戶體驗,推動小說網(wǎng)絡(luò)平臺發(fā)展。平臺的用戶主要包括小說閱讀用戶、小說網(wǎng)站管理者、新入行的網(wǎng)絡(luò)小說作者等。通過爬取小說網(wǎng)站信息,并對數(shù)據(jù)進行分析和處理,有助于用戶找到當前比較流行的網(wǎng)絡(luò)小說類型、各種類型小說所適合的篇幅等。
1系統(tǒng)概述
本系統(tǒng)設(shè)計的目的在于使用戶便捷高效地采集到需要的數(shù)據(jù),并將數(shù)據(jù)清洗之后進行分析和可視化呈現(xiàn)[3]。因此,本文將系統(tǒng)的功能需求分為數(shù)據(jù)采集部分、數(shù)據(jù)存儲部分、系統(tǒng)登錄部分、后臺管理部分、數(shù)據(jù)可視化交互部分。以下每個功能模塊的需求分析。
⑴數(shù)據(jù)采集部分
數(shù)據(jù)采集功能只有管理員才擁有權(quán)限操作,普通用戶無法操作數(shù)據(jù)采集。因此,數(shù)據(jù)采集模塊是在服務(wù)器端上進行操作的。啟動后,系統(tǒng)會生成相應(yīng)的任務(wù)采集數(shù)據(jù)表,然后啟動引擎開始爬取網(wǎng)頁數(shù)據(jù)并存儲到對應(yīng)MySQL數(shù)據(jù)庫表中。當任務(wù)沒有可爬取的網(wǎng)址時,任務(wù)結(jié)束并返回任務(wù)結(jié)束信號[4]。
⑵數(shù)據(jù)存儲部分
數(shù)據(jù)存儲部分主要是用來存儲爬取小說的文本數(shù)據(jù),包括ID、小說類型、小說名稱、更新的小說章節(jié)、小說作者、小說字數(shù)、小說狀態(tài)、發(fā)布時間、點擊量和推薦票數(shù)量等。除此之外,還包括系統(tǒng)登錄賬號以及密碼和用戶的權(quán)限管理。
⑶系統(tǒng)登錄部分
當用戶對相關(guān)的平臺接口進行訪問時,首先進入系統(tǒng)的登錄界面。在該界面中,包括有兩個功能模塊:注冊與登錄模塊[5]。如果當前用戶屬于未注冊用戶,需要用戶先進行注冊,得到系統(tǒng)管理員的授權(quán)之后才能進入系統(tǒng)內(nèi)部。若當前用戶屬于已經(jīng)注冊的老用戶,可以直接通過填寫用戶名和密碼完成登錄。
⑷后臺管理部分
前端界面的數(shù)據(jù)查詢部分、小說數(shù)據(jù)詳情展示部分和數(shù)據(jù)分析可視化部分都需要先從后臺管理獲取對應(yīng)的圖表數(shù)據(jù),而后臺數(shù)據(jù)管理則是從MySQL數(shù)據(jù)庫獲取全部數(shù)據(jù),管理員用戶可以對數(shù)據(jù)清洗沒清洗掉的數(shù)據(jù)進行管理操作,以求前端展示的數(shù)據(jù)都是有效數(shù)據(jù),并可以根據(jù)需求調(diào)整排序方式,以及前端頁面數(shù)據(jù)的展示數(shù)量。
⑸數(shù)據(jù)可視化交互部分
數(shù)據(jù)可視化交互部分只針對普通用戶,用戶可以自由選擇想要查看的圖表信息。且用戶可以下載所呈現(xiàn)出來的圖表信息并保存至本地,方便隨時查閱。以上各部分模塊獨立開發(fā)、低耦合、適合于團隊敏捷開發(fā),更加方便后期系統(tǒng)的升級和運維。
2系統(tǒng)架構(gòu)設(shè)計
完成系統(tǒng)分析后,需要設(shè)計系統(tǒng)的總體架構(gòu),主要分為表示層、業(yè)務(wù)層和數(shù)據(jù)層。分別使用DjangoWeb框架和DjangoAdmin框架來實現(xiàn)。在系統(tǒng)功能需求分析的基礎(chǔ)上,結(jié)合數(shù)據(jù)采集系統(tǒng)的架構(gòu)設(shè)計,將系統(tǒng)分為五個部分,主要有數(shù)據(jù)采集部分、數(shù)據(jù)存儲部分、系統(tǒng)登錄部分、后臺管理部分、數(shù)據(jù)可視化交互部分。系統(tǒng)結(jié)構(gòu)圖如下所示:下面簡要介紹系統(tǒng)的體系結(jié)構(gòu),總體框架是PythonWeb的Browser/Server架構(gòu),主要包含數(shù)據(jù)采集、數(shù)據(jù)分析與展示。其中數(shù)據(jù)采集部分采用Python的Scrapy框架,后臺存儲數(shù)據(jù)采用的是傳統(tǒng)的關(guān)系型數(shù)據(jù)庫MySQL,后臺管理采用Djangoadmin,前端采用DjangoWeb框架,主要用到CSS、JS、HTML等語言。體系結(jié)構(gòu)圖示例如圖1所示。業(yè)務(wù)邏輯層主要是由Django框架和Scrapy框架這兩部分組成。DjangoWeb負責實現(xiàn)業(yè)務(wù)邏輯,從后臺獲取數(shù)據(jù)、通過統(tǒng)計分析之后,再到前端展示。而后臺的數(shù)據(jù)則是從數(shù)據(jù)庫獲取的,后臺的數(shù)據(jù)管理請求可以修改后臺的數(shù)據(jù)并保存下來,實現(xiàn)對數(shù)據(jù)庫的增刪改查(CRUD)。數(shù)據(jù)采集Scrapy框架包括以下這些模塊功能:URL獲取功能、數(shù)據(jù)響應(yīng)內(nèi)容功能、數(shù)據(jù)提取功能、數(shù)據(jù)清洗功能和數(shù)據(jù)持久化功能等[6]。數(shù)據(jù)層主要使用傳統(tǒng)的關(guān)系型數(shù)據(jù)庫MySQL作為數(shù)據(jù)持久化層。
3系統(tǒng)功能模塊設(shè)計
⑴數(shù)據(jù)采集
數(shù)據(jù)采集模塊主要包含URL獲取功能、數(shù)據(jù)響應(yīng)內(nèi)容功能、數(shù)據(jù)提取功能、數(shù)據(jù)清洗功能和數(shù)據(jù)持久化功能等,數(shù)據(jù)采集的功能模塊圖如圖2所示。
⑵數(shù)據(jù)分析與展示
數(shù)據(jù)分析與展示模塊主要有用戶管理、數(shù)據(jù)分析與展示、數(shù)據(jù)維護等功能,其中用戶管理模塊有用戶注冊和用戶登錄,數(shù)據(jù)分析與展示模塊包括:小說類別狀態(tài)圖、每年小說類別數(shù)量動態(tài)占比圖、各類小說平均字數(shù)圖、每年小說占比圖、詞云圖和小說狀態(tài)圖等,數(shù)據(jù)維護則是通過數(shù)據(jù)查詢查找到需要維護的數(shù)據(jù)進行維護操作[7],數(shù)據(jù)分析與展示模塊功能設(shè)計圖如圖3所示。
4系統(tǒng)實現(xiàn)
整體的系統(tǒng)實現(xiàn)分為四個模塊,分別為數(shù)據(jù)采集模塊、數(shù)據(jù)清洗模塊、系統(tǒng)后臺管理模塊以及小說數(shù)據(jù)管理模塊。
⑴數(shù)據(jù)采集模塊
Scrapy框架接受到數(shù)據(jù)采集的任務(wù)之后,負責對小說網(wǎng)站進行數(shù)據(jù)采集。經(jīng)過頁面的請求到URLconf,再到相對應(yīng)View函數(shù),View模塊負責整個采集任務(wù)的配置信息,并發(fā)布啟動請求。
⑵數(shù)據(jù)清洗模塊
在爬取的過程中,無法保證每個字段的數(shù)據(jù)信息格式是正常的,但是我們每一列數(shù)據(jù)后續(xù)所需要使用的信息必須是一致的,所以在進行后續(xù)的可視化操作或者模型分析時,需要確保當前的每一列的數(shù)據(jù)維度是正確的。對于系統(tǒng)爬取到的數(shù)據(jù),并不能直接滿足系統(tǒng)所要分析的內(nèi)容,所以需要通過對數(shù)據(jù)進行清洗之后,才能將數(shù)據(jù)完整的與模型進行適配。
⑶系統(tǒng)后臺管理模塊
后臺管理是針對管理員用戶設(shè)計,經(jīng)過數(shù)據(jù)采集模塊爬取數(shù)據(jù),清洗數(shù)據(jù)和持久化存儲數(shù)據(jù)之后。采集到的數(shù)據(jù)依舊存在一些垃圾數(shù)據(jù)問題,用DjangoAdmin框架設(shè)計實現(xiàn)后臺管理模塊,可以在后臺實現(xiàn)對小說數(shù)據(jù)的管理和維護操作,通過對小說詳情數(shù)據(jù)表各個表頭的正序和倒序排列來實現(xiàn)對小說垃圾數(shù)據(jù)的快速查找,并且可以對系統(tǒng)用戶進行認證和授權(quán)管理操作,包括對普通用戶授權(quán)、資料管理和管理員用戶的資料管理等。
⑷小說數(shù)據(jù)管理模塊
管理員可以在后臺對存儲到MySQL數(shù)據(jù)庫中的小說數(shù)據(jù)直接進行管理操作,主要任務(wù)是去除一些數(shù)據(jù)清洗時沒有清洗掉的垃圾數(shù)據(jù)。為了方便且快速查找,小說詳情表每一個表頭都能夠?qū)崿F(xiàn)正序和倒序排列。在數(shù)據(jù)管理模塊,對于清洗后的數(shù)據(jù)會做一些可視化呈現(xiàn),其中部分數(shù)據(jù)分析界如圖4所示。圖4采用柱狀圖的形式呈現(xiàn),所有的小說都可以劃分為完結(jié)跟連載兩種了類別,能明顯看到完結(jié)數(shù)量最高是“玄幻奇幻”,連載數(shù)量最高為“都市生活”。
5結(jié)束語
網(wǎng)絡(luò)小說在互聯(lián)網(wǎng)時代呈現(xiàn)出海量數(shù)據(jù)且內(nèi)容繁雜,想獲取準確高價值的數(shù)據(jù)并不容易,由此對網(wǎng)絡(luò)數(shù)據(jù)采集與分析提出更高的要求。網(wǎng)絡(luò)爬蟲技術(shù)可以高效獲取并整合這些海量的數(shù)據(jù),為用戶提供相關(guān)高質(zhì)量的數(shù)據(jù)信息[8]。本文設(shè)計開發(fā)的小說網(wǎng)數(shù)據(jù)爬取分析系統(tǒng),通過Scrapy爬蟲框架采集數(shù)據(jù),利用Django框架管理后臺并進行數(shù)據(jù)分析與展示,使得用戶可以直觀的獲取到自己想要的信息。測試表明,該系統(tǒng)具有高效獲取、分析和處理網(wǎng)絡(luò)小說平臺數(shù)據(jù)的功能,具有較高的實用價值。
作者:楊孟姣 杜棋東 單位:湖南省石門縣第一中學 廣州鐵路職業(yè)技術(shù)學院