《分布式爬蟲(chóng)系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)》11000字_第1頁(yè)
《分布式爬蟲(chóng)系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)》11000字_第2頁(yè)
《分布式爬蟲(chóng)系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)》11000字_第3頁(yè)
《分布式爬蟲(chóng)系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)》11000字_第4頁(yè)
《分布式爬蟲(chóng)系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)》11000字_第5頁(yè)
已閱讀5頁(yè),還剩20頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1分布式爬蟲(chóng)系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)摘要:隨著互聯(lián)網(wǎng)的快速發(fā)展,越來(lái)越多的人通過(guò)互聯(lián)網(wǎng)獲取每日新聞內(nèi)容。但是,隨著互聯(lián)網(wǎng)的高速發(fā)展下,互聯(lián)網(wǎng)上的信息也存在著數(shù)量繁多,范圍廣泛,重復(fù)率過(guò)高等問(wèn)題。由于目前的搜索引擎往往通過(guò)模糊匹配的方式來(lái)顯示與用戶(hù)搜索內(nèi)容所相關(guān)的信息,導(dǎo)致部分用戶(hù)無(wú)法通過(guò)搜索引擎快速的得到他們所需求的特定內(nèi)容。對(duì)于部分用戶(hù)的一些具體化、精細(xì)化的需求,就需要這樣一個(gè)網(wǎng)絡(luò)爬蟲(chóng),可以實(shí)時(shí)爬取新聞?lì)惥W(wǎng)站的信息,并根據(jù)爬取的內(nèi)容將新聞進(jìn)行分類(lèi),通過(guò)分類(lèi)進(jìn)行展示并統(tǒng)計(jì)出各個(gè)分類(lèi)下的新聞總數(shù),使用戶(hù)可以快速獲取到想要的新聞內(nèi)容,大大的減少了用戶(hù)查詢(xún)新聞的時(shí)間,使整個(gè)新聞瀏覽過(guò)程變得非常便利。本文通過(guò)研究網(wǎng)絡(luò)爬蟲(chóng)的現(xiàn)狀,分析得到本系統(tǒng)核心模塊分別是:爬蟲(chóng)模塊、數(shù)據(jù)清洗模塊、數(shù)據(jù)存儲(chǔ)模塊、數(shù)據(jù)統(tǒng)計(jì)分析模塊以及數(shù)據(jù)顯示模塊。系統(tǒng)采用Python作為開(kāi)發(fā)語(yǔ)言,使用Scrapy框架進(jìn)行爬蟲(chóng)架構(gòu)搭建,數(shù)據(jù)庫(kù)選擇Redis和MongoDB數(shù)據(jù)庫(kù),前端采用與JavaScript技術(shù)進(jìn)行開(kāi)發(fā)。創(chuàng)建一個(gè)方便快捷,直觀的新聞?lì)惻老x(chóng)系統(tǒng)。本系統(tǒng)可以根據(jù)字段的設(shè)計(jì)爬取到相應(yīng)的內(nèi)容,并將數(shù)據(jù)存儲(chǔ)到本地?cái)?shù)據(jù)庫(kù),通過(guò)連接數(shù)據(jù)庫(kù)顯示新聞一級(jí)分類(lèi)、二級(jí)分類(lèi)、新聞標(biāo)題、新聞內(nèi)容。并可以統(tǒng)計(jì)出各個(gè)分類(lèi)下爬取到的總新聞數(shù)。使用戶(hù)可以非常便利的通過(guò)本系統(tǒng)獲取新聞信息。經(jīng)測(cè)試,本系統(tǒng)功能開(kāi)發(fā)齊全,是一套性能穩(wěn)定且無(wú)上手難度的爬蟲(chóng)系統(tǒng)。關(guān)鍵詞:分布式爬蟲(chóng)系統(tǒng);MongoDB;數(shù)據(jù)庫(kù)原理目錄1緒論 11.1研究目的及意義 11.1.1研究目的 11.1.2研究意義 11.2國(guó)內(nèi)外研究現(xiàn)狀 11.2.1國(guó)外研究現(xiàn)狀 11.2.2國(guó)內(nèi)研究現(xiàn)狀 21.3本課題研究?jī)?nèi)容和研究步驟 31.3.1研究?jī)?nèi)容 31.3.2研究步驟 31.4論文組織結(jié)構(gòu) 42開(kāi)發(fā)工具及相關(guān)技術(shù) 52.1Python 52.2Pycharm集成開(kāi)發(fā)工具 52.3Scrapy 52.4Xpath 52.5Redis數(shù)據(jù)庫(kù) 62.6MongoDB數(shù)據(jù)庫(kù) 62.7本章小結(jié) 63系統(tǒng)分析 73.1系統(tǒng)設(shè)計(jì)目標(biāo) 73.2系統(tǒng)可行性分析 73.2.1技術(shù)可行性 73.2.2經(jīng)濟(jì)可行性 73.2.3操作可行性 73.3功能需求分析 83.4本章小結(jié) 94系統(tǒng)設(shè)計(jì) 104.1系統(tǒng)總體設(shè)計(jì) 104.2.1系統(tǒng)邏輯設(shè)計(jì) 104.2.2系統(tǒng)工作流程 104.2數(shù)據(jù)庫(kù)設(shè)計(jì) 114.3本章小結(jié) 125系統(tǒng)實(shí)現(xiàn) 135.1爬蟲(chóng)模塊 135.2可視化模塊 155.2.1頁(yè)面統(tǒng)計(jì)展示模塊 155.2.2新聞內(nèi)容模塊 165.3本章小結(jié) 166系統(tǒng)測(cè)試 186.1測(cè)試目的 186.2測(cè)試方法 186.3測(cè)試用例 186.4本章小結(jié) 207總結(jié)與展望 217.1總結(jié) 217.2展望 21參考文獻(xiàn) 231緒論1.1研究目的及意義1.1.1研究目的隨著互聯(lián)網(wǎng)時(shí)代的快速發(fā)展,人們獲取信息的方式逐漸多樣化。在網(wǎng)絡(luò)的快速普及下,越來(lái)越多的人都會(huì)選擇從互聯(lián)網(wǎng)上獲取自己所需要的信息。根據(jù)中國(guó)互聯(lián)網(wǎng)絡(luò)信息中心(CNNIC)在京發(fā)布的第46次《中國(guó)互聯(lián)網(wǎng)絡(luò)發(fā)展?fàn)顩r統(tǒng)計(jì)報(bào)告》中顯示,截止到2020年6月,中國(guó)網(wǎng)民的數(shù)量以達(dá)到9.4億,較2020年3月增加3625萬(wàn)?;ヂ?lián)網(wǎng)普及率達(dá)67%,較同年三月份提升2.5個(gè)百分點(diǎn)[1]。但是,隨著互聯(lián)網(wǎng)的高速發(fā)展下,互聯(lián)網(wǎng)上的信息也存在著數(shù)量繁多,范圍廣泛,重復(fù)率過(guò)高等問(wèn)題。由于目前的搜索引擎往往通過(guò)模糊匹配的方式來(lái)顯示與用戶(hù)搜索內(nèi)容所相關(guān)的信息,導(dǎo)致部分用戶(hù)無(wú)法通過(guò)搜索引擎快速的得到他們所需求的特定內(nèi)容[2]。對(duì)于部分用戶(hù)的一些具體化、精細(xì)化的需求,網(wǎng)絡(luò)爬蟲(chóng)應(yīng)運(yùn)而生。1.1.2研究意義網(wǎng)絡(luò)爬蟲(chóng)作為獲取特定信息的一項(xiàng)工具。早在90年代初就已被廣泛應(yīng)用。其主要目標(biāo)就是精確獲取互聯(lián)網(wǎng)上的內(nèi)容以方便人們使用。但在最初階段,一個(gè)網(wǎng)絡(luò)爬蟲(chóng)往往都是在一臺(tái)機(jī)器上運(yùn)行。但隨著互聯(lián)網(wǎng)的快速發(fā)展以及網(wǎng)站數(shù)量的的快速增長(zhǎng),單機(jī)版的爬蟲(chóng)已經(jīng)很難在短時(shí)間內(nèi)獲取大量特定的信息。在這樣的一個(gè)背景下,研究制作一個(gè)支持多臺(tái)機(jī)器并行采集數(shù)據(jù)的分布式網(wǎng)絡(luò)爬蟲(chóng)是很有必要的。通過(guò)分布式技術(shù),能夠解決單個(gè)服務(wù)器出現(xiàn)的性能不足等問(wèn)題。通過(guò)各個(gè)服務(wù)器檢索并交換數(shù)據(jù),來(lái)提高數(shù)據(jù)的采集,并能減輕服務(wù)器的負(fù)擔(dān)。且能通過(guò)分布式技術(shù)將采集到的數(shù)據(jù)分開(kāi)存儲(chǔ),能夠提高數(shù)據(jù)的查詢(xún)效率且更有利于數(shù)據(jù)庫(kù)的管理。這就是研究分布式網(wǎng)絡(luò)爬蟲(chóng)的意義所在。1.2國(guó)內(nèi)外研究現(xiàn)狀1.2.1國(guó)外研究現(xiàn)狀在國(guó)外,對(duì)于爬蟲(chóng)的研究可以追溯到1993年,出現(xiàn)了諸如WorldWideWebWorm等爬蟲(chóng)程序[3]。它們的主要功能是利用有限的URL種子幾何去收集并統(tǒng)計(jì)網(wǎng)絡(luò)信息。通過(guò)反復(fù)下載Web頁(yè)面來(lái)更新它們的URL倉(cāng)庫(kù)。在1994年,誕生了兩個(gè)新的網(wǎng)絡(luò)爬蟲(chóng)程序:webCrawler和MOMspider[4]。它們除了去收集與統(tǒng)計(jì)外,還首次引入了禮貌爬取和黑名單的概念。到了1998年。為了解決爬蟲(chóng)的可延展性。SergeyMikhaylovichBrin和LawrenceEdwardLarryPage設(shè)計(jì)了一個(gè)大規(guī)模網(wǎng)絡(luò)爬蟲(chóng),也就是如今家喻戶(hù)曉的Google[5]。它通過(guò)數(shù)據(jù)壓縮以及建立索引等方式來(lái)優(yōu)化對(duì)磁盤(pán)的訪(fǎng)問(wèn),減少磁盤(pán)的訪(fǎng)問(wèn)時(shí)間。并通過(guò)PageRank算法來(lái)計(jì)算用戶(hù)訪(fǎng)問(wèn)該頁(yè)面的幾率,通過(guò)該幾率值來(lái)對(duì)頁(yè)面進(jìn)行不同頻率的訪(fǎng)問(wèn),來(lái)減少冷門(mén)頁(yè)面的訪(fǎng)問(wèn)率以進(jìn)一步優(yōu)化爬蟲(chóng)程序?qū)W(wǎng)絡(luò)資源的訪(fǎng)問(wèn),進(jìn)而實(shí)現(xiàn)對(duì)所爬取頁(yè)面的快速更新[6]。直到目前,網(wǎng)絡(luò)爬蟲(chóng)的技術(shù)也在不斷的發(fā)展,像IBM的webFountain就能夠在高更新率的前提下對(duì)網(wǎng)頁(yè)進(jìn)行整體離線(xiàn)。UbiCrawler通過(guò)P2P技術(shù)將網(wǎng)頁(yè)去重的工作分擔(dān)給了每位用戶(hù)[7]。諸如此類(lèi),國(guó)外對(duì)于網(wǎng)絡(luò)爬蟲(chóng)的研究仍然火熱。1.2.2國(guó)內(nèi)研究現(xiàn)狀關(guān)于國(guó)內(nèi)對(duì)于網(wǎng)絡(luò)爬蟲(chóng)的研究,比較知名的如百度的baiduspider,有道的youdaobot等商業(yè)爬蟲(chóng)[8]。像百度的baiduspider就可以根據(jù)服務(wù)器的負(fù)載能力動(dòng)態(tài)調(diào)整訪(fǎng)問(wèn)密度,從而降低服務(wù)器的壓力。而非商業(yè)的網(wǎng)絡(luò)爬蟲(chóng),比較有名的比如北京大學(xué)網(wǎng)絡(luò)實(shí)驗(yàn)室研究的北大天網(wǎng)和上海交通大學(xué)設(shè)計(jì)的lgoo系統(tǒng)。北大天網(wǎng)最初是一個(gè)集中式爬蟲(chóng),后來(lái)轉(zhuǎn)變?yōu)榉植际脚老x(chóng)。作為一個(gè)面向局域網(wǎng)的分布式網(wǎng)絡(luò)爬蟲(chóng)系統(tǒng),北大天網(wǎng)的抓取數(shù)和穩(wěn)定性都比以前提高了許多。主節(jié)點(diǎn)進(jìn)行任務(wù)分配,從節(jié)點(diǎn)負(fù)責(zé)采集,并采用廣度優(yōu)先策略進(jìn)行抓取[9]。而上海交通大學(xué)所研究的lgoo系統(tǒng)則可以通過(guò)跨局域網(wǎng)進(jìn)行爬蟲(chóng)節(jié)點(diǎn)部署,采用二級(jí)哈希映射算法進(jìn)行任務(wù)的分配工作,并能保證各個(gè)爬蟲(chóng)節(jié)點(diǎn)的負(fù)載均衡。是一個(gè)基于網(wǎng)格服務(wù)的分布式網(wǎng)絡(luò)爬蟲(chóng)系統(tǒng)[10]。綜上所述,目前國(guó)內(nèi)外科研機(jī)構(gòu)對(duì)于網(wǎng)絡(luò)爬蟲(chóng)的進(jìn)行了大量的研究,并在服務(wù)器負(fù)載能力、磁盤(pán)訪(fǎng)問(wèn)時(shí)間、冷門(mén)網(wǎng)絡(luò)資源訪(fǎng)問(wèn)頻率等方面做了相應(yīng)的研究與優(yōu)化,但是針對(duì)目前日益增長(zhǎng)的網(wǎng)民量,研究制作一個(gè)針對(duì)于特定類(lèi)別網(wǎng)站的網(wǎng)絡(luò)爬蟲(chóng)并通過(guò)友好的可視化界面來(lái)顯示相應(yīng)內(nèi)容也變得尤為重要,針對(duì)這兩個(gè)部分,本課題將研究開(kāi)發(fā)一套適用于新浪等新聞網(wǎng)站的爬蟲(chóng)系統(tǒng),分析網(wǎng)站結(jié)構(gòu),采集網(wǎng)站的分類(lèi)信息資源,并對(duì)采集結(jié)果進(jìn)行保存以及提供一個(gè)友好的可視化界面來(lái)供用戶(hù)使用。通過(guò)這樣一套系統(tǒng),可以實(shí)現(xiàn)對(duì)特定類(lèi)別信息的爬取與存儲(chǔ),使用戶(hù)可以更好的獲取相應(yīng)的內(nèi)容,并通過(guò)友好的可視化界面,使用戶(hù)可以更加方便簡(jiǎn)單的去使用本系統(tǒng)。1.3本課題研究?jī)?nèi)容和研究步驟1.3.1研究?jī)?nèi)容本課題基于目前網(wǎng)絡(luò)爬蟲(chóng)的研究背景以及國(guó)內(nèi)外的研究現(xiàn)狀,研究開(kāi)發(fā)一套適用于新浪等新聞網(wǎng)站的爬蟲(chóng)系統(tǒng)。本課題的主要研究?jī)?nèi)容如下:(1)爬蟲(chóng)技術(shù)研究研究爬蟲(chóng)的相關(guān)技術(shù)。根據(jù)國(guó)內(nèi)外現(xiàn)狀的研究,重點(diǎn)研究分布式爬蟲(chóng)的可伸縮性、性能和有效性、可擴(kuò)展性以及分布式爬蟲(chóng)的爬取策略、工作分配模式以及節(jié)點(diǎn)部署等相關(guān)內(nèi)容。(2)開(kāi)發(fā)框架及技術(shù)研究研究分布式爬蟲(chóng)系統(tǒng)所用的框架以及開(kāi)發(fā)技術(shù)。對(duì)各類(lèi)可開(kāi)發(fā)語(yǔ)言進(jìn)行分析比較。分析各類(lèi)框架的優(yōu)缺點(diǎn)。包括Python的Scrapy庫(kù),Requests庫(kù),分析其優(yōu)缺點(diǎn),討論其適用性。1.3.2研究步驟本項(xiàng)目在深入學(xué)習(xí)分布式網(wǎng)絡(luò)爬蟲(chóng)的相關(guān)技術(shù),分析新浪等典型新聞網(wǎng)站的結(jié)構(gòu)基礎(chǔ)上,根據(jù)系統(tǒng)功能需求,采用Python語(yǔ)言進(jìn)行開(kāi)發(fā),使用Scrapy與Django框架進(jìn)行系統(tǒng)搭建,采用Xpath技術(shù)對(duì)數(shù)據(jù)進(jìn)行提取解析,通過(guò)Redis和MongoDB數(shù)據(jù)庫(kù)來(lái)完成分布式和數(shù)據(jù)的存儲(chǔ),實(shí)現(xiàn)一套適用于新浪等新聞網(wǎng)站的方便用戶(hù)快速獲取信息的分布式爬蟲(chóng)系統(tǒng)。本課題采用的研究步驟如下所示:(1)總體結(jié)構(gòu)根據(jù)目前的國(guó)內(nèi)外現(xiàn)狀分析以及用戶(hù)需求調(diào)研,確定系統(tǒng)的功能模塊為爬蟲(chóng)模塊;數(shù)據(jù)清洗模塊;數(shù)據(jù)存儲(chǔ)模塊;數(shù)據(jù)顯示模塊以及數(shù)據(jù)統(tǒng)計(jì)分析模塊。并根據(jù)用戶(hù)的需求,對(duì)系統(tǒng)進(jìn)行相應(yīng)的功能設(shè)計(jì):爬蟲(chóng)模塊:要求分析網(wǎng)站結(jié)構(gòu),實(shí)現(xiàn)爬蟲(chóng)策略、內(nèi)容數(shù)據(jù)字段設(shè)計(jì)和增量爬取、去重;數(shù)據(jù)清洗模塊:要求能夠?qū)Σ杉Y(jié)果因格式等原因引起的亂碼進(jìn)行清洗與處理;數(shù)據(jù)存儲(chǔ)模塊:實(shí)現(xiàn)抓取字段設(shè)計(jì)和數(shù)據(jù)存儲(chǔ)功能;數(shù)據(jù)顯示模塊:實(shí)現(xiàn)數(shù)據(jù)的可視化分類(lèi)顯示;數(shù)據(jù)統(tǒng)計(jì)分析模塊:能夠針對(duì)采集結(jié)果進(jìn)行分析統(tǒng)計(jì)。(2)模塊實(shí)現(xiàn)系統(tǒng)方面選擇使用Python語(yǔ)言進(jìn)行開(kāi)發(fā),Python的優(yōu)勢(shì)在于程序編寫(xiě)簡(jiǎn)潔快速,代碼開(kāi)發(fā)效率高,且擁有大量?jī)?yōu)質(zhì)的文檔與第三方庫(kù),非常方便使用??蚣芊矫孢x擇Scrapy框架,Scrapy是一套基于Twisted的異步處理框架,是一個(gè)通過(guò)Python實(shí)現(xiàn)的爬蟲(chóng)框架,擁有強(qiáng)大的統(tǒng)計(jì)能力,能在不同的url上爬行,并且支持shell方式,方便進(jìn)行獨(dú)立調(diào)試。針對(duì)爬蟲(chóng)模塊,使用Xpath技術(shù)對(duì)下載的網(wǎng)頁(yè)進(jìn)行提取解析;數(shù)據(jù)庫(kù)方面使用Redis數(shù)據(jù)庫(kù)做分布式;使用MongoDb數(shù)據(jù)庫(kù)做數(shù)據(jù)存儲(chǔ)。本系統(tǒng)通過(guò)scrapy框架,對(duì)爬蟲(chóng)進(jìn)行命名,并設(shè)定初始爬取頁(yè)面,之后在item.py中定義本系統(tǒng)所需要的字段。字段定義完成后通過(guò)Xpath技術(shù)對(duì)頁(yè)面進(jìn)行提取解析,并根據(jù)設(shè)計(jì)好的字段進(jìn)行相應(yīng)的爬取。并將爬取好的數(shù)據(jù)存入MongoDb中。(3)測(cè)試對(duì)所設(shè)計(jì)的系統(tǒng)進(jìn)行相應(yīng)的黑盒測(cè)試與白盒測(cè)試。所用測(cè)試技術(shù)包括單元測(cè)試、系統(tǒng)測(cè)試、集成測(cè)試、壓力測(cè)試等。并根據(jù)測(cè)試結(jié)果對(duì)系統(tǒng)進(jìn)行相應(yīng)的完善。1.4論文組織結(jié)構(gòu)本論文章節(jié)組織框架具體如下:第一章,緒論。對(duì)本文的研究背景、國(guó)內(nèi)外現(xiàn)狀及研究目的進(jìn)行了概述。第二章,開(kāi)發(fā)工具及相關(guān)技術(shù)。對(duì)平臺(tái)開(kāi)發(fā)所用的技術(shù)及其功能進(jìn)行初步的介紹,并對(duì)本系統(tǒng)所涉及的技術(shù)做相關(guān)說(shuō)明。第三章,系統(tǒng)分析。明確本系統(tǒng)的設(shè)計(jì)目標(biāo),對(duì)可行度和用戶(hù)需求進(jìn)行了分析。第四章,系統(tǒng)設(shè)計(jì)。就平臺(tái)架構(gòu)、平臺(tái)功能結(jié)構(gòu)、數(shù)據(jù)庫(kù)表及數(shù)據(jù)庫(kù)概念模型進(jìn)行了設(shè)計(jì)。第五章,系統(tǒng)實(shí)現(xiàn)。通過(guò)劃分不同的角色,對(duì)不同角色的不同功能分別進(jìn)行設(shè)計(jì)與實(shí)現(xiàn),詳細(xì)描述本平臺(tái)的頁(yè)面布局及其功能實(shí)現(xiàn)的具體邏輯。第六章,系統(tǒng)測(cè)試。完成對(duì)本平臺(tái)核心模塊的測(cè)試。第七章,總結(jié)與展望。總結(jié)全文,分析本系統(tǒng)已經(jīng)打到的效果以及暴露出的漏洞,以此對(duì)未來(lái)系統(tǒng)的優(yōu)化思路進(jìn)行展望。

2開(kāi)發(fā)工具及相關(guān)技術(shù)2.1PythonPython是一種解釋型、面向?qū)ο?、?dòng)態(tài)數(shù)據(jù)類(lèi)型的高級(jí)程序設(shè)計(jì)語(yǔ)言。Python的設(shè)計(jì)具有很強(qiáng)的可讀性,具有比其他語(yǔ)言更有特色語(yǔ)法結(jié)構(gòu)的特性。它的最大的優(yōu)勢(shì)之一是豐富的庫(kù),并且在各個(gè)平臺(tái)的兼容性很好。開(kāi)發(fā)者可以通過(guò)調(diào)用這些成熟的庫(kù)來(lái)迅速編寫(xiě)程序,包括正則表達(dá)式、XML、HTML等。同時(shí)它是免費(fèi)、開(kāi)源的,兼容大量的第三方庫(kù),并且許多難以解決的問(wèn)題都可以在各個(gè)論壇例如CSDN,博客園上找到相應(yīng)的解答[11]。因此,本系統(tǒng)采用Python作為開(kāi)發(fā)最大的語(yǔ)言使用。2.2Pycharm集成開(kāi)發(fā)工具PyCharm是一種PythonIDE,帶有一整套可以幫助用戶(hù)在使用Python語(yǔ)言開(kāi)發(fā)時(shí)提高其效率的工具,比如調(diào)試、語(yǔ)法高亮、Project管理、代碼跳轉(zhuǎn)、智能提示、自動(dòng)完成、單元測(cè)試、版本控制。此外,該IDE提供了一些高級(jí)功能,以用于支持Django框架下的專(zhuān)業(yè)Web開(kāi)發(fā)。并且,PyCharm可以快速添加第三方庫(kù),在開(kāi)發(fā)過(guò)程中提供了極大的便利[12]。因此,本系統(tǒng)采用它作為開(kāi)發(fā)環(huán)境。2.3ScrapyScrapy是適用于Python的一個(gè)快速、高層次的屏幕抓取和web抓取框架,用于抓取web站點(diǎn)并從頁(yè)面中提取結(jié)構(gòu)化的數(shù)據(jù)。它最大的優(yōu)點(diǎn)在于是一個(gè)框架,開(kāi)發(fā)者可以根據(jù)自己的需求對(duì)其進(jìn)行修改,以達(dá)到自己的目的。并且Scrapy提供了很多強(qiáng)大的特性來(lái)使得爬取更為簡(jiǎn)單高效,例如HTML,XML源數(shù)據(jù)的選擇及提取支持、提供了一系列可復(fù)用的過(guò)濾器、高擴(kuò)展性等[13]。因此,本系統(tǒng)采用Scrapy作為爬蟲(chóng)框架來(lái)使用。2.4XpathXpath是一門(mén)在XML文檔中查找信息的語(yǔ)言。它包含一個(gè)標(biāo)準(zhǔn)函數(shù)庫(kù),并且含有超過(guò)100個(gè)內(nèi)建的函數(shù)。這些函數(shù)用于字符串值、數(shù)值、日期和時(shí)間比較、節(jié)點(diǎn)和QName處理、序列處理、邏輯值等。通過(guò)Xpath,可以在爬取過(guò)程中迅速提取需要爬取的信息[14]。因此,本系統(tǒng)采用Xpath進(jìn)行信息的提取。2.5Redis數(shù)據(jù)庫(kù)Redis是完全開(kāi)源的,遵守BSD協(xié)議,是一個(gè)高性能的key-value數(shù)據(jù)庫(kù)。它支持?jǐn)?shù)據(jù)的持久化,可以將內(nèi)存中的數(shù)據(jù)保存在磁盤(pán)中,重啟的時(shí)候可以再次加載進(jìn)行使用。它擁有豐富的數(shù)據(jù)類(lèi)型–Redis支持二進(jìn)制案例的Strings,Lists,Hashes,Sets及OrderedSets數(shù)據(jù)類(lèi)型操作。并且它的性能極高,讀的速度可達(dá)到110000次/s,寫(xiě)的速度可達(dá)到81000次/s[15]。因此,本系統(tǒng)采用Redis數(shù)據(jù)庫(kù)進(jìn)行分布式的搭建。2.6MongoDB數(shù)據(jù)庫(kù)MongoDB是一個(gè)基于分布式文件存儲(chǔ)的數(shù)據(jù)庫(kù)。它是一個(gè)面向文檔存儲(chǔ)的數(shù)據(jù)庫(kù),操作起來(lái)比較簡(jiǎn)單和容易,支持豐富的查詢(xún)表達(dá)式。查詢(xún)指令使用JSON形式的標(biāo)記,可輕易查詢(xún)文檔中內(nèi)嵌的對(duì)象及數(shù)組,支持各種編程語(yǔ)言:RUBY,PYTHON,JAVA,C++,PHP,C#等多種語(yǔ)言。并且允許在服務(wù)端執(zhí)行腳本,可以用Javascript編寫(xiě)某個(gè)函數(shù),直接在服務(wù)端執(zhí)行,也可以把函數(shù)的定義存儲(chǔ)在服務(wù)端,下次直接進(jìn)行調(diào)用。因此,本系統(tǒng)采用MongoDB數(shù)據(jù)庫(kù)進(jìn)行數(shù)據(jù)的存儲(chǔ)。2.7本章小結(jié)本章主要是對(duì)本系統(tǒng)的開(kāi)發(fā)工具以及所用到的技術(shù)進(jìn)行了簡(jiǎn)單介紹,首先介紹了開(kāi)發(fā)工具Pycharm,然后介紹了系統(tǒng)開(kāi)發(fā)所用語(yǔ)言Python,包括基于Python開(kāi)發(fā)的Scrapy爬蟲(chóng)框架,Xpath技術(shù)等。最后對(duì)分布式以及數(shù)據(jù)存儲(chǔ)所用的MongoDB數(shù)據(jù)庫(kù)和Redis數(shù)據(jù)庫(kù)進(jìn)行了相關(guān)介紹。3系統(tǒng)分析3.1系統(tǒng)設(shè)計(jì)目標(biāo)隨著互聯(lián)網(wǎng)時(shí)代的快速發(fā)展,人們獲取信息的方式逐漸多樣化。在網(wǎng)絡(luò)的快速普及下,越來(lái)越多的人都會(huì)選擇從互聯(lián)網(wǎng)上獲取自己所需要的信息。但是,隨著互聯(lián)網(wǎng)的高速發(fā)展下,互聯(lián)網(wǎng)上的信息也存在著數(shù)量繁多,范圍廣泛,重復(fù)率過(guò)高等問(wèn)題。由于目前的搜索引擎往往通過(guò)模糊匹配的方式來(lái)顯示與用戶(hù)搜索內(nèi)容所相關(guān)的信息,導(dǎo)致部分用戶(hù)無(wú)法通過(guò)搜索引擎快速的得到他們所需求的特定內(nèi)容[2]。對(duì)于部分用戶(hù)的一些具體化、精細(xì)化的需求,網(wǎng)絡(luò)爬蟲(chóng)應(yīng)運(yùn)而生。以新浪等新聞?lì)惥W(wǎng)站的用戶(hù)作為服務(wù)對(duì)象,針對(duì)現(xiàn)在網(wǎng)絡(luò)爬蟲(chóng)中存在的問(wèn)題,開(kāi)發(fā)一套基于Scrapy的網(wǎng)絡(luò)爬蟲(chóng),方便用戶(hù)對(duì)新聞?lì)惖男畔⑦M(jìn)行獲取,節(jié)省用戶(hù)的時(shí)間,提高新聞?lì)愋畔⒌墨@取效率。3.2系統(tǒng)可行性分析3.2.1技術(shù)可行性開(kāi)發(fā)系統(tǒng)采用Windows10操作系統(tǒng),為了讓本系統(tǒng)可以跨平臺(tái)進(jìn)行搭建,系統(tǒng)開(kāi)發(fā)選擇Python體系。爬蟲(chóng)框架采用Scrapy框架進(jìn)行搭建,利用眾多技術(shù)進(jìn)行開(kāi)發(fā),例如Xpath、HTML等。數(shù)據(jù)庫(kù)采用Redis和MongoDB,Redis做分布式,MongoDB做數(shù)據(jù)的存儲(chǔ)。本系統(tǒng)開(kāi)發(fā)的是一套分布式爬蟲(chóng)系統(tǒng),滿(mǎn)足給關(guān)系型數(shù)據(jù)庫(kù)的使用條件。所以采用Redis和MongoDB作為本系統(tǒng)的數(shù)據(jù)庫(kù)。3.2.2經(jīng)濟(jì)可行性在整個(gè)系統(tǒng)的實(shí)現(xiàn)過(guò)程中,設(shè)計(jì)與開(kāi)發(fā)成本極低,投入的開(kāi)發(fā)成員與物理?xiàng)l件極少。軟件方面,所采用的技術(shù)和軟件大部分為免費(fèi)開(kāi)源版本,因此整套系統(tǒng)的開(kāi)發(fā)成本幾乎為0;硬件方面,個(gè)人主機(jī)完全滿(mǎn)足本系統(tǒng)的開(kāi)發(fā)需求,硬件配置方面建議,運(yùn)行內(nèi)存滿(mǎn)足8G及以上,處理器方面建議I5及以上。3.2.3操作可行性為了使用戶(hù)在操作該系統(tǒng)時(shí)方便、快捷且容易上手。在閱讀相關(guān)資料后,針對(duì)同類(lèi)系統(tǒng)在使用過(guò)程中存在的一些問(wèn)題,對(duì)該系統(tǒng)的設(shè)計(jì)進(jìn)行一些相應(yīng)的處理。頁(yè)面采用極簡(jiǎn)思想進(jìn)行設(shè)計(jì)。降低頁(yè)面操作復(fù)雜度,使頁(yè)面簡(jiǎn)潔直觀,方便用戶(hù)使用。通過(guò)將查詢(xún)部分直接通過(guò)NOSQL語(yǔ)句進(jìn)行處理,提高頁(yè)面響應(yīng)速度,提高用戶(hù)使用體驗(yàn)。本系統(tǒng)的目標(biāo)在于讓用戶(hù)能夠快速獲取到自己所需要的信息,所以在頁(yè)面設(shè)計(jì)上要求能夠直觀的顯示新聞內(nèi)容。通過(guò)顯示分類(lèi)來(lái)引導(dǎo)用戶(hù),且不需要用戶(hù)提供任何信息,做到每個(gè)人都可以便利地去使用本系統(tǒng)。3.3功能需求分析本系統(tǒng)重點(diǎn)在于對(duì)新聞?lì)惥W(wǎng)站的爬取,根據(jù)特殊字段的設(shè)計(jì)來(lái)爬取所需要的內(nèi)容,過(guò)濾掉無(wú)用內(nèi)容。并通過(guò)redis數(shù)據(jù)庫(kù)進(jìn)行分布式的部署,使其他機(jī)器也可以對(duì)爬取到的鏈接進(jìn)行處理,爬取到相應(yīng)數(shù)據(jù)并上傳至redis,再將redis上的數(shù)據(jù)存入mongoDB數(shù)據(jù)庫(kù)來(lái)實(shí)現(xiàn)數(shù)據(jù)的保存。最后將數(shù)據(jù)庫(kù)的內(nèi)容顯示到網(wǎng)站上,實(shí)現(xiàn)可視化以供用戶(hù)們使用。根據(jù)上述系統(tǒng)的功能需求分析,設(shè)計(jì)系統(tǒng)整體功能模塊圖,如圖3-1所示。圖3-1系統(tǒng)功能結(jié)構(gòu)圖從圖3-1中可看出,本系統(tǒng)分為爬蟲(chóng)系統(tǒng)和顯示系統(tǒng)2個(gè)子系統(tǒng),其中爬蟲(chóng)系統(tǒng)主要實(shí)現(xiàn)數(shù)據(jù)采集、數(shù)據(jù)清洗、數(shù)據(jù)存儲(chǔ)功能。顯示系統(tǒng)主要實(shí)現(xiàn)數(shù)據(jù)顯示、數(shù)據(jù)統(tǒng)計(jì)分析功能(1)數(shù)據(jù)采集模塊該模塊重點(diǎn)在于對(duì)新浪網(wǎng)的網(wǎng)站結(jié)構(gòu)進(jìn)行分析,實(shí)現(xiàn)爬蟲(chóng)策略,對(duì)內(nèi)容數(shù)據(jù)字段進(jìn)行設(shè)計(jì),實(shí)現(xiàn)數(shù)據(jù)的增量爬取、去重。通過(guò)Scrpay框架,實(shí)現(xiàn)對(duì)新浪等新聞?lì)惥W(wǎng)站的爬取。(2)數(shù)據(jù)清洗模塊該模塊重點(diǎn)在于通過(guò)對(duì)特殊字段的設(shè)計(jì),過(guò)濾掉不需要的內(nèi)容,只爬取所需要的新聞內(nèi)容,降低爬蟲(chóng)系統(tǒng)的負(fù)荷。通過(guò)Panda函數(shù)對(duì)數(shù)據(jù)進(jìn)行清洗和處理,并對(duì)對(duì)采集結(jié)果進(jìn)行格式轉(zhuǎn)換。(3)數(shù)據(jù)存儲(chǔ)模塊該模塊重點(diǎn)在于對(duì)爬取到的數(shù)據(jù)進(jìn)行存儲(chǔ)。根據(jù)爬蟲(chóng)模塊爬取到的數(shù)據(jù),將url存儲(chǔ)在Redis數(shù)據(jù)庫(kù)中供爬蟲(chóng)機(jī)器使用,爬蟲(chóng)機(jī)器通過(guò)redis數(shù)據(jù)庫(kù)中的url進(jìn)行網(wǎng)站的爬取,實(shí)現(xiàn)分布式爬取技術(shù),并將爬取到的數(shù)據(jù)存儲(chǔ)進(jìn)本地mongoDB數(shù)據(jù)庫(kù)中實(shí)現(xiàn)數(shù)據(jù)的本地存儲(chǔ)。(4)數(shù)據(jù)統(tǒng)計(jì)分析模塊該模塊重點(diǎn)在于對(duì)爬取到的數(shù)據(jù)進(jìn)行分析統(tǒng)計(jì),將各個(gè)類(lèi)別的新聞進(jìn)行分類(lèi)。(5)數(shù)據(jù)顯示模塊該模塊重點(diǎn)在于實(shí)現(xiàn)數(shù)據(jù)的可視化分類(lèi)顯示,顯示各個(gè)新聞的標(biāo)題以及詳細(xì)內(nèi)容。3.4本章小結(jié)本章對(duì)本系統(tǒng)的可行性分析以及需求分析進(jìn)行了介紹。可行性分析從技術(shù)可行性、經(jīng)濟(jì)可行性、操作可行性上對(duì)本系統(tǒng)進(jìn)行介紹。需求分析從整個(gè)系統(tǒng)功能模塊出發(fā),分析了該系統(tǒng)所要完成的模塊以及各個(gè)模塊的功能,確保在開(kāi)發(fā)過(guò)程中能夠滿(mǎn)足用戶(hù)需求。4系統(tǒng)設(shè)計(jì)4.1系統(tǒng)總體設(shè)計(jì)4.2.1系統(tǒng)邏輯設(shè)計(jì)通過(guò)功能需求分析可知,本系統(tǒng)是一個(gè)從互聯(lián)網(wǎng)上對(duì)新聞?lì)惥W(wǎng)站的各類(lèi)別新聞進(jìn)行抓取,并保存在數(shù)據(jù)庫(kù)中的一個(gè)系統(tǒng)。本系統(tǒng)邏輯結(jié)構(gòu)如圖4-1所示。圖4-1系統(tǒng)邏輯結(jié)構(gòu)4.2.2系統(tǒng)工作流程本系統(tǒng)無(wú)需登錄,直接打開(kāi)頁(yè)面即可訪(fǎng)問(wèn)所爬取到的所有數(shù)據(jù),爬取結(jié)束后會(huì)將爬取到的具體數(shù)據(jù)內(nèi)容顯示在界面,其工作流程如圖4-2所示:圖4-2系統(tǒng)工作流程4.2系統(tǒng)功能模塊4.2.1數(shù)據(jù)采集模塊本系統(tǒng)選取的網(wǎng)站為新浪網(wǎng),初始URL為/guide/。在確定好URL后,通過(guò)Python的Scrapy模塊向網(wǎng)站發(fā)送請(qǐng)求下頁(yè)面,用以獲得網(wǎng)頁(yè)源代碼的相關(guān)信息。獲得源碼信息后,通過(guò)特定字段的設(shè)計(jì)與Xpath技術(shù)過(guò)濾掉不需要的內(nèi)容,只采集特定的內(nèi)容字段。4.2.2數(shù)據(jù)清洗模塊在對(duì)網(wǎng)頁(yè)的指定數(shù)據(jù)進(jìn)行采集后,本系統(tǒng)通過(guò)數(shù)據(jù)清洗模塊對(duì)數(shù)據(jù)進(jìn)行清洗,主要使用的方法為URL去重。本系統(tǒng)URL去重的主要實(shí)現(xiàn)思路為:通過(guò)數(shù)據(jù)庫(kù)的創(chuàng)建將已爬取到的URL保存下來(lái),當(dāng)新的URL被爬取時(shí),通過(guò)與數(shù)據(jù)庫(kù)中的URL對(duì)比來(lái)判斷是否爬取到相同的頁(yè)面。如果相同,就將該URL丟棄,繼續(xù)爬取下一個(gè)并進(jìn)行對(duì)比;如果不同,就將該URL保存下來(lái),加入隊(duì)列中供爬蟲(chóng)系統(tǒng)進(jìn)行解析。4.3數(shù)據(jù)庫(kù)設(shè)計(jì)數(shù)據(jù)庫(kù)作為存儲(chǔ)內(nèi)容的工具,是系統(tǒng)的核心部分。本系統(tǒng)采用MongoDB數(shù)據(jù)庫(kù)對(duì)數(shù)據(jù)庫(kù)進(jìn)行設(shè)計(jì),通過(guò)設(shè)計(jì)好的字段直接將爬取到的相應(yīng)字段的內(nèi)容存儲(chǔ)進(jìn)MongoDB數(shù)據(jù)庫(kù)中。為了提高信息的提取性能,應(yīng)該合理的對(duì)數(shù)據(jù)庫(kù)進(jìn)行設(shè)計(jì)。本系統(tǒng)的具體思路是通過(guò)Python中的pymongo模塊對(duì)MongoDB數(shù)據(jù)庫(kù)進(jìn)行操作。其執(zhí)行過(guò)程如圖4-3所示:圖4-3數(shù)據(jù)庫(kù)操作過(guò)程本系統(tǒng)創(chuàng)建的數(shù)據(jù)庫(kù)名為HN,在該數(shù)據(jù)庫(kù)下創(chuàng)建了用于保存數(shù)據(jù)的集合HN2,集合HN2的結(jié)構(gòu)如表4-1所示:序號(hào)字段名數(shù)據(jù)類(lèi)型備注1_idobjectId唯一標(biāo)識(shí)2article_urlString文章的鏈接3article_titleString文章的標(biāo)題4article_contentString文章的內(nèi)容5parent_titleString大類(lèi)的標(biāo)題6parent_urlString大類(lèi)的鏈接7subtitleString小類(lèi)的標(biāo)題8suburlString小類(lèi)的鏈接9subpathString子類(lèi)路徑4.3本章小結(jié)本章根據(jù)需求分析中確定的功能模塊,對(duì)系統(tǒng)中的邏輯設(shè)計(jì)以及工作流程進(jìn)行了介紹,以及對(duì)數(shù)據(jù)庫(kù)的設(shè)計(jì),對(duì)數(shù)據(jù)的存儲(chǔ)進(jìn)行了相應(yīng)的介紹。5系統(tǒng)實(shí)現(xiàn)5.1爬蟲(chóng)模塊本系統(tǒng)的爬蟲(chóng)功能實(shí)現(xiàn)如圖5-1所示:圖5-1爬蟲(chóng)模塊功能實(shí)現(xiàn)流程圖5.1.1數(shù)據(jù)采集模塊本系統(tǒng)選取的網(wǎng)站為“新浪網(wǎng)”,通過(guò)分析該網(wǎng)站結(jié)構(gòu),對(duì)頁(yè)面進(jìn)行相應(yīng)的爬取。具體爬取手段為通過(guò)Xpath技術(shù)和正則表達(dá)式獲取大類(lèi)的標(biāo)題以及鏈接,接下來(lái)獲取小類(lèi)的標(biāo)題和鏈接。然后爬取所有大類(lèi)下的連接以及小類(lèi)下的鏈接,判斷該小類(lèi)屬于哪一個(gè)大類(lèi),對(duì)所有新聞進(jìn)行具體分類(lèi),最后處理爬取到的所有鏈接,獲得爬取內(nèi)容。具體實(shí)現(xiàn)頁(yè)面如圖5-2所示:圖5-2數(shù)據(jù)采集模塊實(shí)現(xiàn)5.2.2數(shù)據(jù)清洗模塊在爬取到頁(yè)面的特定內(nèi)容后,本系統(tǒng)通過(guò)URL去重的方式對(duì)數(shù)據(jù)進(jìn)行清洗,通過(guò)創(chuàng)建數(shù)據(jù)庫(kù)采集URL隊(duì)列,將新爬取的URL與隊(duì)列中的URL進(jìn)行對(duì)比來(lái)判斷頁(yè)面是否重復(fù),如果重復(fù),則丟棄該URL,繼續(xù)爬取下一個(gè),若不重復(fù),則將該URL放入U(xiǎn)RL隊(duì)列中以供處理。頁(yè)面URL隊(duì)列如圖5-3所示:圖5-3數(shù)據(jù)清洗模塊實(shí)現(xiàn)5.2.3數(shù)據(jù)存儲(chǔ)模塊通過(guò)分析網(wǎng)站結(jié)構(gòu),設(shè)計(jì)內(nèi)容字段對(duì)新聞網(wǎng)站進(jìn)行爬取,對(duì)爬取到的結(jié)果進(jìn)行清洗與處理并將最終獲得的內(nèi)容存儲(chǔ)進(jìn)本地?cái)?shù)據(jù)庫(kù)中。數(shù)據(jù)存儲(chǔ)模塊采用MongoDB數(shù)據(jù)庫(kù)進(jìn)行存儲(chǔ),采用Python中的pymongo模塊對(duì)MongoDB數(shù)據(jù)庫(kù)進(jìn)行操作,通過(guò)設(shè)計(jì)好的字段直接將爬取到的相應(yīng)字段的內(nèi)容存儲(chǔ)進(jìn)MongoDB數(shù)據(jù)庫(kù)中。存儲(chǔ)內(nèi)容如圖5-4所示:圖5-4爬取內(nèi)容界面5.2可視化模塊5.2.1頁(yè)面統(tǒng)計(jì)展示模塊通過(guò)jsp對(duì)爬取到的各類(lèi)別的內(nèi)容數(shù)進(jìn)行統(tǒng)計(jì),并根據(jù)所有分類(lèi)進(jìn)行索引的創(chuàng)建,顯示在頁(yè)面的左側(cè)邊欄內(nèi)。通過(guò)點(diǎn)擊分類(lèi),顯示該類(lèi)別內(nèi)容的總數(shù)以及對(duì)應(yīng)的文章標(biāo)題。具體統(tǒng)計(jì)展示如圖5-5所示圖5-5頁(yè)面統(tǒng)計(jì)展示界面5.2.2新聞內(nèi)容模塊新聞內(nèi)容模塊主要負(fù)責(zé)新聞的詳細(xì)顯示,通過(guò)簡(jiǎn)潔的界面方便用戶(hù)進(jìn)行新聞的查看。通過(guò)點(diǎn)擊新聞標(biāo)題,跳轉(zhuǎn)至對(duì)應(yīng)的詳細(xì)內(nèi)容頁(yè)面,通過(guò)點(diǎn)擊返回上一級(jí)即可返回至標(biāo)題頁(yè)面。內(nèi)容顯示頁(yè)面如圖5-6所示。圖5-6新聞詳細(xì)內(nèi)容頁(yè)面5.3本章小結(jié)本章主要對(duì)系統(tǒng)的實(shí)現(xiàn)過(guò)程進(jìn)行了介紹,首先對(duì)爬蟲(chóng)模塊進(jìn)行了介紹,然后對(duì)系統(tǒng)的可視化功能進(jìn)行了介紹,包括分類(lèi)功能的實(shí)現(xiàn),各個(gè)分類(lèi)數(shù)據(jù)量統(tǒng)計(jì)的實(shí)現(xiàn)以及新聞詳細(xì)內(nèi)容的實(shí)現(xiàn)。6系統(tǒng)測(cè)試6.1測(cè)試目的軟件測(cè)試是人工的,或通過(guò)使用工具來(lái)自動(dòng)的運(yùn)行被測(cè)軟件系統(tǒng),或靜態(tài)檢查被測(cè)軟件系統(tǒng)的過(guò)程,其目的在于校驗(yàn)被測(cè)軟件系統(tǒng)是否滿(mǎn)足需求,或要弄清楚實(shí)際的系統(tǒng)輸出與預(yù)期系統(tǒng)輸出之間的差異。測(cè)試的目的在于及時(shí)發(fā)現(xiàn)軟件中存在的錯(cuò)誤或者缺陷,通過(guò)修復(fù)問(wèn)題與缺陷使程序能夠符合設(shè)計(jì)要求。6.2測(cè)試方法本系統(tǒng)采用黑盒測(cè)試與白盒測(cè)試對(duì)系統(tǒng)進(jìn)行測(cè)試,采用的測(cè)試方法有單元測(cè)試、集成測(cè)試、系統(tǒng)測(cè)試。在軟件的開(kāi)發(fā)過(guò)程中,會(huì)對(duì)每個(gè)完成的功能模塊進(jìn)行單元測(cè)試,通過(guò)系統(tǒng)實(shí)際輸出與預(yù)期輸出的對(duì)比來(lái)判斷該模塊是否正確。當(dāng)各個(gè)單元的測(cè)試完成后,需要對(duì)單元進(jìn)行集成,并進(jìn)行相應(yīng)的集成測(cè)試,通過(guò)集成測(cè)試來(lái)檢查各個(gè)單元間的集成是否符合需求。集成測(cè)試完成后要對(duì)系統(tǒng)進(jìn)行部署,并進(jìn)行系統(tǒng)測(cè)試,來(lái)判斷該系統(tǒng)在各類(lèi)環(huán)境下能否正常運(yùn)行。整個(gè)系統(tǒng)完成開(kāi)發(fā)后,則需要通過(guò)黑盒測(cè)試法來(lái)對(duì)系統(tǒng)的整個(gè)功能進(jìn)行測(cè)試。黑盒測(cè)試相當(dāng)于把系統(tǒng)看作一個(gè)黑盒子,不考慮其內(nèi)部邏輯結(jié)構(gòu)以及代碼。只通過(guò)對(duì)程序輸入來(lái)獲得輸出,并將實(shí)際輸出與預(yù)期輸出進(jìn)行比較,來(lái)判斷該功能是否符合需求,從而發(fā)現(xiàn)系統(tǒng)中存在的錯(cuò)誤與缺陷。6.3測(cè)試用例可視化測(cè)試。測(cè)試系統(tǒng)的可視化模塊能否正常運(yùn)行以及能否達(dá)到預(yù)期需求。測(cè)試數(shù)據(jù)見(jiàn)表6-1。表6-1可視化測(cè)試用例表用例編號(hào)用例名稱(chēng)測(cè)試過(guò)程期望結(jié)果實(shí)際結(jié)果結(jié)果對(duì)比001收藏分類(lèi)顯示點(diǎn)擊收藏分類(lèi)顯示收藏分類(lèi)下的二級(jí)分類(lèi)與收藏類(lèi)新聞顯示收藏分類(lèi)下的二級(jí)分類(lèi)與收藏類(lèi)新聞符合期望002圖片分類(lèi)顯示點(diǎn)擊圖片分類(lèi)顯示圖片分類(lèi)下的二級(jí)分類(lèi)與圖片類(lèi)新聞顯示圖片分類(lèi)下的二級(jí)分類(lèi)與圖片類(lèi)新聞符合期望003教育分類(lèi)顯示點(diǎn)擊教育分類(lèi)顯示教育分類(lèi)下的二級(jí)分類(lèi)與教育類(lèi)新聞顯示教育分類(lèi)下的二級(jí)分類(lèi)與教育類(lèi)新聞符合期望004旅游分類(lèi)顯示點(diǎn)擊旅游分類(lèi)顯示旅游分類(lèi)下的二級(jí)分類(lèi)與旅游類(lèi)新聞顯示旅游分類(lèi)下的二級(jí)分類(lèi)與旅游類(lèi)新聞符合期望005游戲分類(lèi)顯示點(diǎn)擊游戲分類(lèi)顯示游戲分類(lèi)下的二級(jí)分類(lèi)與游戲類(lèi)新聞顯示游戲分類(lèi)下的二級(jí)分類(lèi)與游戲類(lèi)新聞符合期望006科技分類(lèi)顯示點(diǎn)擊科技分類(lèi)顯示科技分類(lèi)下的二級(jí)分類(lèi)與科技類(lèi)新聞顯示科技分類(lèi)下的二級(jí)分類(lèi)與科技類(lèi)新聞符合期望007佛學(xué)分類(lèi)顯示點(diǎn)擊佛學(xué)分類(lèi)顯示佛學(xué)分類(lèi)下的二級(jí)分類(lèi)與佛學(xué)類(lèi)新聞顯示佛學(xué)分類(lèi)下的二級(jí)分類(lèi)與佛學(xué)類(lèi)新聞符合期望008女性分類(lèi)顯示點(diǎn)擊女性分類(lèi)顯示女性分類(lèi)下的二級(jí)分類(lèi)與女性類(lèi)新聞顯示女性分類(lèi)下的二級(jí)分類(lèi)與女性類(lèi)新聞符合期望009時(shí)尚分類(lèi)顯示點(diǎn)擊時(shí)尚分類(lèi)顯示時(shí)尚分類(lèi)下的二級(jí)分類(lèi)與時(shí)尚類(lèi)新聞顯示時(shí)尚分類(lèi)下的二級(jí)分類(lèi)與時(shí)尚類(lèi)新聞符合期望010拍賣(mài)分類(lèi)顯示點(diǎn)擊收藏分類(lèi)下的拍賣(mài)顯示拍賣(mài)類(lèi)新聞的標(biāo)題顯示拍賣(mài)類(lèi)新聞的標(biāo)題符合期望011外語(yǔ)分類(lèi)顯示點(diǎn)擊教育分類(lèi)下的外語(yǔ)顯示外語(yǔ)類(lèi)新聞的標(biāo)題顯示外語(yǔ)類(lèi)新聞的標(biāo)題符合期望012會(huì)計(jì)分類(lèi)顯示點(diǎn)擊教育分類(lèi)下的會(huì)計(jì)顯示會(huì)計(jì)類(lèi)新聞的標(biāo)題顯示會(huì)計(jì)類(lèi)新聞的標(biāo)題符合期望013考研分類(lèi)顯示點(diǎn)擊教育分類(lèi)下的考研顯示考研類(lèi)新聞的標(biāo)題顯示考研類(lèi)新聞的標(biāo)題符合期望014解夢(mèng)分類(lèi)顯示點(diǎn)擊星座分類(lèi)下的解夢(mèng)顯示解夢(mèng)類(lèi)新聞的標(biāo)題顯示解夢(mèng)類(lèi)新聞的標(biāo)題符合期望015早教分類(lèi)顯示點(diǎn)擊育兒分類(lèi)下的早教顯示早教類(lèi)新聞的標(biāo)題顯示早教類(lèi)新聞的標(biāo)題符合期望016基金分類(lèi)顯示點(diǎn)擊財(cái)經(jīng)分類(lèi)下的基金顯示基金類(lèi)新聞的標(biāo)題顯示基金類(lèi)新聞的標(biāo)題符合期望017股票分類(lèi)顯示點(diǎn)擊股票分類(lèi)下的拍賣(mài)顯示股票類(lèi)新聞的標(biāo)題顯示股票類(lèi)新聞的標(biāo)題符合期望018黃金分類(lèi)顯示點(diǎn)擊財(cái)經(jīng)分類(lèi)下的黃金顯示黃金類(lèi)新聞的標(biāo)題顯示黃金類(lèi)新聞的標(biāo)題符合期望019詳細(xì)內(nèi)容顯示點(diǎn)擊新聞標(biāo)題顯示新聞詳細(xì)內(nèi)容顯示新聞詳細(xì)內(nèi)容符合期望6.4本章小結(jié)本章主要對(duì)系統(tǒng)的功能進(jìn)行了詳細(xì)測(cè)試,通過(guò)對(duì)期望輸出與實(shí)際輸出的對(duì)比,確定本系統(tǒng)的功能在測(cè)試的過(guò)程中沒(méi)有發(fā)現(xiàn)問(wèn)題,目前的業(yè)務(wù)邏輯可以實(shí)現(xiàn)本系統(tǒng)所需要完成的功能。網(wǎng)頁(yè)顯示直觀,用戶(hù)可以通過(guò)簡(jiǎn)單的點(diǎn)擊,獲取到想要的新聞內(nèi)容。7總結(jié)與展望7.1總結(jié)隨著互聯(lián)網(wǎng)的快速發(fā)展,越來(lái)越多的人通過(guò)互聯(lián)網(wǎng)獲取每日新聞內(nèi)容。但是,隨著互聯(lián)網(wǎng)的高速發(fā)展下,互聯(lián)網(wǎng)上的信息也存在著數(shù)量繁多,范圍廣泛,重復(fù)率過(guò)高等問(wèn)題。由于目前的搜索引擎往往通過(guò)模糊匹配的方式來(lái)顯示與用戶(hù)搜索內(nèi)容所相關(guān)的信息,導(dǎo)致部分用戶(hù)無(wú)法通過(guò)搜索引擎快速的得到他們所需求的特定內(nèi)容。對(duì)于部分用戶(hù)的一些具體化、精細(xì)化的需求,就需要這樣一個(gè)網(wǎng)絡(luò)爬蟲(chóng),可以實(shí)時(shí)爬取新聞?lì)惥W(wǎng)站的信息,并根據(jù)爬取的內(nèi)容將新聞進(jìn)行分類(lèi),通過(guò)分類(lèi)進(jìn)行展示并統(tǒng)計(jì)出各個(gè)分類(lèi)下的新聞總數(shù),使用戶(hù)可以快速獲取到想要的新聞內(nèi)容,大大的減少了用戶(hù)查詢(xún)新聞的時(shí)間,使整個(gè)新聞瀏覽過(guò)程變得非常便利。本文的主要工作內(nèi)容如下:(1)以爬蟲(chóng)系統(tǒng)的研究背景為起點(diǎn),對(duì)國(guó)內(nèi)外現(xiàn)狀進(jìn)行研究,借鑒一些已有的研究成果與相關(guān)文獻(xiàn),通過(guò)分析已有成果所存在的缺陷來(lái)確定研究的目標(biāo)與具體內(nèi)容。(2)對(duì)本系統(tǒng)開(kāi)發(fā)所用到的技術(shù)進(jìn)行大概介紹,并詳細(xì)分析這些技術(shù)所實(shí)現(xiàn)的功能,選擇最適合的技術(shù)進(jìn)行系統(tǒng)的開(kāi)發(fā)。(3)分別從經(jīng)濟(jì)可行性、技術(shù)可行性以及操作可行性上對(duì)本系統(tǒng)進(jìn)行分析。對(duì)爬蟲(chóng)模塊、數(shù)據(jù)清洗模塊、數(shù)據(jù)存儲(chǔ)模塊、數(shù)據(jù)統(tǒng)計(jì)分析模塊、數(shù)據(jù)顯示模塊進(jìn)行詳細(xì)分析。在此基礎(chǔ)上對(duì)本系統(tǒng)的功能與需求進(jìn)行分析,提出了本系統(tǒng)的各個(gè)模塊的功能的詳細(xì)信息。(4)在系統(tǒng)設(shè)計(jì)上采用三層架構(gòu)對(duì)本系統(tǒng)進(jìn)行搭建,并對(duì)各層的功能進(jìn)行了概要介紹。對(duì)數(shù)據(jù)庫(kù)的設(shè)計(jì)進(jìn)行了介紹。(5)在系統(tǒng)實(shí)現(xiàn)部分中,對(duì)系統(tǒng)的各個(gè)功能模塊進(jìn)行了介紹,并對(duì)各個(gè)模塊的實(shí)現(xiàn)思路以及所用到的技術(shù)進(jìn)行了簡(jiǎn)要的介紹。(6)在系統(tǒng)測(cè)試部分,通過(guò)對(duì)本系統(tǒng)的分類(lèi)顯示功能,分類(lèi)統(tǒng)計(jì)功能,標(biāo)題顯示功能以及詳細(xì)內(nèi)容顯示功能進(jìn)行測(cè)試,確認(rèn)本系統(tǒng)滿(mǎn)足設(shè)計(jì)要求,符合預(yù)期目標(biāo)。7.2展望隨著互聯(lián)網(wǎng)的快速發(fā)展,網(wǎng)站的日益增多以及用戶(hù)對(duì)于通過(guò)網(wǎng)絡(luò)獲取信息的需求,設(shè)計(jì)本系統(tǒng)來(lái)完成對(duì)新聞?lì)惥W(wǎng)站的爬取與顯示,使用戶(hù)能夠更快速的獲取到自己想要的新聞內(nèi)容。但由于本系統(tǒng)在開(kāi)發(fā)階段存在的時(shí)間以及人力方面的問(wèn)題,還存在一些不足,在后續(xù)的開(kāi)發(fā)中,計(jì)劃能夠完成以下內(nèi)容。(1)爬取網(wǎng)站擴(kuò)充對(duì)于一個(gè)新聞?lì)惥W(wǎng)站的爬蟲(chóng)系統(tǒng)來(lái)說(shuō),不應(yīng)只將爬取對(duì)象設(shè)計(jì)為單個(gè)網(wǎng)站,應(yīng)該要通過(guò)合適的字段設(shè)計(jì),能夠爬取到各類(lèi)新聞網(wǎng)站的新聞內(nèi)容,如華商網(wǎng),人民日?qǐng)?bào)等,這樣才能夠滿(mǎn)足更多用戶(hù)的需求。(2)功能擴(kuò)充對(duì)于本系統(tǒng)的可視化部分還可以有更多的功能來(lái)使它更加完善,例如增加搜索欄、統(tǒng)計(jì)每天

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論