新聞爬蟲系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)畢業(yè)論文_第1頁(yè)
已閱讀1頁(yè),還剩74頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、<p><b>  摘要</b></p><p>  隨著網(wǎng)絡(luò)在世界范圍的飛速發(fā)展,互聯(lián)網(wǎng)作為最具潛力與活力的媒體已經(jīng)被公認(rèn)是繼報(bào)紙,廣播,電視之后的“第四媒體”,成為反映社會(huì)新聞熱點(diǎn)的重要載體。為了及時(shí)了解網(wǎng)絡(luò)新聞熱點(diǎn),相關(guān)機(jī)構(gòu)引入了新聞熱點(diǎn)分析系統(tǒng)。本文設(shè)計(jì)的新聞爬蟲系統(tǒng)是新聞熱點(diǎn)分析系統(tǒng)的數(shù)據(jù)源,負(fù)責(zé)新聞信息的采集。</p><p>  本文借助于爬蟲

2、領(lǐng)域的相關(guān)技術(shù)與工具,結(jié)合新聞熱點(diǎn)分析系統(tǒng)的需求從原理或工作流程上詳細(xì)論述了爬蟲系統(tǒng)中核心模塊的具體實(shí)現(xiàn)。</p><p>  本文所描述的新聞爬蟲系統(tǒng)其數(shù)據(jù)來(lái)源主要是新浪新聞,首先利用爬蟲工具將新聞數(shù)據(jù)獲取到本地?cái)?shù)據(jù)庫(kù)中,然后將新聞信息以及新聞分析的結(jié)果將在前臺(tái)網(wǎng)頁(yè)中進(jìn)行可視化輸出。本文主要進(jìn)行了以下幾個(gè)方面的工作:

3、 </p><p>  1)利用Java語(yǔ)言結(jié)合HTTPClient開源工具編寫了一個(gè)針對(duì)新浪新聞的可擴(kuò)展的網(wǎng)絡(luò)爬蟲,該爬蟲程序能夠按照廣度優(yōu)先的爬行策略對(duì)新聞數(shù)據(jù)(包括圖片信息)進(jìn)行全面的定向抓取以及周期性的增量抓?。?lt;/p><p>  2)采用HTMLParser對(duì)獲取到的新聞信息進(jìn)行元數(shù)據(jù)抽取,將新聞的編號(hào)、標(biāo)題、內(nèi)容、發(fā)布方、發(fā)布時(shí)間等元數(shù)據(jù)以及新聞圖片等元數(shù)據(jù)解

4、析出來(lái)并存入SQL Server數(shù)據(jù)庫(kù)中;</p><p>  3)前端界面利用開源AJAX框架ExtJS結(jié)合Servlet進(jìn)行實(shí)現(xiàn),兼顧用戶交互方式的多樣性以及系統(tǒng)的跨瀏覽器兼容性。</p><p>  通過(guò)使用該新聞爬取系統(tǒng),用戶能夠?qū)崟r(shí)的更新新聞信息,及時(shí)、全面、準(zhǔn)確地掌握新聞熱點(diǎn)動(dòng)態(tài),提高對(duì)于重大突發(fā)事件的處理能力,對(duì)于更及時(shí),全面的了解各地的實(shí)時(shí)信息具有重要意義。</p&g

5、t;<p>  關(guān)鍵詞:新聞熱點(diǎn),網(wǎng)絡(luò)爬蟲,元數(shù)據(jù)抽取,可視化</p><p><b>  ABSTRACT</b></p><p>  With the rapid development of World Wide Web(WWW),it is widely</p><p>  accepted that the intern

6、et,called the Fourth Media,will be the most potential</p><p>  and energetic media after newspaper,radio and television as an important carrier of the hot society news.In order to know the internet hot news

7、in time,the related organizations introduced the hot news and analysis system. The news spider system is in the information collection layer and is the fundamental part of hot news analysis system.It is responsible for t

8、he information collection .</p><p>  In the help of related technologies and tools and with the needs of the system itself ,the paper discuss the concrete realization of the code module in detail .</p>

9、;<p>  The data of the news spider system comes from news of sina . First using web crawler to get data from news to local database , finally visualize the public opinion information on the front page. This articl

10、e mainly has carried on the following several aspects work: </p><p>  1) Using Java and HTTPClient developed a scalable web crawler which focus on DISC

11、UZ BBS. Besides, this crawler can conduct a comprehensive orientation of fetching and periodic increment of fetching from BBS data (including the BBS post information and all its replies) under breadth-first strategy.

12、</p><p>  2)Using HTMLParser to extract meta-data from the BBS information, parsed and stored the meta-data, such as number, title, content, poster, posting time and the corresponding reply in a SQL Server d

13、atabase.</p><p>  3) front-end interface combined with the use of open source AJAX framework ExtJS Servlet be achieved, taking into account the diversity of user interaction and system cross-browser compatib

14、ility.</p><p>  By using this news crawling system, users can real-time news and information updated, timely, comprehensive and accurate grasp of hot news developments, improve the handling capacity of major

15、 emergencies, for more timely and comprehensive understanding of an important real-time information across significance.</p><p>  Key Words: Hot news,Web crawler,Metadata extraction,Visualization</p>

16、<p><b>  目錄</b></p><p><b>  1 緒論1</b></p><p>  1.1 開發(fā)背景及目的1</p><p>  1.2 國(guó)內(nèi)外相關(guān)研究現(xiàn)狀3</p><p>  1.3 論文主要內(nèi)容和章節(jié)安排4</p><p>  2 系

17、統(tǒng)開發(fā)知識(shí)準(zhǔn)備6</p><p>  2.2 J2EE技術(shù)簡(jiǎn)介7</p><p>  2.3 SQL Server 2005簡(jiǎn)介8</p><p>  2.4 ExtJS簡(jiǎn)介10</p><p>  2.5開源工具簡(jiǎn)介12</p><p>  2.5本章小結(jié)13</p><p>  

18、3 系統(tǒng)需求分析14</p><p>  3.1 系統(tǒng)可行性研究14</p><p>  3.2 用戶對(duì)象分析15</p><p>  3.3 用戶用例分析16</p><p>  3.4 功能需求分析20</p><p>  3.5 性能需求分析21</p><p>  3.6 本

19、章小結(jié)21</p><p>  4 系統(tǒng)總體設(shè)計(jì)23</p><p>  4.1 數(shù)據(jù)庫(kù)結(jié)構(gòu)設(shè)計(jì)23</p><p>  4.2 系統(tǒng)功能模塊設(shè)計(jì)25</p><p>  4.3 本章小結(jié)31</p><p>  5 系統(tǒng)詳細(xì)設(shè)計(jì)與實(shí)現(xiàn)32</p><p>  5.1 數(shù)據(jù)獲取模塊

20、32</p><p>  5.2 數(shù)據(jù)可視化模塊36</p><p>  5.3 本章小結(jié)43</p><p>  6 系統(tǒng)測(cè)試與發(fā)布44</p><p>  6.1 軟件測(cè)試的目標(biāo)和方法44</p><p>  6.2 測(cè)試用例45</p><p>  6.3 本章小結(jié)49<

21、/p><p><b>  7 總結(jié)50</b></p><p><b>  參考文獻(xiàn)52</b></p><p><b>  8 致謝詞53</b></p><p>  附錄1 英文原文54</p><p>  附錄2 中文譯文64</p&g

22、t;<p><b>  1 緒論 </b></p><p>  本章主要闡明了該課題的研究背景及其研究意義,簡(jiǎn)要說(shuō)明了國(guó)內(nèi)外對(duì)于爬蟲系統(tǒng)的研究現(xiàn)狀,并介紹了本論文的主要內(nèi)容組成以及論文的組織結(jié)構(gòu)。</p><p>  1.1 開發(fā)背景及目的</p><p>  隨著互聯(lián)網(wǎng)技術(shù)的發(fā)展與應(yīng)用的普及,網(wǎng)絡(luò)作為信息的載體,已經(jīng)成為社會(huì)大眾

23、參與社會(huì)生活的一種重要信息渠道。由于互聯(lián)網(wǎng)是開放的,每個(gè)人都可以在網(wǎng)絡(luò)上發(fā)表信息,內(nèi)容涉及各個(gè)方面。小到心情日志,大到國(guó)家大事?;ヂ?lián)網(wǎng)已成為思想文化信息的集散地,并具有傳統(tǒng)媒體無(wú)法相比的優(yōu)勢(shì):便捷性,虛擬性,互動(dòng)性,多元性。</p><p>  網(wǎng)絡(luò)新聞熱點(diǎn)通常形成迅速,多是人們對(duì)于日常生活中的各種問(wèn)題發(fā)表的各種意見,評(píng)論,態(tài)度,情緒等,隨著事件的發(fā)展而變化,是反映社會(huì)熱點(diǎn)的重要載體之一。</p>

24、<p>  網(wǎng)絡(luò)爬蟲是一種按照一定上網(wǎng)規(guī)則,自動(dòng)的抓取萬(wàn)維網(wǎng)信息的程序或腳本。網(wǎng)絡(luò)檢索功能起于互聯(lián)網(wǎng)內(nèi)容爆炸性發(fā)展所帶來(lái)的對(duì)內(nèi)容檢索的需求。搜素引擎不斷發(fā)展,人們的需求也不斷提高,網(wǎng)絡(luò)信息搜索已經(jīng)成為人們每天都有進(jìn)行的內(nèi)容。如何使搜索引擎能夠時(shí)刻滿足人們的需求?最初的檢索功能通過(guò)索引站的方式實(shí)現(xiàn),從而有了網(wǎng)絡(luò)機(jī)器人。本課題來(lái)源于新聞爬蟲系統(tǒng)項(xiàng)目的建設(shè),旨在為相關(guān)機(jī)構(gòu)提供及時(shí)的網(wǎng)絡(luò)信息服務(wù)。這些服務(wù)與現(xiàn)有的搜索引擎提供的服務(wù)不同

25、,其重要特征主要體現(xiàn)在:及時(shí)性,專用性,人性化。</p><p><b>  及時(shí)性</b></p><p>  新聞爬蟲系統(tǒng)通過(guò)爬蟲技術(shù)自動(dòng)爬取新聞信息,定期對(duì)相應(yīng)類型的新聞的地址進(jìn)行掃描,如若該新聞并未被爬取過(guò)則對(duì)其進(jìn)行自動(dòng)爬取。讓系統(tǒng)的工作人員可以靜觀事態(tài)的發(fā)展。</p><p><b>  專用性</b></

26、p><p>  新聞爬蟲系統(tǒng)的專用性體現(xiàn)在數(shù)據(jù)采集,數(shù)據(jù)分析,數(shù)據(jù)展現(xiàn)等幾個(gè)環(huán)節(jié)上。在數(shù)據(jù)采集方面系統(tǒng)采用手動(dòng)爬取與增量爬取相結(jié)合的方式。有針對(duì)性的采集需要的幾個(gè)類別的新聞信息,并對(duì)信息進(jìn)行抽取,去噪,結(jié)構(gòu)化處理,為后續(xù)專用分析創(chuàng)造條件。在數(shù)據(jù)分析與數(shù)據(jù)展示方面,系統(tǒng)通過(guò)對(duì)得到的信息進(jìn)行深入的分析,將分析結(jié)果進(jìn)行多維度的展現(xiàn)。</p><p><b>  人性化</b>&

27、lt;/p><p>  新聞爬蟲系統(tǒng)的人性化主要體現(xiàn)在數(shù)據(jù)結(jié)果的展示上。 用戶可以隨時(shí)查看任意一個(gè)時(shí)間的新聞分析結(jié)果,而且該系統(tǒng)由于是基于多線程的程序完成任務(wù)的效率高。所以不管實(shí)在界面上還是在效率上都非常的人性化。</p><p>  新聞爬蟲系統(tǒng)項(xiàng)目建設(shè)意義重大。一方面,新聞爬蟲系統(tǒng)提供了大量的分析素材,方便全面的了解大眾網(wǎng)絡(luò)新聞的熱點(diǎn)。另一方面,原來(lái)的新聞信息收集工作主要依靠人工完成,工作

28、量巨大,覆蓋面小,不僅費(fèi)時(shí)費(fèi)力而且還不免出現(xiàn)人為疏漏的情況,這種局面亟待通過(guò)技術(shù)手段提高工作效率。</p><p>  本文完成的是新聞爬蟲系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn),該爬蟲系統(tǒng)為新聞分析系統(tǒng)提供數(shù)據(jù)源,完成新聞信息的搜集。因此可以說(shuō)爬蟲系統(tǒng)是整個(gè)分析系統(tǒng)的基礎(chǔ),并且爬蟲系統(tǒng)輸出結(jié)果的好壞直接影響著系統(tǒng)結(jié)果的展現(xiàn)。 </p><p>  1.2 國(guó)內(nèi)外相關(guān)研究現(xiàn)狀</p><p&

29、gt;  1.2.1 網(wǎng)絡(luò)爬蟲</p><p>  從搜索對(duì)象上來(lái)分類,主流的的爬蟲技術(shù)包括以下兩種:</p><p>  第一種是基于鏈接分析的搜索。上世紀(jì)九十年代,國(guó)外的搜索引擎開發(fā)者已經(jīng)開始以社會(huì)網(wǎng)絡(luò)工作為模型,對(duì)萬(wàn)維網(wǎng)進(jìn)行模擬。專家們通過(guò)社會(huì)間人與人的關(guān)系網(wǎng),設(shè)計(jì)研發(fā)出了頁(yè)面間的超鏈接關(guān)系網(wǎng)絡(luò)。同時(shí)他們還驚奇的發(fā)現(xiàn),相似度最高的在傳統(tǒng)引文方面。這樣通過(guò)對(duì)照就可以分析得出結(jié)論,從關(guān)系

30、網(wǎng)絡(luò)的角度入手,就能將互聯(lián)網(wǎng)上大量的網(wǎng)頁(yè)進(jìn)行分類。早在2002年,歐美地區(qū)便出現(xiàn)了這種最原始的基于鏈接的搜索系統(tǒng)。</p><p>  第二種是基于內(nèi)容分析的搜索。相對(duì)于基于鏈接分析的搜索方式,這是搜索技術(shù)的一個(gè)突破性進(jìn)展,他們采取了一種新的思維方式,建立一個(gè)針對(duì)主題的詞庫(kù)。當(dāng)用戶在專業(yè)領(lǐng)域進(jìn)行搜索時(shí),可以將詞庫(kù)和爬蟲結(jié)合起來(lái)進(jìn)行檢索。由于搜索角度的轉(zhuǎn)變,這種新的技術(shù)逐漸開始被人們所關(guān)注。在上世紀(jì)九十年代,F(xiàn)is

31、h Search System系統(tǒng)作為首個(gè)基于內(nèi)容分析的搜索系統(tǒng)被開發(fā)出來(lái)。后來(lái)在1998年和1999年相繼出現(xiàn)了Shark Search System和聚焦爬蟲(Focused Crawler)[1]。</p><p>  時(shí)至今日,聚焦爬蟲技術(shù)取得了長(zhǎng)足的發(fā)展和進(jìn)步,國(guó)外典型的系統(tǒng)包括CORA、IBM Focused Crawler等。CORA 是由美國(guó)卡內(nèi)基梅隆大學(xué)的A.K.McCallum和M.Nigam

32、等人于1999年針對(duì)計(jì)算機(jī)科學(xué)設(shè)計(jì)的一個(gè)主題型搜索引擎。CORA采用機(jī)械認(rèn)知的方式,其主要針對(duì)的對(duì)象是與計(jì)算機(jī)主題相關(guān)聯(lián)的內(nèi)容,通過(guò)隱性馬爾夫的原理對(duì)用戶需要的內(nèi)容進(jìn)行分類。雖然CORA分析地址和主題的能力還很不足,同時(shí)也不具備對(duì)網(wǎng)頁(yè)進(jìn)行分析的能力,但是這仍然無(wú)法抹殺它在自動(dòng)搜集資源方面取得的重大成就。 </p><p>  S.Chakrabarti在本世紀(jì)初提出了IBM Focused Cra

33、wler,這是一種全新的爬行系統(tǒng)。從現(xiàn)在的技術(shù)來(lái)看,當(dāng)時(shí)的IBM Focused Crawler采取了全新雙模塊系統(tǒng),即分類器和選擇器。分類器主要用于計(jì)算相關(guān)度,而選擇器用來(lái)確定主要頁(yè)面。S.Chakrabarti在隨后的開發(fā)過(guò)程中對(duì)整個(gè)系統(tǒng)進(jìn)行了進(jìn)一步的完善,使得該系統(tǒng)在準(zhǔn)確度和相關(guān)度方面有了大幅度的提升[2]。</p><p>  美國(guó)人Diligenti采取建立上下文圖的方式設(shè)計(jì)出了聚焦爬蟲,他們將其命名為

34、Context Graphs Focused Crawler。這種通過(guò)學(xué)習(xí)網(wǎng)頁(yè)引用關(guān)系的方法后來(lái)被證明效率并不高,但在當(dāng)時(shí)也是重要的創(chuàng)新手段。系統(tǒng)會(huì)利用反向鏈接服務(wù)找到指向該頁(yè)面的網(wǎng)頁(yè),在這兩層網(wǎng)頁(yè)之間建立引用關(guān)系,由此建立聚焦爬蟲的爬行路徑。通過(guò)用戶搜索參數(shù)的改變,每一個(gè)頁(yè)面都會(huì)建立一個(gè)對(duì)應(yīng)的引用關(guān)系,最后將他們進(jìn)行合并。在這個(gè)過(guò)程中,分類器會(huì)確定他們的層級(jí)關(guān)系,確定之后,頁(yè)面的鏈接便會(huì)加入隊(duì)列,由此提取到所有需要進(jìn)行抓取的網(wǎng)頁(yè)[3]

35、。</p><p>  對(duì)于基于內(nèi)容分析的搜索,國(guó)人也做出了很大貢獻(xiàn)。張福炎教授設(shè)計(jì)出了IDGS(Internet Data Gather System)系統(tǒng),可以對(duì)萬(wàn)維網(wǎng)上的中英文內(nèi)容進(jìn)行搜索,大大的填補(bǔ)了中文方面的空白。IDGS 能夠在萬(wàn)維網(wǎng)上對(duì)信息進(jìn)行自動(dòng)查詢,采用向量空間模型技術(shù)對(duì)內(nèi)容進(jìn)行檢索,同時(shí)利用權(quán)重評(píng)價(jià)技術(shù)來(lái)進(jìn)行統(tǒng)計(jì)。在該系統(tǒng)中由模式匹配模塊計(jì)算相關(guān)度,采取漫游模型來(lái)進(jìn)行后期的持續(xù)檢索。該系統(tǒng)的最

36、大優(yōu)點(diǎn)是準(zhǔn)確度高,其代價(jià)是犧牲了覆蓋度,搜索的深度非常有限[4]。</p><p>  1.3 論文主要內(nèi)容和章節(jié)安排</p><p>  本文對(duì)于新聞爬蟲系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)過(guò)程作出了詳細(xì)介紹,該系統(tǒng)的數(shù)據(jù)來(lái)源主要是網(wǎng)絡(luò)網(wǎng)頁(yè)新聞。本系統(tǒng)的運(yùn)行流程大致如下:首先利用爬蟲工具將新聞數(shù)據(jù)獲取到本地?cái)?shù)據(jù)庫(kù)中,之后對(duì)其進(jìn)行數(shù)據(jù)分析,最后將新聞內(nèi)容信息以及分析結(jié)果在前臺(tái)網(wǎng)頁(yè)中進(jìn)行可視化輸出。</p

37、><p>  為緒論,主要闡明了該課題的研究背景及其研究意義,簡(jiǎn)要說(shuō)明了國(guó)內(nèi)外對(duì)于爬蟲系統(tǒng)的研究現(xiàn)狀,并介紹了本論文的主要內(nèi)容組成以及論文的組織結(jié)構(gòu)。</p><p>  為系統(tǒng)開發(fā)知識(shí)準(zhǔn)備,簡(jiǎn)要介紹了進(jìn)行本次新聞爬蟲系統(tǒng)開發(fā)所需要的相關(guān)理論和技術(shù),主要包括爬蟲技術(shù)的知識(shí)理論和J2EE技術(shù)、SQL Server 2005數(shù)據(jù)庫(kù)管理系統(tǒng)以及ExtJS框架等相關(guān)知識(shí),并對(duì)系統(tǒng)開發(fā)過(guò)程中用到的一些關(guān)

38、鍵開源工具做出了簡(jiǎn)要說(shuō)明。</p><p>  對(duì)本系統(tǒng)進(jìn)行了需求分析,首先從技術(shù)可行性、操作可行性和經(jīng)濟(jì)可行性三個(gè)方面對(duì)系統(tǒng)可行性進(jìn)行了評(píng)估,隨后對(duì)系統(tǒng)的用戶對(duì)象和用戶用況從管理員用戶和普通用戶兩個(gè)角度進(jìn)行了詳細(xì)的分析,并分別總結(jié)出了相應(yīng)的功能需求,最后對(duì)系統(tǒng)的性能需求進(jìn)行了簡(jiǎn)要分析。</p><p>  對(duì)本系統(tǒng)進(jìn)行了總體設(shè)計(jì),包括數(shù)據(jù)庫(kù)結(jié)構(gòu)的總體設(shè)計(jì)以及系統(tǒng)功能模塊的總體設(shè)計(jì),并對(duì)數(shù)

39、據(jù)獲取功能模塊的子模塊以及數(shù)據(jù)可視化功能模塊的功能結(jié)構(gòu)做出了明確的劃分,為系統(tǒng)詳細(xì)設(shè)計(jì)與實(shí)現(xiàn)階段的工作備好條件。</p><p>  對(duì)本系統(tǒng)的詳細(xì)設(shè)計(jì)和實(shí)現(xiàn)過(guò)程做出了說(shuō)明,進(jìn)行了功能模塊的詳細(xì)設(shè)計(jì)并完成了系統(tǒng)的開發(fā)實(shí)現(xiàn)工作,對(duì)于數(shù)據(jù)獲取模塊以及數(shù)據(jù)可視化模塊進(jìn)行了詳細(xì)的設(shè)計(jì)實(shí)現(xiàn)和功能說(shuō)明。</p><p>  進(jìn)行了系統(tǒng)測(cè)試和發(fā)布工作,首先從理論上對(duì)軟件測(cè)試的目標(biāo)和方法進(jìn)行了簡(jiǎn)要介紹,之

40、后設(shè)計(jì)了多個(gè)測(cè)試用例對(duì)系統(tǒng)的相關(guān)功能模塊進(jìn)行了詳細(xì)的測(cè)試并對(duì)測(cè)試結(jié)果進(jìn)行了分析,最后將本系統(tǒng)通過(guò)TOMCAT部署到了PC服務(wù)器上,完成了系統(tǒng)發(fā)布的過(guò)程。 </p><p>  對(duì)于本次系統(tǒng)設(shè)計(jì)開發(fā)過(guò)程進(jìn)行了歸納和總結(jié),闡述了本次系統(tǒng)開發(fā)的意義并分析了下一步需要進(jìn)行的工作,最后對(duì)網(wǎng)絡(luò)輿情分析系統(tǒng)的發(fā)展方向進(jìn)行了展望。</p><p>  2 系統(tǒng)開發(fā)知識(shí)準(zhǔn)備</p><

41、;p>  本章簡(jiǎn)要介紹了進(jìn)行本次新聞爬蟲系統(tǒng)開發(fā)所需要的相關(guān)理論和技術(shù),這些關(guān)鍵技術(shù)的學(xué)習(xí)和掌握為接下來(lái)的系統(tǒng)分析及設(shè)計(jì)實(shí)現(xiàn)提供了堅(jiān)實(shí)的理論基礎(chǔ)。</p><p>  2.1 網(wǎng)絡(luò)爬蟲的相關(guān)知識(shí)與理論</p><p>  2.1.1 網(wǎng)絡(luò)爬蟲的定義</p><p>  網(wǎng)絡(luò)爬蟲是一個(gè)自動(dòng)提取網(wǎng)頁(yè)的程序,它為搜索引擎從WEB上下載網(wǎng)頁(yè),是搜索引擎的重要組成部分。

42、通用網(wǎng)絡(luò)爬蟲從一個(gè)或幾個(gè)初始網(wǎng)頁(yè)的URL開始,獲得初始網(wǎng)頁(yè)上的URL列表;在抓取網(wǎng)頁(yè)的過(guò)程中不斷從當(dāng)前網(wǎng)頁(yè)上抽取新的URL放入到待爬行隊(duì)列,直到滿足系統(tǒng)的停止條件。</p><p>  2.1.2 頁(yè)面搜索策略介紹</p><p>  網(wǎng)頁(yè)的爬取策略可分為深度優(yōu)先,廣度優(yōu)先和最佳優(yōu)先三種。深度優(yōu)先在很多時(shí)候會(huì)導(dǎo)致爬蟲的陷入問(wèn)題,目前常見的是廣度優(yōu)先和最佳優(yōu)先方法。</p>&

43、lt;p>  廣度優(yōu)先策略是指在爬取過(guò)程中,在完成當(dāng)前層次的搜索后,才進(jìn)行下一層次的搜索。在目前為覆蓋盡可能多的網(wǎng)頁(yè),一般使用廣度優(yōu)先搜索算法。也有很多研究將廣度優(yōu)先算法應(yīng)用于聚焦爬蟲上。其基本思想是認(rèn)為與初始URL在一定鏈接距離內(nèi)的網(wǎng)頁(yè)具有主題相關(guān)性的概率很大。</p><p>  最佳優(yōu)先策略是按照一定的網(wǎng)頁(yè)分析算法,預(yù)測(cè)候選URL與目標(biāo)網(wǎng)頁(yè)的相似度,或與主題的相關(guān)性,并選評(píng)價(jià)最好的一個(gè)或幾個(gè)URL進(jìn)行

44、抓取。</p><p>  它只訪問(wèn)經(jīng)過(guò)網(wǎng)頁(yè)任意算法預(yù)測(cè)為“有用”的網(wǎng)頁(yè)。存在的一個(gè)問(wèn)題是,在爬蟲抓取路徑上的很多相關(guān)網(wǎng)頁(yè)可能被忽略。因?yàn)樽罴褍?yōu)先策略是一種局部最優(yōu)搜索算法。因此需要在應(yīng)用中對(duì)最佳優(yōu)先策略進(jìn)行改進(jìn),以跳出局部最優(yōu)點(diǎn)。</p><p>  2.2 J2EE技術(shù)簡(jiǎn)介</p><p>  J2EE指的是Java2平臺(tái)企業(yè)版(Java 2 Platform

45、, Enterprise Edition)。J2EE的核心是一組技術(shù)規(guī)范與指南,其中所包含的各類組件、服務(wù)架構(gòu)及技術(shù)層次,均有共同的標(biāo)準(zhǔn)及規(guī)格,讓各種依循J2EE架構(gòu)的不同平臺(tái)之間存在良好的兼容性,一方面解決了過(guò)去企業(yè)后端使用的信息產(chǎn)品彼此之間無(wú)法兼容的問(wèn)題,另一方面使得企業(yè)擺脫了內(nèi)部和外部難以互通的窘境。</p><p>  J2EE組件和“標(biāo)準(zhǔn)的”Java類的不同點(diǎn)在于:它被裝配在一個(gè)J2EE應(yīng)用中,具有固定

46、的格式并遵守J2EE規(guī)范,由J2EE服務(wù)器對(duì)其進(jìn)行管理。J2EE規(guī)范是這樣定義J2EE組件的:客戶端應(yīng)用程序和Applet是運(yùn)行在客戶端的組件;Java Servlet和Java Server Pages (JSP) 是運(yùn)行在服務(wù)器端的Web組件;Enterprise Java Bean (EJB )是運(yùn)行在服務(wù)器端的業(yè)務(wù)組件。</p><p>  J2EE體系結(jié)構(gòu)提供中間層集成框架用來(lái)滿足無(wú)需太多費(fèi)用而又需要高

47、可用性、高可靠性以及可擴(kuò)展性的應(yīng)用的需求。通過(guò)提供統(tǒng)一的開發(fā)平臺(tái),J2EE降低了開發(fā)多層應(yīng)用的費(fèi)用和復(fù)雜性,同時(shí)提供對(duì)現(xiàn)有應(yīng)用程序集成的強(qiáng)有力支持,極大地提高了系統(tǒng)的運(yùn)行效率和安全性。</p><p>  J2EE使用多層的分布式應(yīng)用模型,應(yīng)用邏輯按功能劃分為組件,各個(gè)應(yīng)用組件根據(jù)他們所在的層分布在不同的機(jī)器上。事實(shí)上,SUN設(shè)計(jì)J2EE的初衷正是為了解決兩層模式(Client/Server)的弊端。傳統(tǒng)的客戶端

48、往往承擔(dān)了太多的功能,導(dǎo)致客戶端比較臃腫,升級(jí)很不方便。而J2EE中使用的多層軟件模型將原來(lái)簡(jiǎn)單的模型切成幾層解耦的獨(dú)立功能層,每一層完成特定的任務(wù),方便升級(jí)系統(tǒng)并更改應(yīng)用的邏輯[5]。典型的J2EE應(yīng)用體系結(jié)構(gòu)如圖2-1所示:</p><p>  圖2-1 J2EE體系結(jié)構(gòu)圖</p><p>  總體來(lái)說(shuō),使用J2EE技術(shù)開發(fā)Web事務(wù)系統(tǒng)有以下優(yōu)點(diǎn):第一,開發(fā)高效,J2EE有完善的開源

49、社區(qū)支持,像Spring,Struts這些框架可以大大縮短開發(fā)周期;第二,支持不同的操作系統(tǒng)環(huán)境,因?yàn)镴ava天生具有“一次編譯,隨處運(yùn)行”的特點(diǎn),基于J2EE開發(fā)的應(yīng)用程序不依賴特定的操作系統(tǒng)、硬件等,也就具有了開發(fā)一次就可以在各個(gè)平臺(tái)部署的特點(diǎn);第三,穩(wěn)定的高可用性,得益于從Java繼承而來(lái)的跨平臺(tái)特性,J2EE系統(tǒng)部署到可靠的操作環(huán)境中,一些對(duì)系統(tǒng)魯棒性要求很高的大型商務(wù)系統(tǒng)可以選擇比Windows更為健壯的Linux操作系統(tǒng),這

50、是更為理想的選擇。</p><p>  2.3 SQL Server 2005簡(jiǎn)介</p><p>  Microsoft SQL Server 2005是一個(gè)全面的數(shù)據(jù)庫(kù)平臺(tái),使用集成的商業(yè)智能工具提供了企業(yè)級(jí)的數(shù)據(jù)管理方式。Microsoft SQL Server 2005數(shù)據(jù)庫(kù)引擎為關(guān)系型數(shù)據(jù)和結(jié)構(gòu)化數(shù)據(jù)提供了更安全可靠的存儲(chǔ)功能,使得用戶可以構(gòu)建和管理用于業(yè)務(wù)的高可用和高性能的數(shù)據(jù)

51、應(yīng)用程序。</p><p>  SQL Server是由Microsoft開發(fā)和推廣的關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)(DBMS),它最初是由Microsoft、Sybase、Ashton-Tate三家公司共同開發(fā)的,并于1988年推出了第一個(gè)在OS/2版本上運(yùn)行的SQL Server系統(tǒng)。1992年Sybase和Microsoft這兩家公司將SQL Server移植到了Windows NT操作系統(tǒng)上,后來(lái)Microsoft致

52、力于Windows NT平臺(tái)的SQL Server的開發(fā),而Sybase則專注于SQL Server在UNIX上的應(yīng)用[6]。</p><p>  近年來(lái)在Microsoft SQL Server的發(fā)展歷程中不斷更新版本:1996年發(fā)布的SQL Server6.5版本,該版本具備了市場(chǎng)所需的速度快、功能強(qiáng)、易使用和價(jià)格低等有點(diǎn);1998年推出了SQL Server7.0版本,該版本再一次對(duì)核心數(shù)據(jù)庫(kù)引擎進(jìn)行了重大

53、改寫,在操作上更加簡(jiǎn)單、易用,因此獲得了良好的聲譽(yù);2000年,發(fā)布了SQL Server 2000版本,該版本在可擴(kuò)縮性和可靠性上有了很大的改進(jìn),成為企業(yè)級(jí)數(shù)據(jù)庫(kù)市場(chǎng)中重要的一員;2005年,發(fā)布了SQL Server 2005版本,該版本擴(kuò)展了SQL Server 2000的性能,如在可靠性、可用性、可編程性和易用性等方面做出了重大改進(jìn)。SQL Server 2005引入了.NET Framework,允許構(gòu)建.NET SQL Se

54、rver專有對(duì)象,從而使SQL Server數(shù)據(jù)庫(kù)具有靈活的功能。</p><p>  SQL Server 2005的常見版本包括如下四種:</p><p>  1)個(gè)人版(Personal Edition):用于單機(jī)系統(tǒng)或客戶機(jī);</p><p>  標(biāo)準(zhǔn)版(Standard Edition):用于小型的工作組或部門;</p><p> 

55、 3)企業(yè)版(Enterprise Edition):支持所有的SQL Server 2005特性,可作為大型Web站點(diǎn)、企業(yè)OLTP(聯(lián)機(jī)事務(wù)處理)以及數(shù)據(jù)倉(cāng)庫(kù)系統(tǒng)等的產(chǎn)品數(shù)據(jù)庫(kù)服務(wù)器;</p><p>  4)開發(fā)者版(Developer Edition):用于程序員開發(fā)應(yīng)用程序,這些程序需要SQL Server 2005作為數(shù)據(jù)庫(kù)存儲(chǔ)設(shè)備[7]。</p><p>  2.4 ExtJ

56、S簡(jiǎn)介</p><p>  ExtJS是一個(gè)JavaScript庫(kù),功能強(qiáng)大,界面美觀,可以使用AJAX, DHTML,DOM等技術(shù)來(lái)開發(fā)網(wǎng)絡(luò)應(yīng)用程序。ExtJS可以用來(lái)開發(fā)富互聯(lián)網(wǎng)應(yīng)用(RIA:Rich Internet Applications),主要用于創(chuàng)建前端用戶界面,是一個(gè)與后臺(tái)技術(shù)無(wú)關(guān)的前端AJAX框架。因此,可以把ExtJS用在.NET、Java以及PHP等多種開發(fā)語(yǔ)言中。</p>&

57、lt;p>  ExtJS最開始基于YUI技術(shù),由開發(fā)人員Jack Slocum開發(fā),通過(guò)參考Java SWING等機(jī)制來(lái)組織可視化組件,從UI界面上CSS樣式的應(yīng)用,到數(shù)據(jù)解析過(guò)程中的異常處理,都可算是一款不可多得的JavaScript客戶端技術(shù)的精品。</p><p>  ExtJS的組件結(jié)構(gòu)如圖2-3所示:</p><p>  圖2-3 ExtJS組件結(jié)構(gòu)圖</p>

58、<p>  ExtJS初期僅是對(duì)Yahoo! UI的對(duì)話框擴(kuò)展,后來(lái)逐漸有了自己的特色,深受技術(shù)研發(fā)人員的喜愛。發(fā)展至今,ExtJS除YUI外還支持包括jQuery、Prototype等多種JS底層庫(kù),可以讓開發(fā)人員自由進(jìn)行選擇[8]。該框架完全基于純HTML/CSS+JS技術(shù),提供豐富的跨瀏覽器UI組件,靈活采用JSON/XML數(shù)據(jù)源開發(fā),使得服務(wù)端表示層的負(fù)荷真正得以減輕。</p><p><

59、;b>  2.5開源工具簡(jiǎn)介</b></p><p>  2.4.1 HTTPClient</p><p>  HTTPClient是Apache Jakarta Common下的子項(xiàng)目,可以用來(lái)提供高效的、最新的、功能豐富的支持HTTP協(xié)議的客戶端編程工具包。</p><p>  HTTP協(xié)議可能是現(xiàn)在Internet上使用得最多、最重要的協(xié)議了

60、,越來(lái)越多的Java應(yīng)用程序需要直接通過(guò)HTTP協(xié)議來(lái)訪問(wèn)網(wǎng)絡(luò)資源。雖然在 JDK的java.net包中已經(jīng)提供了訪問(wèn)HTTP協(xié)議的基本功能,但是對(duì)于大部分應(yīng)用程序來(lái)說(shuō),JDK庫(kù)本身提供的功能還不夠豐富和靈活。HTTPClient已經(jīng)應(yīng)用在很多大型的項(xiàng)目中,比如Apache Jakarta上很著名的另外兩個(gè)開源項(xiàng)目Cactus和HTMLUnit都使用了HTTPClient。</p><p>  HTTPClien

61、t所提供的主要功能包括:</p><p>  實(shí)現(xiàn)了所有HTTP的方法(GET,POST,PUT,HEAD 等);</p><p><b>  支持自動(dòng)轉(zhuǎn)向;</b></p><p>  支持 HTTPS 協(xié)議;</p><p><b>  支持代理服務(wù)器。</b></p><p

62、>  2.4.2 HTMLParser</p><p>  HTMLParser是一個(gè)利用純Java語(yǔ)言編寫的進(jìn)行HTML解析的庫(kù),它不依賴于其它的Java庫(kù)文件,主要用于改造或提取HTML,其特點(diǎn)是能夠超高速解析HTML文件,而且不會(huì)出錯(cuò)。作為目前最為方便易用的進(jìn)行HTML解析和信息提取的工具,HTMLParser已經(jīng)成為了抓取網(wǎng)頁(yè)數(shù)據(jù)和改造HTML的內(nèi)容的首選工具。</p><p&g

63、t;  HTMLParser主要包含以下兩個(gè)方面的功能:</p><p><b>  1)信息提取功能:</b></p><p>  文本信息抽取,例如對(duì)HTML進(jìn)行有效信息搜索;</p><p>  鏈接提取,用于自動(dòng)給頁(yè)面的鏈接文本加上鏈接的標(biāo)簽;</p><p>  資源提取,例如對(duì)一些圖片、聲音的資源的處理;&l

64、t;/p><p>  鏈接檢查,用于檢查HTML中的鏈接是否有效;</p><p><b>  頁(yè)面內(nèi)容的監(jiān)控。</b></p><p><b>  2)信息轉(zhuǎn)換功能:</b></p><p>  鏈接重寫,用于修改頁(yè)面中的所有超鏈接;</p><p>  網(wǎng)頁(yè)內(nèi)容拷貝,用于將網(wǎng)

65、頁(yè)內(nèi)容保存到本地;</p><p>  內(nèi)容檢驗(yàn),可以用來(lái)過(guò)濾網(wǎng)頁(yè)上一些令人不愉快的字詞;</p><p>  HTML信息清洗,把本來(lái)亂七八糟的HTML信息格式化;</p><p>  轉(zhuǎn)成XML格式數(shù)據(jù)。</p><p><b>  2.5本章小結(jié)</b></p><p>  本章簡(jiǎn)要介紹了進(jìn)

66、行本次新聞爬蟲系統(tǒng)開發(fā)所需要的相關(guān)理論和技術(shù),主要包括網(wǎng)絡(luò)爬蟲的定義,爬取策略等理論知識(shí),J2EE技術(shù)、SQL Server 2005數(shù)據(jù)庫(kù)管理系統(tǒng)以及ExtJS框架相關(guān)知識(shí),并對(duì)系統(tǒng)開發(fā)過(guò)程中用到的一些關(guān)鍵開源工具做出了簡(jiǎn)要說(shuō)明,這些關(guān)鍵技術(shù)的學(xué)習(xí)和掌握為接下來(lái)的系統(tǒng)分析及設(shè)計(jì)實(shí)現(xiàn)提供了堅(jiān)實(shí)的理論基礎(chǔ)。</p><p><b>  3 系統(tǒng)需求分析</b></p><p

67、>  需求分析階段的主要工作就是分析用戶的需求是什么,是指針對(duì)軟件所要解決的問(wèn)題進(jìn)行詳細(xì)的分析,明確對(duì)軟件系統(tǒng)的輸入輸出要求。本章主要從系統(tǒng)可行性、用戶對(duì)象、用戶用例、功能需求以及性能需求五個(gè)方面進(jìn)行詳細(xì)的系統(tǒng)需求分析。</p><p>  3.1 系統(tǒng)可行性研究</p><p>  3.1.1 技術(shù)可行性</p><p><b>  1)軟件可行性

68、</b></p><p>  新聞爬蟲系統(tǒng)所需要的數(shù)據(jù)源可以通過(guò)編寫網(wǎng)絡(luò)爬蟲程序來(lái)實(shí)現(xiàn)定向抓取,通過(guò)定制爬行過(guò)程中的過(guò)濾條件和爬行策略,爬蟲程序所獲取的數(shù)據(jù)量和抓取的效率都能得到很好的保證。</p><p>  新聞信息的可視化模塊可以通過(guò)借助Google Visualization API動(dòng)態(tài)地將新聞顯示在交互方式非常豐富的圖表上,再結(jié)合ExtJS構(gòu)建一個(gè)富互聯(lián)網(wǎng)應(yīng)用,整個(gè)系

69、統(tǒng)能夠提供良好的用戶體驗(yàn)。</p><p><b>  硬件可行性</b></p><p>  新聞爬蟲系統(tǒng)需要進(jìn)行抓取和分析的數(shù)據(jù)量非常大,這對(duì)于服務(wù)器端數(shù)據(jù)庫(kù)的承載能力要求較高,通過(guò)較長(zhǎng)時(shí)間的測(cè)試,目前主流的服務(wù)器完全可以勝任作為輿情分析系統(tǒng)服務(wù)器的要求。</p><p>  由于該新聞爬蟲系統(tǒng)采用B/S架構(gòu)方式,用戶僅需在瀏覽器端利用瀏覽

70、器進(jìn)入系統(tǒng)使用相關(guān)功能即可,當(dāng)前主流的個(gè)人電腦硬件配置完全滿足使用條件。</p><p>  3.1.2 操作可行性</p><p>  本系統(tǒng)在用戶界面層利用ExtJS框架結(jié)合Google Visualization API進(jìn)行構(gòu)建。ExtJS作為開源JavaScript框架,功能強(qiáng)大,界面美觀,使用AJAX技術(shù)開發(fā)RIA應(yīng)用。Google Visualization API所提供的圖表

71、工具作為Flex程序,具有極為豐富的交互效果。兩者相結(jié)合開發(fā)出的前臺(tái)網(wǎng)頁(yè),保證了良好的用戶體驗(yàn),能夠滿足用戶實(shí)際操作的需要。</p><p>  3.1.3 經(jīng)濟(jì)可行性</p><p>  經(jīng)過(guò)不斷的系統(tǒng)完善和功能增強(qiáng)過(guò)程,成型之后的新聞爬蟲系統(tǒng)能夠?yàn)楦鱾€(gè)行業(yè)按需提供不同的服務(wù)。例如:為政府機(jī)關(guān)、公安、廣電、教育機(jī)構(gòu)提供輿情監(jiān)測(cè)服務(wù),為上市公司、投資機(jī)構(gòu)、金融監(jiān)管機(jī)構(gòu)提供口碑管理服務(wù),為各

72、類商業(yè)公司提供競(jìng)爭(zhēng)情報(bào)管理、招投標(biāo)監(jiān)測(cè)、危機(jī)公關(guān)處理、市場(chǎng)調(diào)研、趨勢(shì)分析以及營(yíng)銷效果評(píng)估等服務(wù)。綜上所述,新聞爬蟲分析系統(tǒng)具有非常強(qiáng)的經(jīng)濟(jì)可行性。</p><p>  3.2 用戶對(duì)象分析</p><p>  互聯(lián)網(wǎng)定向信息采集系統(tǒng)面對(duì)的客戶是特定的專業(yè)人群和企業(yè)機(jī)構(gòu),他們關(guān)心的信息一般限于特定的主題。出于性能和成本上的考量,本系統(tǒng)不需要也不可能對(duì)整個(gè)互聯(lián)網(wǎng)來(lái)做遍歷抓取。本系統(tǒng)的用戶一般是

73、新聞熱點(diǎn)分析部門或是各公安部門的觀察員。一般來(lái)說(shuō),他們無(wú)法將精力全部花在瀏覽各大網(wǎng)站新聞和BBS上,但是他們的職責(zé)需要他們對(duì)網(wǎng)絡(luò)上的信息有一個(gè)把握,尤其是和其興趣點(diǎn)、切身利益相關(guān)的帖子和新聞。</p><p>  對(duì)于企業(yè)公關(guān)來(lái)說(shuō),信息時(shí)代的到來(lái)導(dǎo)致危機(jī)的信息傳播比危機(jī)本身發(fā)展要快得多,媒體的報(bào)道也很難避免。他們需要不斷的知道外屆對(duì)企業(yè)的評(píng)價(jià),是否有競(jìng)爭(zhēng)對(duì)手惡意中傷等,從而在第一時(shí)間作出應(yīng)對(duì)措施,減少破壞性和蔓延

74、速度,以維護(hù)形象和贏得消費(fèi)者的同情和理解。</p><p>  對(duì)于行政機(jī)構(gòu)類用戶,他們需要對(duì)國(guó)內(nèi)重點(diǎn)論壇和新聞門戶網(wǎng)站,也包含國(guó)外部分敏感網(wǎng)站,特別是國(guó)外的Twitter,F(xiàn)acebook等網(wǎng)站進(jìn)行一些監(jiān)控,以對(duì)一些敏感事件進(jìn)行及時(shí)的發(fā)現(xiàn)、后續(xù)跟蹤,同時(shí)對(duì)于民意的聽取也很感興趣,從而做到對(duì)特殊事件的早發(fā)現(xiàn)、早預(yù)警,為及時(shí)處置奠定基礎(chǔ)。</p><p>  此外,還有很重要的一個(gè)方面的用戶

75、就是系統(tǒng)管理員,他們并不是新聞爬蟲系統(tǒng)的用戶,但是該管理員需要控制數(shù)據(jù)源的獲取邏輯,進(jìn)行數(shù)據(jù)的分析,并將分析結(jié)果進(jìn)行展示。</p><p>  3.3 用戶用例分析</p><p>  3.3.1 管理員用戶用例分析</p><p>  管理員用戶用例圖如圖3-1所示:</p><p>  圖3-1 管理員用戶用例圖</p>&

76、lt;p>  對(duì)于管理員用戶,其使用場(chǎng)景分為五大類:</p><p>  對(duì)爬蟲數(shù)據(jù)源進(jìn)行控制:包括對(duì)爬蟲爬取的數(shù)據(jù)源的增加和刪除,以及對(duì)被爬行網(wǎng)站的配置(例如改動(dòng)HTML代碼關(guān)鍵字匹配特征以通過(guò)HTMLParser抓取到相應(yīng)類型的新聞)。數(shù)據(jù)源的配置需要定期進(jìn)行更新和維護(hù),系統(tǒng)需要提供有良好的接口,盡量降低配置的難度和維護(hù)的工作量。</p><p>  開始一次數(shù)據(jù)采集過(guò)程:手動(dòng)采

77、集和增量采集(添加定時(shí)任務(wù))。兩者的本質(zhì)都是開啟網(wǎng)絡(luò)爬蟲對(duì)數(shù)據(jù)源網(wǎng)站根據(jù)抓取配置來(lái)執(zhí)行數(shù)據(jù)獲取的任務(wù),不同的是手動(dòng)采集由管理員觸發(fā)后執(zhí)行一次特定任務(wù),增量采集會(huì)對(duì)部分更新頻率較高的網(wǎng)頁(yè)進(jìn)行周期性的抓取以達(dá)到服務(wù)器端數(shù)據(jù)庫(kù)實(shí)時(shí)更新的效果。</p><p>  對(duì)于數(shù)據(jù)庫(kù)中的新聞信息進(jìn)行分析。</p><p>  進(jìn)入WEB頁(yè)測(cè)試本地服務(wù)器和系統(tǒng)是否運(yùn)行正常。</p><p

78、>  將爬取的新聞信息以及分析的結(jié)果展示給用戶。</p><p>  3.3.2 普通用戶用例分析</p><p>  普通用戶用例圖如圖3-2所示:</p><p>  圖3-2 普通用戶用例圖</p><p>  對(duì)于普通用戶,其使用場(chǎng)景分為五種:</p><p><b>  查看各類新聞;<

79、/b></p><p>  按關(guān)鍵字,時(shí)間等多條件搜索新聞;</p><p>  查看新聞?lì)悇e分析柱狀圖;</p><p>  查看新聞小類別分析柱狀圖;</p><p>  查看新聞數(shù)量隨月份的變化折線圖;</p><p>  查看在某一天新聞數(shù)量在一天中的變化折線圖。</p><p>

80、  3.3.3 綜合用例分析</p><p>  圖3-3 系統(tǒng)綜合用例圖</p><p>  該新聞爬蟲系統(tǒng)的綜合用例圖如圖3-3所示,普通用戶可以進(jìn)入該系統(tǒng)進(jìn)行查看各類新聞、按關(guān)鍵字,時(shí)間等多條件搜索新聞、查看新聞?lì)悇e分析柱狀圖、查看新聞小類別分析柱狀圖、查看新聞數(shù)量隨月份的變化折線圖、查看在某一天新聞數(shù)量在一天中的變化折線圖以及進(jìn)行綜合分析統(tǒng)計(jì)操作;管理員用戶具有最高權(quán)限,除了可以正

81、常使用本系統(tǒng)進(jìn)行系統(tǒng)功能測(cè)試之外,還可以進(jìn)行控制系統(tǒng)數(shù)據(jù)源、觸發(fā)一次數(shù)據(jù)采集等操作。</p><p>  3.4 功能需求分析</p><p>  根據(jù)上文對(duì)于用戶用例的分析,可以總結(jié)出本系統(tǒng)的功能需求:</p><p><b>  針對(duì)管理員用戶:</b></p><p>  對(duì)爬蟲爬取的數(shù)據(jù)源進(jìn)行便捷的管理操作,包括

82、對(duì)數(shù)據(jù)源的增加和刪除以及對(duì)于數(shù)據(jù)抓取策略的修改;</p><p>  觸發(fā)一次數(shù)據(jù)采集的過(guò)程,包括指定一次手動(dòng)采集的過(guò)程和觸發(fā)一次定時(shí)采集的過(guò)程以實(shí)現(xiàn)數(shù)據(jù)的實(shí)時(shí)獲取和增量獲??;</p><p>  對(duì)于數(shù)據(jù)庫(kù)中的數(shù)據(jù)進(jìn)行分析;</p><p>  具備普通用戶能夠使用的所有功能,可進(jìn)入WEB頁(yè)測(cè)試本地服務(wù)器和系統(tǒng)是否運(yùn)行正常。</p>&l

83、t;p><b>  針對(duì)普通用戶:</b></p><p>  查看各類新聞:輸入關(guān)鍵字和日期進(jìn)行檢索,查看當(dāng)前類型的符合條件的新聞;</p><p>  查看新聞?lì)悇e分析柱狀圖:輸入日期進(jìn)行檢索,查看當(dāng)前時(shí)間下的新聞?lì)悇e分析柱狀圖;</p><p>  查看新聞小類別分析柱狀圖:輸入日期進(jìn)行檢索,可查看當(dāng)前時(shí)間下的小的新聞?lì)悇e的

84、數(shù)量分析柱狀圖;</p><p>  查看新聞數(shù)量隨月份的變化折線圖:根據(jù)輸入的年份可查看當(dāng)前年份中新聞發(fā)布數(shù)量隨月份變化的折線圖;</p><p>  查看在某一天新聞數(shù)量在一天中的變化折線圖:根據(jù)輸入的時(shí)間可查看當(dāng)前日期下新聞發(fā)布數(shù)量隨時(shí)間變化的折線圖。</p><p>  3.5 性能需求分析</p><p>  本系統(tǒng)運(yùn)行在Wind

85、ows 7 Ultimate操作系統(tǒng)上,Web服務(wù)器選用Apache Tomcat 7.0版本,整個(gè)系統(tǒng)的性能指標(biāo)如下:</p><p><b>  運(yùn)行環(huán)境:</b></p><p>  CPU:Intel Core (TM) 2 Duo E7200 @ 2.53GHz</p><p>  內(nèi)存:3 GB ( DDR2 667MHz / DD

86、R2 800MHz )</p><p>  帶寬:10.0M,100M網(wǎng)卡</p><p><b>  運(yùn)行參數(shù):</b></p><p>  最大網(wǎng)絡(luò)連接數(shù):65</p><p>  單一主機(jī)連接數(shù):20</p><p>  下載速度:(按照平均每個(gè)頁(yè)面包含10條數(shù)據(jù)來(lái)計(jì)算)</p>

87、<p>  最高速度:200Pages/Min,平均每分鐘抓取2000條記錄</p><p>  最低速度:50Pages/Min,平均每分鐘抓取500條記錄</p><p><b>  頁(yè)面解析速度:</b></p><p>  平均速度:1000Pages/Min</p><p>  并發(fā)解析線程數(shù):2

88、0</p><p><b>  資源使用率:</b></p><p>  下載服務(wù):CPU占用率50%,內(nèi)存占用率500MB</p><p>  解析服務(wù):CPU占用率70%,內(nèi)存占用率800MB</p><p><b>  3.6 本章小結(jié)</b></p><p>  本章

89、主要對(duì)需求分析階段所做的相關(guān)工作進(jìn)行了描述,為后期系統(tǒng)設(shè)計(jì)和開發(fā)工作做準(zhǔn)備。首先從技術(shù)可行性、操作可行性和經(jīng)濟(jì)可行性三個(gè)方面對(duì)系統(tǒng)可行性進(jìn)行了評(píng)估,隨后對(duì)系統(tǒng)的用戶對(duì)象和用戶用況從管理員用戶和普通用戶兩個(gè)角度進(jìn)行了詳細(xì)的分析,并分別總結(jié)出了相應(yīng)的功能需求,最后對(duì)系統(tǒng)的性能需求進(jìn)行了簡(jiǎn)要分析。</p><p><b>  4 系統(tǒng)總體設(shè)計(jì)</b></p><p>  系

90、統(tǒng)需求分析階段主要提出了系統(tǒng)需要做什么,系統(tǒng)設(shè)計(jì)階段需要解決的問(wèn)題就是系統(tǒng)需要怎么做。系統(tǒng)設(shè)計(jì)階段的主要參考依據(jù)是需求分析階段得出的相關(guān)結(jié)果,據(jù)此進(jìn)行系統(tǒng)的數(shù)據(jù)庫(kù)結(jié)構(gòu)設(shè)計(jì)和功能模塊設(shè)計(jì),本階段的工作是對(duì)上一階段分析結(jié)果的進(jìn)一步具體化。</p><p>  4.1 數(shù)據(jù)庫(kù)結(jié)構(gòu)設(shè)計(jì)</p><p>  良好的數(shù)據(jù)庫(kù)結(jié)構(gòu)對(duì)于保障一個(gè)應(yīng)用程序始終運(yùn)行在高性能狀態(tài)具有非常重要的意義。數(shù)據(jù)庫(kù)結(jié)構(gòu)如果沒(méi)

91、有設(shè)計(jì)好將會(huì)給以后的工作帶來(lái)很多麻煩,一方面是性能問(wèn)題,另一方面是維護(hù)問(wèn)題。過(guò)多的重復(fù)性數(shù)據(jù)會(huì)嚴(yán)重影響系統(tǒng)的執(zhí)行性能,當(dāng)這些數(shù)據(jù)的一個(gè)實(shí)例發(fā)生改變時(shí),其他數(shù)據(jù)也都要進(jìn)行相應(yīng)的改變。</p><p>  本系統(tǒng)使用SQL Server 2005作為數(shù)據(jù)庫(kù)管理工具,SQL Server 2005是一個(gè)具備完整的Web支持的數(shù)據(jù)庫(kù)產(chǎn)品,提供了以Web標(biāo)準(zhǔn)為基礎(chǔ)的擴(kuò)展數(shù)據(jù)庫(kù)編程功能。在數(shù)據(jù)訪問(wèn)層,采用JDBC直接訪問(wèn)數(shù)據(jù)

92、庫(kù)的方式,通過(guò)SQL語(yǔ)句操作數(shù)據(jù)庫(kù),簡(jiǎn)單易用。</p><p>  根據(jù)本系統(tǒng)的實(shí)際需求,數(shù)據(jù)庫(kù)中需要具備的基本表有三個(gè):</p><p>  新聞信息列表dbo.news(如表4-1所示)</p><p>  表4-1 帖子信息列表</p><p>  url信息列表dbo.newsurl(如表4-2所示)</p><p

93、>  表4-2 數(shù)據(jù)源信息列表</p><p>  新聞?lì)悇e列表dbo.newstype(如表4-3所示)</p><p>  表4-3情感傾向標(biāo)注列表</p><p>  這三個(gè)表之間的實(shí)體-關(guān)系圖如圖4-1所示:</p><p>  圖4-1 數(shù)據(jù)庫(kù)實(shí)體-關(guān)系圖</p><p>  4.2 系統(tǒng)功能模塊設(shè)計(jì)&

94、lt;/p><p>  整個(gè)新聞爬蟲系統(tǒng)應(yīng)該包括四部分的功能模塊:爬取類別的選擇、數(shù)據(jù)獲取模塊、數(shù)據(jù)存入模塊、數(shù)據(jù)分析以及數(shù)據(jù)可視化模塊。其總體的工程如圖4-2所示:</p><p>  圖4-2 系統(tǒng)主要工作流程</p><p>  4.2.1 數(shù)據(jù)獲取功能模塊</p><p>  在該新聞爬蟲系統(tǒng)中,數(shù)據(jù)的獲取主要依靠網(wǎng)絡(luò)爬蟲來(lái)實(shí)現(xiàn)。爬蟲程序

95、在針對(duì)系統(tǒng)指定的網(wǎng)站進(jìn)行爬行時(shí),會(huì)對(duì)網(wǎng)頁(yè)中的相關(guān)元數(shù)據(jù)進(jìn)行抽取并保存在本地?cái)?shù)據(jù)庫(kù)中。</p><p>  爬蟲程序主要由鏈接過(guò)濾子模塊、頁(yè)面解析子模塊、爬行控制子模塊以及數(shù)據(jù)存儲(chǔ)子模塊構(gòu)成,其模塊結(jié)構(gòu)如圖4-3所示:</p><p>  圖4-3 數(shù)據(jù)獲取功能模塊結(jié)構(gòu)圖</p><p><b>  鏈接過(guò)濾子模塊</b></p>

96、<p>  在爬蟲程序的爬行過(guò)程中,需要不斷地向待抓取的URL隊(duì)列中添加新的URL,而爬蟲作為計(jì)算機(jī)程序具有機(jī)械執(zhí)行的特性,無(wú)法智能判斷出某一個(gè)URL是否需要進(jìn)行解析,這就要求在爬行過(guò)程中需要為爬蟲定義一個(gè)鏈接過(guò)濾器,只有符合某些條件的URL才能被過(guò)濾器所識(shí)別,其余不符合條件的URL將會(huì)被鏈接過(guò)濾器過(guò)濾掉,不會(huì)加入到待抓取的爬行隊(duì)列中去,同時(shí)對(duì)于符合條件的URL也要判斷該URL是否被爬取過(guò),如果已被爬過(guò)則舍棄。</p&g

97、t;<p>  在爬蟲中采用鏈接過(guò)濾器進(jìn)行URL過(guò)濾是很有必要的。一方面,能夠被過(guò)濾器識(shí)別的URL符合用戶預(yù)定義的過(guò)濾規(guī)則,這些URL全部都是用戶所期望獲取的數(shù)據(jù)來(lái)源,數(shù)據(jù)抓取的準(zhǔn)確性得到很好的保證;另一方面,由于大量不符合條件的URL都被過(guò)濾掉了,爬行隊(duì)列中僅僅加入符合條件的URL,大大節(jié)省了寶貴的內(nèi)存空間。</p><p>  鏈接過(guò)濾子模塊的工作方式如圖4-4所示:</p>&l

98、t;p>  圖4-4 鏈接過(guò)濾子模塊</p><p><b>  頁(yè)面解析子模塊</b></p><p>  爬行隊(duì)列在爬蟲程序中的地位是非常重要的。在爬蟲程序的工作過(guò)程中,需要不斷地提取符合鏈接過(guò)濾器的URL加入到爬蟲隊(duì)列中去,這些URL所指向的HTML頁(yè)面可以分為兩類:一類是可以直接從中獲取元數(shù)據(jù)的HTML頁(yè)面,另一類是包含更多符合鏈接過(guò)濾器的URL但是不能

99、抽取元數(shù)據(jù)的HTML頁(yè)面。對(duì)于第一類HTML頁(yè)面,直接利用HTML解析工具對(duì)其進(jìn)行解析并進(jìn)行元數(shù)據(jù)抽?。粚?duì)于第二類HTML頁(yè)面,則需要對(duì)其進(jìn)行URL抽取而非元數(shù)據(jù)抽取,將HTML中復(fù)合鏈接過(guò)濾器的URL全部提取出來(lái)進(jìn)行重爬判斷并將符合條件的URL加入到爬行隊(duì)列中去。</p><p>  頁(yè)面解析子模塊的工作方式如圖4-5所示:</p><p>  圖4-5 頁(yè)面解析子模塊</p>

100、;<p><b>  爬行控制子模塊</b></p><p>  爬行控制模塊是整個(gè)爬蟲程序的核心,它控制著整個(gè)爬蟲的抓取策略(寬度優(yōu)先或者深度優(yōu)先)以及停止條件。爬行控制子模塊的工作流程如圖4-6所示:</p><p>  圖4-6 爬行控制子模塊</p><p><b>  數(shù)據(jù)存儲(chǔ)子模塊</b><

101、/p><p>  在每次進(jìn)行完HTML頁(yè)面的信息抽取之后,都要將所有獲取到的元數(shù)據(jù)寫入到數(shù)據(jù)庫(kù)中去,另外還需要將本次抓取的URL也寫入數(shù)據(jù)庫(kù)中。數(shù)據(jù)存儲(chǔ)子模塊的工作流程如圖4-7所示:</p><p>  圖4-7 數(shù)據(jù)存儲(chǔ)子模塊</p><p>  4.2.2 數(shù)據(jù)可視化功能模塊</p><p>  圖4-8 數(shù)據(jù)可視化功能結(jié)構(gòu)圖</p&

102、gt;<p>  系統(tǒng)可視化功能模塊的主要功能結(jié)構(gòu)如圖4-8所示,通過(guò)ExtJS結(jié)合Google Visualization API進(jìn)行構(gòu)建,其主要功能包括:</p><p>  顯示歡迎頁(yè):用戶進(jìn)入本系統(tǒng)后顯示歡迎信息并對(duì)系統(tǒng)主要功能進(jìn)展示;</p><p>  查看各類新聞:查看當(dāng)前類型的新聞;</p><p>  按關(guān)鍵字,時(shí)間等多條件搜索新

103、聞:輸入關(guān)鍵字和日期進(jìn)行檢索,查看當(dāng)前符合條件的新聞;</p><p>  查看新聞?lì)悇e分析柱狀圖:輸入日期進(jìn)行檢索,可查看當(dāng)前日期下的新聞?lì)悇e的分析柱狀圖,在沒(méi)有日期限制的條件下就顯示全部新聞的類別分析柱狀圖;</p><p>  查看新聞小類別分析柱狀圖:輸入日期進(jìn)行檢索,可查看當(dāng)前日期下的新聞小類別的分析柱狀圖,在沒(méi)有日期限制的條件下就顯示全部新聞的小類別分析柱狀圖;</p&g

104、t;<p>  查看新聞數(shù)量隨月份的變化折線圖:輸入日期進(jìn)行檢索,可查看對(duì)于當(dāng)前年份下的新聞數(shù)量隨月份變化的折線圖;</p><p>  查看新聞數(shù)量在一天中的變化折線圖:輸入日期進(jìn)行檢索,可查看對(duì)于當(dāng)前日期下的新聞數(shù)量隨時(shí)間變化的折線圖;</p><p><b>  4.3 本章小結(jié)</b></p><p>  本章節(jié)對(duì)新聞爬蟲

105、系統(tǒng)進(jìn)行了數(shù)據(jù)庫(kù)結(jié)構(gòu)的總體設(shè)計(jì)以及系統(tǒng)功能模塊的總體設(shè)計(jì),并對(duì)數(shù)據(jù)獲取功能模塊的子模塊以及數(shù)據(jù)可視化功能模塊的功能結(jié)構(gòu)做出了明確的劃分,為系統(tǒng)詳細(xì)設(shè)計(jì)與實(shí)現(xiàn)階段的工作備好條件。</p><p>  5 系統(tǒng)詳細(xì)設(shè)計(jì)與實(shí)現(xiàn)</p><p>  本章節(jié)將圍繞新聞爬蟲系統(tǒng)的功能模塊詳細(xì)設(shè)計(jì)和技術(shù)實(shí)現(xiàn)展開詳細(xì)說(shuō)明,針對(duì)系統(tǒng)總體設(shè)計(jì)進(jìn)行細(xì)化和擴(kuò)充,詳細(xì)地設(shè)計(jì)每個(gè)模塊實(shí)現(xiàn)算法以及所需的局部結(jié)構(gòu),最后將

106、所有的設(shè)計(jì)方案進(jìn)行技術(shù)實(shí)現(xiàn)。</p><p>  5.1 數(shù)據(jù)獲取模塊</p><p>  數(shù)據(jù)獲取模塊主要利用Java語(yǔ)言結(jié)合HTTPClient開源工具編寫了一個(gè)針對(duì)新聞的可擴(kuò)展的網(wǎng)絡(luò)爬蟲,該爬蟲程序能夠按照廣度優(yōu)先的爬行策略對(duì)新聞數(shù)據(jù)進(jìn)行全面的定向抓取以及周期性的增量抓取。</p><p>  在爬蟲程序執(zhí)行數(shù)據(jù)抓取的過(guò)程中,采用HTMLParser對(duì)獲取到的

107、新聞信息進(jìn)行元數(shù)據(jù)抽取,將新聞的URL、標(biāo)題、內(nèi)容、發(fā)布方、發(fā)布時(shí)間、新聞?lì)悇e等元數(shù)據(jù)以及新聞的圖片存入SQL Server數(shù)據(jù)庫(kù)中。</p><p>  5.1.1 爬蟲程序初始界面</p><p>  爬蟲程序的初始界面如圖5-1所示。本程序利用SWING實(shí)現(xiàn),界面上方是功能選區(qū),管理員用戶可以指定爬行操作的數(shù)據(jù)源,進(jìn)行數(shù)據(jù)抓取過(guò)程的相關(guān)操作。界面下方的空白區(qū)域使用JTextArea實(shí)

108、現(xiàn),其作用是截獲系統(tǒng)的控制臺(tái)輸出并進(jìn)行顯示,用于指示當(dāng)前的爬行動(dòng)態(tài)信息。界面底部使用JProgressBar實(shí)現(xiàn)了一個(gè)爬行進(jìn)度指示條,用于指示當(dāng)前爬行操作的執(zhí)行進(jìn)度。</p><p>  圖5-1 爬蟲程序初始界面</p><p>  5.1.2 “建立連接”操作</p><p>  用戶點(diǎn)擊“建立連接”按鈕可以獲取到數(shù)據(jù)庫(kù)的連接,通過(guò)點(diǎn)擊“測(cè)試連接”按鈕可以連接到

109、測(cè)試數(shù)據(jù)庫(kù)進(jìn)行各類測(cè)試操作而不影響主數(shù)據(jù)庫(kù)的數(shù)據(jù)。用戶在點(diǎn)擊“建立連接”按鈕后,在控制臺(tái)進(jìn)行當(dāng)前狀態(tài)輸出,系統(tǒng)狀態(tài)由NotLinked變?yōu)長(zhǎng)inked。操作效果如圖5-2所示:</p><p>  圖5-2 “建立連接”操作</p><p>  5.1.3 “開始爬行”操作</p><p>  用戶在取得到數(shù)據(jù)庫(kù)的連接之后,可以通過(guò)選擇新聞?lì)悇e(可細(xì)分為china、

110、world、society、mil)開始抓取數(shù)據(jù),數(shù)據(jù)來(lái)源和爬行限制選項(xiàng)可在界面上部進(jìn)行控制。例如我們選擇對(duì)于china對(duì)應(yīng)的國(guó)內(nèi)新聞進(jìn)行爬取則程序會(huì)對(duì)國(guó)內(nèi)新聞開始進(jìn)行抓?。ㄈ鐖D5-4所示)并將帖子信息寫入到數(shù)據(jù)庫(kù)中(如圖5-5所示)。</p><p>  圖5-3 需要抓取的新聞列表</p><p>  圖5-4 正在進(jìn)行抓取</p><p>  圖5-5 新聞信

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論