阮 陽,劉 禹,韓港成,康曉鳳
(徐州工程學院信電工程學院,江蘇 徐州 221000)
隨著互聯(lián)網(wǎng)技術的發(fā)展與推廣,數(shù)據(jù)呈現(xiàn)幾何式增長,針對特定數(shù)據(jù)的搜索變的尤為困難,本課題就是為了解決這一問題而設計開發(fā)的一個基于爬蟲的定向數(shù)據(jù)檢索系統(tǒng),該系統(tǒng)利用網(wǎng)絡爬蟲、數(shù)據(jù)庫和HTML等技術實現(xiàn)了針對所需數(shù)據(jù)在特定網(wǎng)站進行定向搜索,縮小了搜索范圍,使得結果更加精確,使用該系統(tǒng)可以在網(wǎng)頁端對數(shù)據(jù)進行精確匹配,以及統(tǒng)計、分析等功能。
系統(tǒng)根據(jù)需求共分為三層實現(xiàn)。第一層為數(shù)據(jù)控制層,包括數(shù)據(jù)庫初始化模塊和數(shù)據(jù)操作模塊,第二層為業(yè)務邏輯層,包括數(shù)據(jù)收集模塊,數(shù)據(jù)分析模塊,第三層為視圖層,包括主界面模塊和管理界面模塊。具體如圖1所示。
軟件系統(tǒng)分為三部分完成,用戶層應用程序,采用 C#語言實現(xiàn);數(shù)據(jù)存儲部分使用 SQL Server數(shù)據(jù)庫,爬蟲部分采用Python開發(fā)。本系統(tǒng)提供了良好的圖形界面,通過對數(shù)據(jù)的挖掘和分析,將數(shù)據(jù)更好的呈現(xiàn)在用戶面前。
圖1 系統(tǒng)層次結構圖Fig.1 Sy stem Hierarchy diagram
該系統(tǒng)主要通過爬蟲搜索數(shù)據(jù),網(wǎng)絡爬蟲在信息檢索與處理中有很大的作用,是收集網(wǎng)絡信息的重要工具。網(wǎng)絡爬蟲的基本工作流程如下[1]:
(1)首先選取一部分種子URL;
(2)將這些URL放入待抓取URL隊列;
(3)從待抓取URL隊列中取出待抓取在URL,獲取數(shù)據(jù)并存入數(shù)據(jù)庫并將這些 URL放進已抓取URL隊列。
(4)分析已抓取URL隊列中的URL,分析其中的其他URL,并且將URL放入待抓取URL隊列,從而進入下一個循環(huán)。
爬蟲的工作流程如圖2所示。通過適當?shù)牟呗砸猿跏糢RL為基礎爬取數(shù)據(jù),再通過分析過濾出有效數(shù)據(jù)。
圖2 爬蟲的工作原理示意圖Fig.2 Sketch of the working principle of the crawler
在本系統(tǒng)中,在爬蟲的基礎上增加廣度優(yōu)先算法[2],廣度優(yōu)先算法[3],是搜索算法的一種。是沿著樹的深度遍歷樹的節(jié)點,盡可能深的搜索樹的分支。當節(jié)點的所有邊都己被探尋過,搜索將回溯到發(fā)現(xiàn)節(jié)點的那條邊的起始節(jié)點。這一過程一直進行到已發(fā)現(xiàn)從源節(jié)點可達的所有節(jié)點為止。如果還存在未被發(fā)現(xiàn)的節(jié)點,則選擇其中一個作為源節(jié)點并重復以上過程,整個進程反復進行直到所有節(jié)點都被訪問為止。
在實際開發(fā)過程中,考慮到爬取數(shù)據(jù)的效率,本系統(tǒng)使用了多線程的方法,并且考慮到大多數(shù)網(wǎng)站對于爬蟲的數(shù)據(jù)抓取會存在反爬手段,所以在爬取過程中限制了每次抓取的時間間隔[4]。
2.2.1 數(shù)據(jù)總覽模塊
該模塊位于視圖層,針對系統(tǒng)所需要的功能,[5]通過爬蟲將所需要的數(shù)據(jù)保存到數(shù)據(jù)庫之后,通過網(wǎng)頁前端對數(shù)據(jù)庫進行查詢,然后將數(shù)據(jù)展現(xiàn)出來。
通過網(wǎng)頁前端將內容呈現(xiàn),如圖3所示。
用戶可以通過此頁面對網(wǎng)站進行大致的了解,并可以通過查看按鈕對網(wǎng)頁原貌進行查看;通過操作按鈕可以將對應的數(shù)據(jù)從數(shù)據(jù)庫刪除。
2.2.2 數(shù)據(jù)分析模塊
該模塊包含以下功能:
(1)數(shù)據(jù)的精確檢索匹配
用戶通過網(wǎng)站輸入想要查詢的字符串[6],可以對數(shù)據(jù)庫中保存的感興趣的數(shù)據(jù)進行查詢,以獲取詳細的信息,具體內容如圖4所示。
用戶可以通過這個模塊針對自己感興趣的某一個或多個關鍵詞在網(wǎng)站內進行精確檢索。
(2)根據(jù)網(wǎng)站詞匯繪制詞云圖
該功能主要利用Python自帶的jieba、wordcloud庫,通過抓取網(wǎng)站內的大部分內容,然后通過jieba庫對內容進行分詞,再利用 wordcloud庫針對提取出來的關鍵詞結合網(wǎng)站的logo或其他圖案制作相應的詞云圖。通過詞云圖,用戶可以比較方便地了解網(wǎng)站的整體內容[7]。
2.2.3 用戶管理模塊
本模塊主要是為了存儲及管理用戶和管理員的信息,其中登錄和修改密碼的界面如下圖5所示。
管理員可以通過此模塊管理網(wǎng)站的使用用戶[8-10],包括調整普通用戶的權限;用戶可以通過此模塊修改自己的密碼和個人信息。
圖3 數(shù)據(jù)總覽圖Fig.3 Overview of the data
圖4 數(shù)據(jù)檢索圖Fig.4 Data retrieval diagram
圖5 修改密碼界面圖Fig.5 Modifying the Password interface diagram
本系統(tǒng)利用C#開發(fā)實現(xiàn),系統(tǒng)主要通過爬蟲不斷搜索數(shù)據(jù),更新數(shù)據(jù)庫內容,前期盡可能多的收集各種數(shù)據(jù),這樣才能在分析、呈現(xiàn)數(shù)據(jù)時更加準確。
通過對大量數(shù)據(jù)的整理、統(tǒng)計以及分析,將結果呈現(xiàn)給用戶。在分析的基礎上針對特定數(shù)據(jù)進行一定的分析、預測,使用戶能夠直觀、生動的了解到信息的變化趨勢。
[1] 黃宇龍. 網(wǎng)絡爬蟲的有關算法[J]. 中國新通信, 2017,19(23): 47-48.
[2] 劉志杰. 主題網(wǎng)絡爬蟲搜索策略及主題判別方法研究[D].武漢工程大學, 2017.
[3] 劉清. 主題網(wǎng)絡爬蟲抓取策略的研究[J]. 科技廣場,2017(4): 43-46.
[4] 何勝, 馮新翎, 武群輝, 熊太純, 李仁璞. 基于用戶行為建模和大數(shù)據(jù)挖掘的圖書館個性化服務研究[J]. 圖書情報工作, 2017, 61(1): 40-46.
[5] 薛麗敏, 吳琦, 李駿. 面向專用信息獲取的用戶定制主題網(wǎng)絡爬蟲技術研究[J]. 信息網(wǎng)絡安全, 2017(2): 12-21.
[6] 姜杉彪, 黃凱林, 盧昱江, 張俊杰, 曾志高, 劉強. 基于Python的專業(yè)網(wǎng)絡爬蟲的設計與實現(xiàn)[J]. 企業(yè)科技與發(fā)展,2016(08): 17-19.
[7] 盛亞如, 魏振鋼, 劉蒙. 基于主題網(wǎng)絡爬蟲的信息數(shù)據(jù)采集方法的研究與應用[J]. 電子技術與軟件工程, 2016(7):168-169.
[8] 李應. 基于Hadoop的分布式主題網(wǎng)絡爬蟲研究[J]. 軟件導刊, 2016, 15(3): 24-26.
[9] 廉捷, 周欣, 曹偉, 劉云. 新浪微博數(shù)據(jù)挖掘方案[J]. 清華大學學報(自然科學版), 2011, 51(10): 1300-1305.
[10] 周立柱, 林玲. 聚焦爬蟲技術研究綜述[J]. 計算機應用,2005(9): 1965-1969.