999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于網(wǎng)絡(luò)爬蟲的數(shù)據(jù)可視化系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)

2021-09-23 06:08:04喬士秀圣文順
電子技術(shù)與軟件工程 2021年12期
關(guān)鍵詞:可視化數(shù)據(jù)庫(kù)用戶

喬士秀 圣文順

(1.德州市市場(chǎng)監(jiān)督管理局 山東省德州市 253500 2.南京工業(yè)大學(xué)浦江學(xué)院 江蘇省南京市 211200)

進(jìn)入21世紀(jì),數(shù)據(jù)成為人類最寶貴的財(cái)富。如今,中國(guó)網(wǎng)民數(shù)量已經(jīng)達(dá)到9億之多。隨意挑選一款互聯(lián)網(wǎng)產(chǎn)品,可能就有幾億的用戶。如何將數(shù)據(jù)有效地檢索并組織呈現(xiàn)出來(lái),有著巨大的應(yīng)用前景。

面對(duì)龐大的數(shù)據(jù)量,如何有效的檢索,并且直觀的展示,就顯得尤為重要。當(dāng)今人們檢索數(shù)據(jù)有兩種方式。使用搜索引擎是最普遍的一種。搜索引擎的出現(xiàn)大大降低了人們獲取數(shù)據(jù)的難度,人們可以輕松地通過檢索關(guān)鍵字獲得所需的數(shù)據(jù)。但是這種通用型爬蟲缺點(diǎn)也是非常明顯的,即無(wú)法獲得特定的數(shù)據(jù)。最具有代表意義的就是每個(gè)網(wǎng)站的robots.txt文件,此文件可以要求通用型搜索引擎哪些資源不能被爬取。部分網(wǎng)站甚至所有內(nèi)容都禁止爬取。用戶就無(wú)法通過搜索引擎獲取到這些信息。而另一種檢索工具是主題網(wǎng)絡(luò)爬蟲[1],優(yōu)勢(shì)就顯得非常明顯。開發(fā)者首先分析目標(biāo)網(wǎng)站的網(wǎng)頁(yè)結(jié)構(gòu)以及API信息,根據(jù)這些信息爬取所有需要的數(shù)據(jù)。之后使用數(shù)據(jù)處理的相關(guān)技術(shù),提取出有價(jià)值的數(shù)據(jù),最終通過可視化技術(shù)把數(shù)據(jù)直觀的展現(xiàn)出來(lái)。由此帶來(lái)了極大的便利。不同領(lǐng)域、不同背景的用戶往往具有不同的檢索目的和需求,通過主題爬蟲,就能完美定制這些個(gè)性化服務(wù)。

1 系統(tǒng)需求分析

網(wǎng)絡(luò)數(shù)據(jù)爬取及展現(xiàn)系統(tǒng)是對(duì)bilibili網(wǎng)站各項(xiàng)數(shù)據(jù)可視化的平臺(tái)。爬蟲設(shè)置定時(shí)任務(wù),每天根據(jù)配置自動(dòng)抓取目標(biāo)信息,并對(duì)數(shù)據(jù)進(jìn)行處理,然后持久化到MySQL數(shù)據(jù)庫(kù)。對(duì)于熱門信息,存儲(chǔ)到Redis數(shù)據(jù)庫(kù),以應(yīng)對(duì)頻繁訪問與數(shù)據(jù)處理,如圖1所示。

用戶通過在可視化網(wǎng)站點(diǎn)擊事件發(fā)送請(qǐng)求,通過接口在數(shù)據(jù)庫(kù)中查詢到相關(guān)數(shù)據(jù),再返回到網(wǎng)站,綁定到相關(guān)元素節(jié)點(diǎn)上。對(duì)于部分?jǐn)?shù)據(jù)設(shè)置自動(dòng)刷新,時(shí)間間隔內(nèi)自動(dòng)向后臺(tái)發(fā)送請(qǐng)求,刷新數(shù)據(jù)到網(wǎng)頁(yè)上,如圖2所示。

2 系統(tǒng)設(shè)計(jì)

系統(tǒng)主要模塊包括:可視化網(wǎng)站、后臺(tái)管理網(wǎng)站、爬蟲系統(tǒng),如圖3所示。

2.1 可視化網(wǎng)站

主要包括了bilibili網(wǎng)站基本數(shù)據(jù)展示、bilibili網(wǎng)站視頻信息展示、bilibili網(wǎng)站用戶信息展示模塊。

(1)bilibili網(wǎng)站基本數(shù)據(jù)展示模塊包括:網(wǎng)站實(shí)時(shí)在線人數(shù)、網(wǎng)站實(shí)時(shí)播放人數(shù)、網(wǎng)站每日在線人數(shù)、全站關(guān)鍵詞詞云。

(2)bilibili網(wǎng)站視頻信息展示模塊包括:當(dāng)日熱門視頻排行榜、視頻的具體信息,包括硬幣數(shù)、播放數(shù)、收藏?cái)?shù)、喜愛數(shù)、綜合評(píng)分、投稿人信息、單日以上數(shù)據(jù)分析展示等。

(3)bilibili網(wǎng)站用戶信息展示模塊包括:當(dāng)日最熱用戶排行榜、用戶個(gè)人信息、用戶簡(jiǎn)介、用戶數(shù)據(jù)、用戶視頻排行榜。

2.2 后臺(tái)管理網(wǎng)站

主要包括了用戶管理模塊、爬蟲管理模塊。

(1)用戶管理模塊包括:用戶的增加、刪除、修改、更新。

(2)爬蟲管理模塊包括:爬蟲具體狀態(tài)展示、控制爬蟲的運(yùn)行狀態(tài)、爬蟲效率分析。

圖1:爬蟲系統(tǒng)的數(shù)據(jù)流圖

圖2:可視化平臺(tái)的數(shù)據(jù)流圖

2.3 爬蟲系統(tǒng)

主要包括了URL調(diào)度器、下載器、解析器、存儲(chǔ)器、定時(shí)任務(wù)、消息隊(duì)列,如圖4所示。

(1)URL調(diào)度器包括:URL倉(cāng)庫(kù)、爬蟲狀態(tài)管理。

①URL倉(cāng)庫(kù)。所謂URL倉(cāng)庫(kù)就是Redis倉(cāng)庫(kù)[2],即在我們的系統(tǒng)中使用Redis來(lái)保存URL地址列表。只要保證了URL的唯一性,這樣不管我們的爬蟲程序有多少個(gè),最終爬取下來(lái)的數(shù)據(jù)只有一份,不會(huì)重復(fù)。可以在此基礎(chǔ)上實(shí)現(xiàn)爬蟲的分布式。

②爬蟲狀態(tài)管理。通過在Redis中設(shè)置一組變量,爬蟲每次爬取的時(shí)候需要判斷自身是不是處于開啟狀態(tài)。也可以通過后臺(tái)管理系統(tǒng)手動(dòng)控制爬蟲狀態(tài)。

(2)下載器包括:下載HTML頁(yè)面、下載JSON數(shù)據(jù)、IP代理池、反反爬措施

①IP代理池。加入隨機(jī)IP代理主要是為了反反爬蟲。如果有一個(gè)IP代理池,并且可以在構(gòu)建HTTP客戶端時(shí)可以隨機(jī)使用不同的代理,那么對(duì)我們進(jìn)行反反爬蟲則會(huì)由很大的幫助。

這里通過快代理獲取免費(fèi)的IP,并把這些IP保存到Redis的Set數(shù)據(jù)結(jié)構(gòu)[3]中。每次構(gòu)建HTTP客戶端時(shí),會(huì)隨機(jī)從Set集合中隨機(jī)取出一個(gè)元素。如果爬取時(shí)產(chǎn)生請(qǐng)求失敗,就將這一情況記錄下來(lái),當(dāng)超過一定次數(shù)時(shí),再將其從代理池中刪除。

圖3:網(wǎng)絡(luò)數(shù)據(jù)爬取及展現(xiàn)系統(tǒng)的功能模塊圖

圖4:爬蟲架構(gòu)圖

②反反爬措施。對(duì)于每日任務(wù),設(shè)置爬取間隔,降低被目標(biāo)網(wǎng)站封禁的風(fēng)險(xiǎn)。

對(duì)于24小時(shí)不間斷爬蟲,需要設(shè)置IP代理池。

同時(shí)創(chuàng)建HTTP客戶端的時(shí)候需要設(shè)置相關(guān)的頭字段,對(duì)于一些特別的請(qǐng)求,需要根據(jù)時(shí)間動(dòng)態(tài)改變頭字段的值,以應(yīng)對(duì)服務(wù)端的檢查。

(3)解析器。解析器[4]的作用就是把下載的網(wǎng)頁(yè)中對(duì)我們有用的數(shù)據(jù)解析出來(lái),并保存到某個(gè)對(duì)象中,供存儲(chǔ)器進(jìn)一步持久化到數(shù)據(jù)庫(kù)。解析器功能并不復(fù)雜,但是代碼量比較多,比如對(duì)于不同的HTML文本或者JSON數(shù)據(jù)都需要不同的代碼進(jìn)行解析。

當(dāng)然部分下載下來(lái)的文本里還有需要再次爬取的鏈接,我們就需要把這些鏈接保存到下載器隊(duì)列里,以便再次爬取。這一過程稱為抽鏈。

(4)存儲(chǔ)器。把解析好的對(duì)象保存到數(shù)據(jù)庫(kù)中,具體是什么數(shù)據(jù)庫(kù)也可以手動(dòng)設(shè)置,本系統(tǒng)的數(shù)據(jù)庫(kù)為MySQL。

(5)定時(shí)任務(wù)。使用Spring Task作為定時(shí)任務(wù)。部分?jǐn)?shù)據(jù)需要每天爬取并記錄,用于數(shù)據(jù)分析。

(6)消息隊(duì)列。由于將爬蟲分成了url調(diào)度器、下載器、解析器、存儲(chǔ)器,所以為了降低這幾個(gè)組件之間的耦合性,需要這些兩兩之間設(shè)置阻塞隊(duì)列,實(shí)現(xiàn)每個(gè)組件的獨(dú)立運(yùn)行。

(7)多線程。對(duì)于24小時(shí)不間斷爬蟲,每一個(gè)組件都實(shí)現(xiàn)了多線程。由于對(duì)象需要通過Spring Boot創(chuàng)建,因此需要注意多線程對(duì)象必須通過Spring容器對(duì)象獲取。而不能通過注解獲得。

通過分析一個(gè)爬蟲的爬取過程,了解到爬蟲的效率主要取決于下載器的下載的速度,所以本系統(tǒng)給下載器設(shè)置了5個(gè)線程,其它每一個(gè)組件都是單獨(dú)的線程。雖然存儲(chǔ)器與數(shù)據(jù)庫(kù)交互需要時(shí)間,但是插入數(shù)據(jù)時(shí)使用了批量插入操作,并且線程獨(dú)立運(yùn)行。在這種情況下,實(shí)現(xiàn)了爬蟲效率的最大化。

3 系統(tǒng)實(shí)現(xiàn)

3.1 前端項(xiàng)目部署

前端使用Vue.js框架[5]構(gòu)建,由于后端分成多個(gè)模塊,每個(gè)模塊都有不同的接口,所以前端請(qǐng)求全部發(fā)送到同一個(gè)端口9001,然后通過Nginx請(qǐng)求[6]轉(zhuǎn)發(fā)到對(duì)象模塊。配置好生產(chǎn)環(huán)境相關(guān)信息,就可以使用相關(guān)命令打包項(xiàng)目。只需要把打包好的文件放到服務(wù)器上即可運(yùn)行。

3.2 后臺(tái)項(xiàng)目部署

后端項(xiàng)目全部使用Spring Boot構(gòu)建,只需要使用Maven的package命令就可以生成每個(gè)模塊對(duì)應(yīng)的JAR包,把JAR包放到服務(wù)器上,執(zhí)行命令,即可運(yùn)行后端項(xiàng)目。

3.3 爬蟲系統(tǒng)的實(shí)現(xiàn)

爬蟲使用Http Client技術(shù)[7]對(duì)網(wǎng)絡(luò)發(fā)起請(qǐng)求,由于Http Client類似JDBC,寫法比較繁瑣,所以這里對(duì)Http Client進(jìn)行了二次封裝,減少代碼冗余,并且配置Http Client對(duì)象為單例模式,提高效率。核心代碼如下:

圖5:可視化系統(tǒng)首頁(yè)

圖6:視頻詳細(xì)歷史數(shù)據(jù)折線圖可視化頁(yè)面

圖7:爬蟲任務(wù)管理頁(yè)面

3.3 可視化平臺(tái)首頁(yè)

網(wǎng)絡(luò)數(shù)據(jù)爬取及展現(xiàn)系統(tǒng)可視化模塊首頁(yè),主要是展示bilibili網(wǎng)站網(wǎng)站當(dāng)前的一些基本信息。首先是所有用戶中,粉絲數(shù)排名最靠前的兩位制作者的數(shù)據(jù)對(duì)比,以及當(dāng)前在線人數(shù),如圖5所示。

3.4 可視化平臺(tái)視頻統(tǒng)計(jì)模塊

點(diǎn)擊導(dǎo)航欄上的視頻按鈕,可以進(jìn)入視頻排行榜頁(yè)面,這個(gè)頁(yè)面會(huì)顯示當(dāng)日排名前20的視頻信息,包括視頻封面、標(biāo)題、所屬分區(qū)等,點(diǎn)擊卡片的每一個(gè)分類,可以進(jìn)入視頻詳情界面,點(diǎn)擊視頻排行榜中的某個(gè)視頻,可以進(jìn)入視頻詳情界面,此頁(yè)面展示了視頻的基本信息和視頻詳細(xì)歷史數(shù)據(jù)的折線圖,如圖6所示。

3.5 網(wǎng)絡(luò)數(shù)據(jù)爬蟲管理模塊

爬蟲管理模塊主要是對(duì)后臺(tái)的爬蟲狀態(tài)進(jìn)行管理,也可以控制爬蟲的狀態(tài)。爬蟲管理界面展示了當(dāng)前系統(tǒng)爬蟲總個(gè)數(shù)、爬蟲執(zhí)行任務(wù)的次數(shù)、正在運(yùn)行的爬蟲個(gè)數(shù),也可以通過按鈕實(shí)現(xiàn)爬蟲的開關(guān),點(diǎn)擊爬蟲列表頁(yè)面,可以看到爬蟲每一次執(zhí)行任務(wù)的記錄,包含爬蟲的名稱,爬蟲當(dāng)前狀態(tài),爬蟲描述,爬取消耗的時(shí)間等信息。點(diǎn)擊導(dǎo)航欄上的任務(wù)圖表,進(jìn)入爬蟲任務(wù)信息圖中,通過折線圖展示爬蟲每小時(shí)完成的任務(wù)、耗費(fèi)的時(shí)間以及正在執(zhí)行的任務(wù),如圖7所示。

4 結(jié)束語(yǔ)

網(wǎng)絡(luò)數(shù)據(jù)爬取及展現(xiàn)系統(tǒng)是基于Java語(yǔ)言開發(fā),在IntelliJ IDEA 2019.2版本基礎(chǔ)上實(shí)現(xiàn)的,依托Tomcat作為WEB服務(wù)器,以MySQL作為后臺(tái)數(shù)據(jù)庫(kù)進(jìn)行數(shù)據(jù)存儲(chǔ)。爬蟲在爬取到數(shù)據(jù)以后直接存儲(chǔ)到MySQL數(shù)據(jù)庫(kù)中,之后再使用定時(shí)任務(wù)每天對(duì)數(shù)據(jù)進(jìn)行相關(guān)處理,處理完畢以后把數(shù)據(jù)再次保存新的存儲(chǔ)庫(kù)表中。對(duì)于熱點(diǎn)數(shù)據(jù)或者經(jīng)常需要爬取的數(shù)據(jù)URL,直接存儲(chǔ)到Redis數(shù)據(jù)庫(kù)中,以提高數(shù)據(jù)處理的效率。系統(tǒng)運(yùn)行穩(wěn)定,界面美觀大方,具有較好的實(shí)用性。

猜你喜歡
可視化數(shù)據(jù)庫(kù)用戶
基于CiteSpace的足三里穴研究可視化分析
基于Power BI的油田注水運(yùn)行動(dòng)態(tài)分析與可視化展示
云南化工(2021年8期)2021-12-21 06:37:54
基于CGAL和OpenGL的海底地形三維可視化
“融評(píng)”:黨媒評(píng)論的可視化創(chuàng)新
數(shù)據(jù)庫(kù)
關(guān)注用戶
商用汽車(2016年11期)2016-12-19 01:20:16
關(guān)注用戶
商用汽車(2016年6期)2016-06-29 09:18:54
數(shù)據(jù)庫(kù)
關(guān)注用戶
商用汽車(2016年4期)2016-05-09 01:23:12
數(shù)據(jù)庫(kù)
主站蜘蛛池模板: 免费aa毛片| 久久激情影院| 人妻精品全国免费视频| 亚亚洲乱码一二三四区| 黄色一及毛片| 亚洲日韩精品综合在线一区二区 | 亚洲精品视频免费观看| 99久久精品国产自免费| 久久国产V一级毛多内射| 中文字幕va| 91在线无码精品秘九色APP| 国产精品亚洲片在线va| 午夜老司机永久免费看片| 亚洲人成色在线观看| 日韩小视频网站hq| 久久久波多野结衣av一区二区| 国产精品jizz在线观看软件| 国产精品乱偷免费视频| 97超爽成人免费视频在线播放| 精品久久人人爽人人玩人人妻| 国产一区二区三区精品欧美日韩| 久久毛片免费基地| 狠狠久久综合伊人不卡| 麻豆精品国产自产在线| 99久久精品国产精品亚洲| 9久久伊人精品综合| 亚洲天堂网站在线| 在线视频精品一区| 国产在线97| 久久精品人人做人人| 中文字幕免费在线视频| 亚洲一区网站| 国产精品久久久久久影院| 91精品福利自产拍在线观看| 99九九成人免费视频精品 | 亚洲成a人片在线观看88| 亚洲国产成人麻豆精品| 国产精品区网红主播在线观看| 亚洲色无码专线精品观看| 亚洲乱伦视频| 国产香蕉一区二区在线网站| 亚洲欧美日韩另类在线一| 日韩区欧美国产区在线观看| 欧美亚洲第一页| 在线看片中文字幕| 精品国产中文一级毛片在线看| 福利在线不卡| 亚洲国产日韩在线成人蜜芽 | 久久久久久国产精品mv| 国语少妇高潮| 在线免费不卡视频| 中文字幕人成乱码熟女免费| 亚洲区第一页| 福利片91| 一级片一区| 无码不卡的中文字幕视频| 免费一级毛片在线播放傲雪网| 色偷偷综合网| 麻豆精选在线| 中国丰满人妻无码束缚啪啪| 亚洲 欧美 偷自乱 图片 | 毛片一级在线| 一级毛片免费观看不卡视频| 亚洲色图欧美一区| 久久福利片| 91av成人日本不卡三区| 五月婷婷导航| 成人免费视频一区| …亚洲 欧洲 另类 春色| 成年人久久黄色网站| 高清无码手机在线观看| 久久久精品久久久久三级| 99热国产这里只有精品9九| 亚洲精品片911| 欧美激情第一欧美在线| 国产视频a| 亚洲精品福利视频| 久久熟女AV| 国产在线观看高清不卡| 亚洲天堂在线免费| 久草国产在线观看| 中文字幕无码电影|