阮 陽,劉 禹,韓港成,康曉鳳
(徐州工程學院信電工程學院,江蘇 徐州 221000)
隨著互聯網技術的發展與推廣,數據呈現幾何式增長,針對特定數據的搜索變的尤為困難,本課題就是為了解決這一問題而設計開發的一個基于爬蟲的定向數據檢索系統,該系統利用網絡爬蟲、數據庫和HTML等技術實現了針對所需數據在特定網站進行定向搜索,縮小了搜索范圍,使得結果更加精確,使用該系統可以在網頁端對數據進行精確匹配,以及統計、分析等功能。
系統根據需求共分為三層實現。第一層為數據控制層,包括數據庫初始化模塊和數據操作模塊,第二層為業務邏輯層,包括數據收集模塊,數據分析模塊,第三層為視圖層,包括主界面模塊和管理界面模塊。具體如圖1所示。
軟件系統分為三部分完成,用戶層應用程序,采用 C#語言實現;數據存儲部分使用 SQL Server數據庫,爬蟲部分采用Python開發。本系統提供了良好的圖形界面,通過對數據的挖掘和分析,將數據更好的呈現在用戶面前。

圖1 系統層次結構圖Fig.1 Sy stem Hierarchy diagram
該系統主要通過爬蟲搜索數據,網絡爬蟲在信息檢索與處理中有很大的作用,是收集網絡信息的重要工具。網絡爬蟲的基本工作流程如下[1]:
(1)首先選取一部分種子URL;
(2)將這些URL放入待抓取URL隊列;
(3)從待抓取URL隊列中取出待抓取在URL,獲取數據并存入數據庫并將這些 URL放進已抓取URL隊列。
(4)分析已抓取URL隊列中的URL,分析其中的其他URL,并且將URL放入待抓取URL隊列,從而進入下一個循環。
爬蟲的工作流程如圖2所示。通過適當的策略以初始URL為基礎爬取數據,再通過分析過濾出有效數據。

圖2 爬蟲的工作原理示意圖Fig.2 Sketch of the working principle of the crawler
在本系統中,在爬蟲的基礎上增加廣度優先算法[2],廣度優先算法[3],是搜索算法的一種。是沿著樹的深度遍歷樹的節點,盡可能深的搜索樹的分支。當節點的所有邊都己被探尋過,搜索將回溯到發現節點的那條邊的起始節點。這一過程一直進行到已發現從源節點可達的所有節點為止。如果還存在未被發現的節點,則選擇其中一個作為源節點并重復以上過程,整個進程反復進行直到所有節點都被訪問為止。
在實際開發過程中,考慮到爬取數據的效率,本系統使用了多線程的方法,并且考慮到大多數網站對于爬蟲的數據抓取會存在反爬手段,所以在爬取過程中限制了每次抓取的時間間隔[4]。
2.2.1 數據總覽模塊
該模塊位于視圖層,針對系統所需要的功能,[5]通過爬蟲將所需要的數據保存到數據庫之后,通過網頁前端對數據庫進行查詢,然后將數據展現出來。
通過網頁前端將內容呈現,如圖3所示。
用戶可以通過此頁面對網站進行大致的了解,并可以通過查看按鈕對網頁原貌進行查看;通過操作按鈕可以將對應的數據從數據庫刪除。
2.2.2 數據分析模塊
該模塊包含以下功能:
(1)數據的精確檢索匹配
用戶通過網站輸入想要查詢的字符串[6],可以對數據庫中保存的感興趣的數據進行查詢,以獲取詳細的信息,具體內容如圖4所示。
用戶可以通過這個模塊針對自己感興趣的某一個或多個關鍵詞在網站內進行精確檢索。
(2)根據網站詞匯繪制詞云圖
該功能主要利用Python自帶的jieba、wordcloud庫,通過抓取網站內的大部分內容,然后通過jieba庫對內容進行分詞,再利用 wordcloud庫針對提取出來的關鍵詞結合網站的logo或其他圖案制作相應的詞云圖。通過詞云圖,用戶可以比較方便地了解網站的整體內容[7]。
2.2.3 用戶管理模塊
本模塊主要是為了存儲及管理用戶和管理員的信息,其中登錄和修改密碼的界面如下圖5所示。
管理員可以通過此模塊管理網站的使用用戶[8-10],包括調整普通用戶的權限;用戶可以通過此模塊修改自己的密碼和個人信息。

圖3 數據總覽圖Fig.3 Overview of the data

圖4 數據檢索圖Fig.4 Data retrieval diagram

圖5 修改密碼界面圖Fig.5 Modifying the Password interface diagram
本系統利用C#開發實現,系統主要通過爬蟲不斷搜索數據,更新數據庫內容,前期盡可能多的收集各種數據,這樣才能在分析、呈現數據時更加準確。
通過對大量數據的整理、統計以及分析,將結果呈現給用戶。在分析的基礎上針對特定數據進行一定的分析、預測,使用戶能夠直觀、生動的了解到信息的變化趨勢。
[1] 黃宇龍. 網絡爬蟲的有關算法[J]. 中國新通信, 2017,19(23): 47-48.
[2] 劉志杰. 主題網絡爬蟲搜索策略及主題判別方法研究[D].武漢工程大學, 2017.
[3] 劉清. 主題網絡爬蟲抓取策略的研究[J]. 科技廣場,2017(4): 43-46.
[4] 何勝, 馮新翎, 武群輝, 熊太純, 李仁璞. 基于用戶行為建模和大數據挖掘的圖書館個性化服務研究[J]. 圖書情報工作, 2017, 61(1): 40-46.
[5] 薛麗敏, 吳琦, 李駿. 面向專用信息獲取的用戶定制主題網絡爬蟲技術研究[J]. 信息網絡安全, 2017(2): 12-21.
[6] 姜杉彪, 黃凱林, 盧昱江, 張俊杰, 曾志高, 劉強. 基于Python的專業網絡爬蟲的設計與實現[J]. 企業科技與發展,2016(08): 17-19.
[7] 盛亞如, 魏振鋼, 劉蒙. 基于主題網絡爬蟲的信息數據采集方法的研究與應用[J]. 電子技術與軟件工程, 2016(7):168-169.
[8] 李應. 基于Hadoop的分布式主題網絡爬蟲研究[J]. 軟件導刊, 2016, 15(3): 24-26.
[9] 廉捷, 周欣, 曹偉, 劉云. 新浪微博數據挖掘方案[J]. 清華大學學報(自然科學版), 2011, 51(10): 1300-1305.
[10] 周立柱, 林玲. 聚焦爬蟲技術研究綜述[J]. 計算機應用,2005(9): 1965-1969.