?

網絡小說信息爬取與管理系統的設計與實現

2022-07-19 09:53王凱琪蘭全祥
信息記錄材料 2022年5期
關鍵詞:網絡小說數據庫模塊

王凱琪,蘭全祥

(攀枝花學院數學與計算機學院 四川 攀枝花 617000)

0 引言

隨著網絡的發展,電子小說越來越多,且催生出了很多小說分享網站。而對于用戶來說想從海量的小說分享網站中快速地獲取所偏好的小說成為一大難題。另外,諸多小說分享網站都有其自己的小說排列及分類規則,且信息檢索都較為單一,無法滿足所有用戶的個性化需求。

通過開發一套針對某小說分享網站的數據爬取及分析系統,對其分享的小說數據進行爬取并存入到數據庫中,然后再對小說數據進行分析及可視化。該系統具有更為人性化的檢索功能以及較強的小說篩選功能,方便用戶快速找到自己中意的小說。

1 需求分析

該系統實現對網絡小說的爬取與管理,可以爬取該網站上的所有小說及小說的相關信息并存入數據庫中,爬取到的小說信息包括小說名稱、作者名、小說類別、小說標簽、小說摘要、各類評價數據、點擊量、閱讀量、網址等。當用戶登錄該系統之后,可以根據自己的喜好進行查詢和篩選,例如對評價數據的自定義加權排序、小說類型選取、關鍵詞模糊查詢等。該系統還可以根據小說的各類實時評價數據給出一個綜合推薦度以供用戶參考。用戶還能夠自主獲取最新小說、查看閱讀榜單(總閱讀量、月閱讀量)以及收藏小說等。

經上述分析,該系統主要分為登錄注冊模塊、小說查看模塊、智能搜索模塊以及用戶模塊。

2 技術選型

系統采用Java語言進行開發,使用MySQL數據庫進行數據存儲,使用Java Swing、AWT來進行可視化界面開發,從而將爬取到的網絡小說數據直觀且盡可能人性化地展示出來[1]。其中網絡爬蟲技術采用目前主流的Http Client,它是Apache Jakarta Common下的子項目,用來提供支持HTTP協議的客戶端編程工具包[2];網頁解析技術采用jsoup解析器,它可以直接解析HTML文本內容[3],能夠有效解決使用傳統的正則表達式解析網頁難度較大、開發復雜等問題。

3 系統設計與實現

3.1 系統功能設計

根據需求分析,確定了系統功能實現結構圖見圖1。

3.2 系統功能流程設計

3.2.1 登錄注冊模塊

登錄注冊模塊是系統的進入窗口,用戶可自行創建賬戶登錄,也可通過注冊時綁定的安全密碼找回密碼。

3.2.2 主功能模塊

主功能模塊主要為用戶提供不同分類的小說具體信息,例如小說名、作者、各類評價數目等。用戶可根據小說的評價數目加權篩選自己喜歡的小說。選中某本小說之后系統會根據小說的各類評價數目以及用戶設置的加權量給出一個具體的推薦度供用戶參考,最后可以訪問小說網絡地址進行瀏覽。

3.2.3 智能搜索模塊

智能搜索模塊主要為用戶提供功能有自定義權重排序、分類篩選、模糊搜索小說。用戶可以輸入關鍵詞模糊搜索小說,系統將會根據小說名、作者名、簡介內容進行模糊匹配,然后用戶可以將搜索到的結果進行分類查看,最后用戶還可以對評價數據進行自定義加權排序。智能搜索模塊還具有獲取最新小說、查看閱讀榜單以及更新數據庫功能。

3.2.4 用戶個人信息模塊

用戶個人信息模塊主要顯示用戶名,用戶的默認緩存路徑,用戶收藏表以及小說收藏表榜單。用戶可以修改默認緩存路徑和管理收藏信息。用戶能夠看見自己的收藏榜單以及各種小說被收藏的數目,還能夠進行分類篩選。

4 系統主要功能實現

4.1 小說爬取

在系統運行之前需將小說網站里面的所有電子小說的相關信息爬取下來并存入數據庫,以便后續的可視化界面顯示、對數據分析管理以及人性化搜索功能使用。系統采用Http Client技術先對其小說網站信息進行請求爬取,關鍵代碼如下:

獲取到小說主頁面fictionHtml與小說評價數網頁gradeHtml之后,運用jsoup解析器對其進行解析獲取出小說名、作者、第一類別、第二類別、各類評價數據、小說ID、小說摘要、小說大小等關鍵信息存入數據庫,見圖2。

4.2 系統登錄功能

(1)注冊賬號。用戶輸入用戶名、密碼、密保提交到控制層后對其輸入的信息首先檢驗數據合法性。合法則將相應數據經過MD5加鹽加密后存入數據庫,關鍵代碼:

(2)登錄系統。用戶輸入用戶名、密碼提交到控制層對其輸入的賬戶信息使用加密串與加密后的用戶密碼再次進行多次MD5加鹽加密,生成不可逆加密串,最終進行比對,如果比對正確則登錄成功,跳轉主頁面見圖3。

(3)找回密碼。若用戶忘記密碼,則可以通過該功能輸入用戶名、密保和重置密碼提交到控制層后,對其輸入的信息首先檢驗數據合法性。合法則將用戶重置的密碼MD5加鹽加密后存入數據庫。

4.3 小說查看模塊功能

4.3.1 自定義權重排序

每位用戶心目中對小說的各類評價看法不一,因此用戶能夠針對小說各類的評價數據進行自定義加權[4],系統將用戶加權之后算出每本小說的得分,最后排序展示。加權算法采用公式:

其中,n表示總共存在幾種評價類別,表示第i個評價類別的數據,表示用戶對該評價類別的加權量。算出所有之后對小說進行排序。

4.3.2 查看小說信息

雙擊小說列表中任意一行小說之后將展示該小說的相關信息,見圖5。推薦度計算將根據用戶提供對各類評價的加權量進行計算推薦度,采用公式:

其中各類字母所代表的含義與4.3.1中式子一樣。用戶除了能夠查看小說推薦度和小說的相關信息以外,還能夠在其頁面瀏覽到下載小說地址和更新評價數。

4.3.3 收藏小說

收藏小說將方便用戶下次登錄系統快速找到喜愛的小說。用戶提交收藏請求,控制層首先校驗數據合法性,合法則將數據存入數據庫。

4.4 智能搜索功能

4.4.1 模糊查詢

用戶輸入關鍵字提交到控制層對其數據合法性檢驗。合法則運用SQL查詢語句在小說的信息字段中模糊查詢[5],最后將查詢的小說展示在界面中。

4.4.2 自定義分類篩選

用戶可以將模糊查詢到的小說按照不同的分類顯示,也能夠自定義對小說各類評價數據進行加權排序。關鍵代碼如下:

4.4.3 點擊榜獲取

用戶可以快速獲取到小說網站對應的總點擊量與月點擊量前10篇小說,采用的是Http Client技術爬取網頁信息,jsoup解析其網頁信息,獲取對應的榜單顯示在頁面。

4.4.4 更新小說數據庫

由于小說網站會隨時更新小說,而系統的數據庫不會隨著小說網站的小說更新而自動爬取,那么用戶則不能看見小說網站后續發布的小說。為了降低后續維護成本,即管理員定時更新數據庫,那么在用戶端可點擊更新小說數據庫后,系統將采用多線程同時利用Http Client技術爬取最新發布的小說,然后將其小說數據存入數據庫。

4.5 個人主頁功能

4.5.1 更改默認緩存路徑

由于系統數據庫中含有大量的小說信息,用戶每次登錄系統都會到數據庫中查詢所有的小說信息,當有大量用戶同時使用系統時,數據庫的壓力會增大,數據庫的查詢速度自然而然降低,還有可能造成服務器崩潰的情況。為了解決這類問題,系統采用緩存方式將用戶第一次登錄時查詢到的小說信息采用DES(Data Encryption Standard)對稱加密算法存入默認緩存路徑[6],當用戶下一次登錄時直接將數據解密后顯示出來即可。修改默認緩存路徑需運用Java中的JFileChooser類,用于獲取用戶新選擇的下載路徑[7]。關鍵代碼如下:

4.5.2 查看小說收藏集

用戶能夠看見自己的收藏榜單以及各種小說被收藏的數目,還能夠進行分類篩選。用戶提交查看收藏集請求,控制層首先校驗用戶id的合法性,合法則通過服務層調用持久層查取到用戶的收藏信息進行封裝后顯示在頁面上。

5 結語

本文系統的設計能夠很好地爬取到用戶需要的網絡小說信息,過濾掉網絡小說網站不必要的冗余信息。另外,系統還可以很好地滿足用戶自定義的篩選標準。采用可視化界面更直觀地反映了網絡小說的信息,能夠幫助用戶快速找到自己喜歡的小說進行下載后閱讀。但由于每個網絡小說網站的網頁布局不同,因此jsoup解析的網頁標簽也要有所改變,但通過學習了解爬蟲原理,就可以快速爬取各大網絡小說網站的小說信息。

猜你喜歡
網絡小說數據庫模塊
28通道收發處理模塊設計
“選修3—3”模塊的復習備考
大學生網絡小說成癮的干預策略淺析
當網絡小說逆襲之后……
數據庫
數據庫
必修模塊相關知識過關訓練
數據庫
數據庫
50 SHADES OF ONLINE LIT
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合