熱點(diǎn)新聞獲取與管理系統(tǒng)——畢業(yè)論文_第1頁(yè)
已閱讀1頁(yè),還剩56頁(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>  采用技術(shù)手段,采集互聯(lián)網(wǎng)輿情信息,從而達(dá)到了解社會(huì)民情,挖掘民意,從而輔助國(guó)家決策,為科學(xué)決策和和諧社會(huì)建設(shè)更好的服務(wù)。 輿情監(jiān)測(cè)的最早形式是社會(huì)調(diào)查,下基層了解民間疾苦,現(xiàn)在發(fā)展為網(wǎng)絡(luò)輿情監(jiān)測(cè),借助于互聯(lián)網(wǎng)通道,采用技術(shù)手段,大大降低了社會(huì)輿情調(diào)查成本(社會(huì)調(diào)查的樣本規(guī)模和代表性往往不足,如三峽移民調(diào)查1萬(wàn)人,調(diào)查人員需要走村串戶,耗時(shí)幾個(gè)月,而網(wǎng)絡(luò)輿情可以在一個(gè)小時(shí)內(nèi)采集到幾百萬(wàn)的言論)。輿情監(jiān)測(cè)一向都是各個(gè)國(guó)

2、家和開(kāi)明社會(huì)積極推動(dòng)的事情,是完全合理合法為國(guó)為民的積極舉措。</p><p><b>  摘要</b></p><p>  隨著3G、4G通信技術(shù)的成熟應(yīng)用,使得互聯(lián)網(wǎng)實(shí)現(xiàn)真正互聯(lián),零距離鏈接到人(或物)。自媒體興起,新聞、資訊傳播越來(lái)越快,人們得以快速利用各類終端(手機(jī)、pad、計(jì)算機(jī)等設(shè)備)發(fā)布信息、獲取信息,通過(guò)互聯(lián)網(wǎng)表達(dá)自己的觀點(diǎn)。微博、頭條等網(wǎng)站上含有大量

3、的熱點(diǎn)新聞及評(píng)論信息,對(duì)這些信息進(jìn)行有效的分析整合,有助于了解社會(huì)民情,挖掘民意,從而輔助國(guó)家決策,為科學(xué)決策和和諧社會(huì)建設(shè)更好的服務(wù)。 輿情監(jiān)測(cè)的最早形式是社會(huì)調(diào)查,下基層了解民間疾苦,現(xiàn)在發(fā)展為網(wǎng)絡(luò)輿情監(jiān)測(cè),借助于互聯(lián)網(wǎng)通道,采用技術(shù)手段,大大降低了社會(huì)輿情調(diào)查成本。本文研究如何利用計(jì)算機(jī)技術(shù)構(gòu)建互聯(lián)網(wǎng)新聞信息分析平臺(tái),實(shí)現(xiàn)對(duì)各互聯(lián)網(wǎng)平臺(tái)上新聞評(píng)論文本的獲取與管理。</p><p>  本文對(duì)互聯(lián)網(wǎng)互聯(lián)網(wǎng)新聞

4、數(shù)據(jù)自動(dòng)采集管理系統(tǒng)進(jìn)行需求分析、總體架構(gòu)設(shè)計(jì),功能設(shè)計(jì),流程設(shè)計(jì),數(shù)據(jù)庫(kù)設(shè)計(jì)。平臺(tái)包括數(shù)據(jù)采集,數(shù)據(jù)存儲(chǔ),用戶登錄新聞評(píng)論信息分類查詢等功能。</p><p>  首先針對(duì)要采集的網(wǎng)站分析其網(wǎng)頁(yè)結(jié)構(gòu),制定數(shù)據(jù)采集模板。然后采用網(wǎng)絡(luò)爬蟲(chóng)技術(shù)進(jìn)行數(shù)據(jù)采集,并將采集的數(shù)據(jù)存入數(shù)據(jù)庫(kù)。最后搭建互聯(lián)網(wǎng)評(píng)論文本管理系統(tǒng)為用戶提供評(píng)論文本的分類查詢等服務(wù)。</p><p>  本文采用了HTTP、C#

5、、mongodb數(shù)據(jù)庫(kù)等相關(guān)技術(shù)對(duì)系統(tǒng)進(jìn)行了實(shí)現(xiàn),系統(tǒng)數(shù)據(jù)采集及時(shí)、操作簡(jiǎn)單、運(yùn)行穩(wěn)定、基本實(shí)現(xiàn)了對(duì)互聯(lián)網(wǎng)新聞文本的獲取與管理。</p><p>  關(guān)鍵詞:熱點(diǎn)新聞;網(wǎng)絡(luò)爬蟲(chóng);WEB前端展示;C#;數(shù)據(jù)庫(kù) </p><p><b>  Abstract </b></p><p>  At present, with the rapid

6、 development of the Internet, more and more people express their point of view through the internet.For example,there are a lot of text of comment about hotels, tourist scenery in Ctrip and some other tourist sites. Ana

7、lyzing these text effectively, operators or managers of public house and scenery not only can get the things which customers are paid attention to and the inadequacy of theirselves, but also can help customers to choose

8、 the more satisfied products and s</p><p>  Needs analysis, overall architecture design, functional design, process design, database design are used in the Internet travel information analysis platform . The

9、 platform includes the functions of data collection, data storage, information classification and query. Firstly, I analyzed the structure of the page and formulated data acquisition module.Then I collected data through

10、the web crawler technology and stored them in the database. Finally, to provide users with the comment text classific</p><p>  Related technologies Like the HTTP, C#, mongodb database are used in constructio

11、n of the system. As data acquisition timely, simple and stable operation, the acquisition and management of internet News texts are realized basically.</p><p>  Key words: News information;&#

12、160;Web crawler; Web front-end display; C#;</p><p>  database  </p><p><b>  目錄</b></p><p><b>  摘要I</b></p><p>  A

13、bstractII</p><p><b>  第一章 緒論3</b></p><p>  1.1 背景意義3</p><p><b>  1.2 現(xiàn)狀5</b></p><p>  1.3 研究?jī)?nèi)容6</p><p>  1.5 論文組織12</p>

14、<p>  第二章 相關(guān)技術(shù)12</p><p>  2.1 Http協(xié)議簡(jiǎn)介12</p><p>  2.2 MongoDB簡(jiǎn)介18</p><p>  2.3 Selenium+PhantomJS20</p><p>  2.4 多線程20</p><p>  2.5 Fiddle

15、r20</p><p>  2.6 代理池21</p><p>  2.7 MVC設(shè)計(jì)模式22</p><p>  第三章 需求分析23</p><p>  3.1 系統(tǒng)總體需求23</p><p>  3.2 系統(tǒng)功能需求24</p><p>  3.3 非功能性需求2

16、7</p><p>  第四章 系統(tǒng)設(shè)計(jì)28</p><p>  4.1 系統(tǒng)架構(gòu)設(shè)計(jì)28</p><p>  4.2 系統(tǒng)總體功能設(shè)計(jì)29</p><p>  4.3 系統(tǒng)詳細(xì)功能設(shè)計(jì)31</p><p>  4.4 系統(tǒng)數(shù)據(jù)庫(kù)設(shè)計(jì)37</p><p>  第五章 系統(tǒng)實(shí)現(xiàn)

17、40</p><p>  5.1 系統(tǒng)典型界面40</p><p>  5.2 關(guān)鍵程序?qū)崿F(xiàn)42</p><p>  第六章 系統(tǒng)測(cè)試結(jié)論48</p><p>  6.1 測(cè)試原理48</p><p>  6.2 測(cè)試項(xiàng)目48</p><p>  6.3 測(cè)試結(jié)果49<

18、;/p><p><b>  總結(jié)與體會(huì)49</b></p><p><b>  致 謝50</b></p><p><b>  參考文獻(xiàn)51</b></p><p><b>  第一章 緒論</b></p><p><b&

19、gt;  1.1 背景意義</b></p><p>  隨著互聯(lián)網(wǎng)的飛速發(fā)展,網(wǎng)絡(luò)上的信息呈幾何式增長(zhǎng)。這使得人們擁有如此多信息驚喜同時(shí),發(fā)現(xiàn)在網(wǎng)上找到所需信息的困難和無(wú)助,這種情況下催生出采集技術(shù)。。</p><p>  在互聯(lián)網(wǎng)上進(jìn)行自動(dòng)數(shù)據(jù)采集這件事和互聯(lián)網(wǎng)存在的時(shí)間差不多一樣長(zhǎng)。雖然網(wǎng)絡(luò)數(shù)據(jù)采集并不是新術(shù)語(yǔ),常見(jiàn)的稱謂是網(wǎng)頁(yè)抓屏(screen scraping)、數(shù)據(jù)挖

20、掘(data mining)、網(wǎng)絡(luò)收割(Web harvesting)或其他類似的版本。今天我們更傾向于用“網(wǎng)絡(luò)數(shù)據(jù)采集”這個(gè)術(shù)語(yǔ),或把網(wǎng)絡(luò)數(shù)據(jù)采集程序稱為網(wǎng)絡(luò)機(jī)器人(bots)。</p><p>  理論上,網(wǎng)絡(luò)數(shù)據(jù)采集是一種通過(guò)多種手段收集網(wǎng)絡(luò)數(shù)據(jù)的方式,不光是通過(guò)與 API 交互(或者直接與瀏覽器交互)的方式。最常用的方法是寫(xiě)一個(gè)自動(dòng)化程序向網(wǎng)絡(luò)服務(wù)器請(qǐng)求數(shù)據(jù)(通常是用 HTML 表單或其他網(wǎng)頁(yè)文件),然后

21、對(duì)數(shù)據(jù)進(jìn)行解析,提取需要的信息。</p><p>  實(shí)踐中,網(wǎng)絡(luò)數(shù)據(jù)采集涉及非常廣泛的編程技術(shù)和手段,比如數(shù)據(jù)分析、信息安全等。</p><p>  為什么要做網(wǎng)絡(luò)數(shù)據(jù)采集</p><p>  如果你上網(wǎng)的唯一方式就是用瀏覽器,那么你其實(shí)失去了很多種可能。雖然瀏覽器可以更方便地執(zhí)行 JavaScript,顯示圖片,并且可以把數(shù)據(jù)展示成更適合人類閱讀的形式,但是網(wǎng)絡(luò)

22、爬蟲(chóng)收集和處理大量數(shù)據(jù)的能力更為卓越。不像狹窄的顯示器窗口一次只能讓你看一個(gè)網(wǎng)頁(yè),網(wǎng)絡(luò)爬蟲(chóng)可以讓你一次查看幾千甚至幾百萬(wàn)個(gè)網(wǎng)頁(yè)。</p><p>  另外,網(wǎng)絡(luò)爬蟲(chóng)可以完成傳統(tǒng)搜索引擎不能做的事情。用 Google 搜索“飛往波士頓最便宜的航班”,看到的是大量的廣告和主流的航班搜索網(wǎng)站。Google 只知道這些網(wǎng)站的網(wǎng)頁(yè)會(huì)顯示什么內(nèi)容,卻不知道在航班搜索應(yīng)用中輸入的各種查詢的準(zhǔn)確結(jié)果。但是,設(shè)計(jì)較好的網(wǎng)絡(luò)爬蟲(chóng)可以

23、通過(guò)采集大量的網(wǎng)站數(shù)據(jù),做出飛往波士頓航班價(jià)格隨時(shí)間變化的圖表,告訴你買機(jī)票的最佳時(shí)間。</p><p>  數(shù)據(jù)不是可以通過(guò) API 獲取嗎?</p><p>  如果能找到一個(gè)可以解決問(wèn)題的 API,那會(huì)非常給力。它們可以非常方便地向用戶提供服務(wù)器里格式完好的數(shù)據(jù)。但我們使用像 Twitter 或維基百科的 API 時(shí),會(huì)發(fā)現(xiàn)一個(gè) API 同時(shí)提供了不同的數(shù)據(jù)類型。通常,如果有 API

24、 可用,API 確實(shí)會(huì)比寫(xiě)一個(gè)網(wǎng)絡(luò)爬蟲(chóng)程序來(lái)獲取數(shù)據(jù)更加方便。但是,很多時(shí)候你需要的 API 并不存在,這是因?yàn)椋?lt;/p><p>  ? 你要收集的數(shù)據(jù)來(lái)自不同的網(wǎng)站,沒(méi)有一個(gè)綜合多個(gè)網(wǎng)站數(shù)據(jù)的 API;</p><p>  ? 你想要的數(shù)據(jù)非常小眾,網(wǎng)站不會(huì)為你單獨(dú)做一個(gè) API;</p><p>  ? 一些網(wǎng)站沒(méi)有基礎(chǔ)設(shè)施或技術(shù)能力去建立 API。</

25、p><p>  即使 API 已經(jīng)存在,可能還會(huì)有請(qǐng)求內(nèi)容和次數(shù)限制,API 能夠提供的數(shù)據(jù)類型或者數(shù)據(jù)格式可能也無(wú)法滿足你的需求。</p><p>  這時(shí)網(wǎng)絡(luò)數(shù)據(jù)采集就派上用場(chǎng)了。你在瀏覽器上看到的內(nèi)容,大部分都可以通過(guò)編寫(xiě)程序來(lái)獲取。如果你可以通過(guò)程序獲取數(shù)據(jù),那么就可以把數(shù)據(jù)存儲(chǔ)到數(shù)據(jù)庫(kù)里。</p><p>  如果你可以把數(shù)據(jù)存儲(chǔ)到數(shù)據(jù)庫(kù)里,自然也就可以將這些

26、數(shù)據(jù)可視化。</p><p>  顯然,大量的應(yīng)用場(chǎng)景都會(huì)需要這種幾乎可以毫無(wú)阻礙地獲取數(shù)據(jù)的手段:市場(chǎng)預(yù)測(cè)、機(jī)器語(yǔ)言翻譯,甚至醫(yī)療診斷領(lǐng)域,通過(guò)對(duì)新聞網(wǎng)站、文章以及健康論壇中的數(shù)據(jù)進(jìn)行采集和分析,也可以獲得很多好處。</p><p>  甚至在藝術(shù)領(lǐng)域,網(wǎng)絡(luò)數(shù)據(jù)采集也為藝術(shù)創(chuàng)作開(kāi)辟了新方向。由 Jonathan Harris 和 Sep</p><p>  Kam

27、var 在 2006 年發(fā)起的“我們感覺(jué)挺好”(We Feel Fine,http://wefeelfine.org/)項(xiàng)目,從</p><p>  大量英文博客中抓取許多以“I feel”和“I am feeling”開(kāi)頭的短句,最終做成了一個(gè)很受大眾歡迎的數(shù)據(jù)可視圖,描述了這個(gè)世界每天、每分鐘的感覺(jué)。</p><p>  無(wú)論你現(xiàn)在處于哪個(gè)領(lǐng)域,網(wǎng)絡(luò)數(shù)據(jù)采集都可以讓你的工作更高效,幫你

28、提升生產(chǎn)力,甚至開(kāi)創(chuàng)一個(gè)全新的領(lǐng)域。</p><p>  掌握信息、數(shù)據(jù),是大數(shù)據(jù)時(shí)代發(fā)展的需要,也是職業(yè)的需要,更是產(chǎn)業(yè)發(fā)展的需要。為了能創(chuàng)造出更高的經(jīng)濟(jì)價(jià)值,我們必須掌握高效得到信息的工具互聯(lián)網(wǎng)已經(jīng)進(jìn)入大家的生活,利用互聯(lián)網(wǎng)來(lái)獲取有價(jià)值的信息勢(shì)在必行。</p><p>  本課題主要是實(shí)現(xiàn)一個(gè)新聞網(wǎng)熱點(diǎn)新聞評(píng)論獲取,主要功能是抓取新聞網(wǎng)上的評(píng)論的信息,進(jìn)行過(guò)濾返回相關(guān)有用的信息。通過(guò)本

29、系統(tǒng),用戶可以查看到熱點(diǎn)新聞的評(píng)論信息,只需輸入關(guān)鍵字,系統(tǒng)進(jìn)行處理后,將會(huì)返回與關(guān)鍵字相關(guān)聯(lián)的評(píng)論信息。</p><p><b>  1.2 現(xiàn)狀</b></p><p>  目前網(wǎng)絡(luò)數(shù)據(jù)采集采用的技術(shù)基本上是利用垂直搜索引擎技術(shù)的網(wǎng)絡(luò)蜘蛛(或數(shù)據(jù)采集機(jī)器人)、分詞系統(tǒng)、任務(wù)與索引系統(tǒng)等技術(shù)進(jìn)行綜合運(yùn)用而完成;隨著互聯(lián)網(wǎng)技術(shù)的發(fā)展和網(wǎng)絡(luò)海量信息的增長(zhǎng),對(duì)信息的獲取與

30、分揀成為一種越來(lái)越大的需求。人們一般通過(guò)以上技術(shù)將海量信息和數(shù)據(jù)采集回后,進(jìn)行分揀和二次加工,實(shí)現(xiàn)網(wǎng)絡(luò)數(shù)據(jù)價(jià)值與利益更大化、更專業(yè)化的目的。</p><p>  現(xiàn)階段在國(guó)內(nèi)從事“海量數(shù)據(jù)采集”的企業(yè)很多,大多是利用垂直搜索引擎技術(shù)去實(shí)現(xiàn),還有一些企業(yè)還實(shí)現(xiàn)了多種技術(shù)的綜合運(yùn)用。比如:“火車采集器”采用的垂直搜索引擎+網(wǎng)絡(luò)雷達(dá)+信息追蹤與自動(dòng)分揀+自動(dòng)索引技術(shù),將海量數(shù)據(jù)采集與后期處理進(jìn)行了結(jié)合。</p&g

31、t;<p>  一般說(shuō)來(lái),從事專業(yè)海量數(shù)據(jù)采集的企業(yè)己屬于是計(jì)算機(jī)數(shù)據(jù)分析方面的研究工作。</p><p>  案例一、結(jié)合性搜索引擎</p><p><b>  代表:谷歌、百度</b></p><p>  互聯(lián)網(wǎng)參與者越來(lái)越多,數(shù)據(jù)信息量也開(kāi)始了暴發(fā)型增長(zhǎng)。這個(gè)時(shí)期,采用采集技術(shù)的搜索引擎出現(xiàn),國(guó)外Google,國(guó)內(nèi)baidu

32、相繼出現(xiàn),他們不是單單采集數(shù)據(jù),制作索引提供大眾,也慢慢幫助大眾先進(jìn)行過(guò)濾、預(yù)判信息首創(chuàng)度,來(lái)源網(wǎng)站安全性,進(jìn)行把關(guān)。提供采集、搜索技術(shù)服務(wù)。</p><p>  案例二、細(xì)分搜索服務(wù)</p><p>  隨著互聯(lián)網(wǎng)規(guī)模的急劇膨脹,大而全得搜索引擎已經(jīng)無(wú)法適應(yīng)目前的市場(chǎng)狀況,因此現(xiàn)在搜索引擎之間開(kāi)始出現(xiàn)了細(xì)分領(lǐng)域的搜索引擎:</p><p>  Qunar.com去

33、哪兒網(wǎng)、酷訊網(wǎng)為代表</p><p>  著名的去哪兒網(wǎng)qunar,起初就是做機(jī)票價(jià)格采集、爬取服務(wù)網(wǎng)站。</p><p>  現(xiàn)在去哪兒網(wǎng)qunar演變成為一個(gè)旅游出行,專業(yè)提供機(jī)票搜索信息、酒店旅游信息網(wǎng)站??梢詫?shí)時(shí)全網(wǎng)搜索全部航空公司、代理商機(jī)票價(jià)格,從過(guò)去全網(wǎng)采集,聚集到行業(yè)性、細(xì)分領(lǐng)域采集。</p><p>  網(wǎng)絡(luò)數(shù)據(jù)采集大有所為,在大數(shù)據(jù)深入人心的時(shí)代

34、,網(wǎng)絡(luò)數(shù)據(jù)采集作為網(wǎng)絡(luò)、數(shù)據(jù)庫(kù)與機(jī)器學(xué)習(xí)等領(lǐng)域的交匯點(diǎn),已經(jīng)成為滿足個(gè)性化網(wǎng)絡(luò)數(shù)據(jù)需求的最佳實(shí)踐。搜索引擎可以滿足人們對(duì)數(shù)據(jù)的共性需求,即“我來(lái)了,我看見(jiàn)”,而網(wǎng)絡(luò)數(shù)據(jù)采集技術(shù)可以進(jìn)一步精煉 數(shù)據(jù),把網(wǎng)絡(luò)中雜亂無(wú)章的數(shù)據(jù)聚合成合理規(guī)范的形式,方便分析與挖掘,真正實(shí)現(xiàn)“我征服”。工作中,你可能經(jīng)常為找數(shù)據(jù)而煩惱,或者眼睜睜看著眼前的幾百頁(yè)數(shù)據(jù)卻只能長(zhǎng)恨咫尺天涯,又或者數(shù)據(jù)雜亂無(wú)章的網(wǎng)站中滿是帶有陷阱的表單和坑爹的驗(yàn)證碼,甚至 需要的數(shù)據(jù)都

35、在網(wǎng)頁(yè)版的PDF和網(wǎng)絡(luò)圖片中。</p><p><b>  1.3 研究?jī)?nèi)容</b></p><p><b>  1.3.1采集價(jià)值</b></p><p><b>  1.3.1.1應(yīng)用</b></p><p>  1、應(yīng)用于搜索引擎與垂直搜索平臺(tái)搭建與運(yùn)營(yíng)</p>

36、;<p>  2、應(yīng)用于綜合門(mén)戶與行業(yè)門(mén)戶、地方門(mén)戶、專業(yè)門(mén)戶網(wǎng)站數(shù)據(jù)支撐與流量運(yùn)營(yíng)</p><p>  3、應(yīng)用“電子政務(wù)”與“電子商務(wù)平臺(tái)”的運(yùn)營(yíng)</p><p>  4、應(yīng)用于知識(shí)管理與知識(shí)共享</p><p>  5、應(yīng)用于“企業(yè)競(jìng)爭(zhēng)情報(bào)系統(tǒng)”的運(yùn)營(yíng)</p><p>  6、應(yīng)用于“BI商業(yè)智能系統(tǒng)”</p>

37、<p>  7、應(yīng)用于“信息咨詢與信息增值”</p><p>  8、應(yīng)用于“信息安全和信息監(jiān)控”等</p><p>  9、應(yīng)用于“千瓦通信-輿情雷達(dá)監(jiān)測(cè)與測(cè)控系統(tǒng)”等第一階段、信息搜索服務(wù)</p><p><b>  1.3.1.2前景</b></p><p>  人們通常所說(shuō)的“海量數(shù)據(jù)采集”就是指類

38、似垂直搜索引擎技術(shù)數(shù)據(jù)采集技術(shù)。根據(jù)網(wǎng)絡(luò)不同的數(shù)據(jù)類型與網(wǎng)站結(jié)構(gòu),一套功能強(qiáng)大的采集系統(tǒng)均采用分布式抓取、分析、數(shù)據(jù)挖掘等功能于一身的信息系統(tǒng),系統(tǒng)能對(duì)指定的網(wǎng)站進(jìn)行定向數(shù)據(jù)抓取和分析,在專業(yè)知識(shí)庫(kù)建立、企業(yè)競(jìng)爭(zhēng)情報(bào)分析、報(bào)社媒體資訊獲取、網(wǎng)站內(nèi)容建設(shè)等領(lǐng)域應(yīng)用很廣。 系統(tǒng)能大大降低少企業(yè)和政府部門(mén)在信息建設(shè)過(guò)程中人工的成本。面對(duì)海量資訊世界,在越來(lái)越多的數(shù)據(jù)和信息可以從互聯(lián)網(wǎng)上獲得時(shí),對(duì)大量數(shù)據(jù)的采集、分析和深度挖掘同時(shí)還可能產(chǎn)生巨大

39、的商機(jī)。</p><p>  1.3.2反采集技術(shù)</p><p>  有采集術(shù),必有反采集術(shù),我們這里只討論技術(shù)層面,了解常見(jiàn)反采集手段,在不危害目標(biāo)服務(wù)器正常工作,進(jìn)行適當(dāng)采集。下面總結(jié)了常見(jiàn)反采集技術(shù): </p><p>  1.3.2.1限制IP地址單位時(shí)間的訪問(wèn)次數(shù) </p><p>  分析:沒(méi)有哪個(gè)常人一秒鐘內(nèi)能訪問(wèn)相同網(wǎng)站5次

40、,除非是程序訪問(wèn),而有這種喜好的,就剩下搜索引擎爬蟲(chóng)和討厭的采集器了。 </p><p>  弊端:一刀切,這同樣會(huì)阻止搜索引擎對(duì)網(wǎng)站的收錄 </p><p>  適用網(wǎng)站:不太依靠搜索引擎的網(wǎng)站 </p><p>  采集器會(huì)怎么做:減少單位時(shí)間的訪問(wèn)次數(shù),減低采集效率 </p><p>  1.3.2.2屏蔽ip </p>

41、<p>  分析:通過(guò)后臺(tái)計(jì)數(shù)器,記錄來(lái)訪者ip和訪問(wèn)頻率,人為分析來(lái)訪記錄,屏蔽可疑Ip。 </p><p>  適用網(wǎng)站:所有網(wǎng)站,且站長(zhǎng)能夠知道哪些是google或者百度的機(jī)器人 </p><p>  采集器應(yīng)對(duì):利用ip代理采集一次換一次,不過(guò)會(huì)降低采集器的效率和網(wǎng)速(用代理)。 </p><p>  1.3.2.3利用js加密網(wǎng)頁(yè)內(nèi)容 </

42、p><p>  Note:這個(gè)方法我沒(méi)接觸過(guò),只是從別處看來(lái) </p><p>  分析:不用分析了,搜索引擎爬蟲(chóng)和采集器通殺 </p><p>  適用網(wǎng)站:極度討厭搜索引擎和采集器的網(wǎng)站 </p><p>  采集器應(yīng)對(duì):Selenium+PhantomJS技術(shù)方案 </p><p>  1.3.2.4網(wǎng)頁(yè)里隱藏干擾信

43、息</p><p>  網(wǎng)頁(yè)里隱藏網(wǎng)站版權(quán)或者一些隨機(jī)垃圾文字,這些文字風(fēng)格寫(xiě)在css文件中 </p><p>  分析:雖然不能防止采集,但是會(huì)讓采集后的內(nèi)容充滿了你網(wǎng)站的版權(quán)說(shuō)明或者一些垃圾文字,因?yàn)橐话悴杉鞑粫?huì)同時(shí)采集你的css文件,那些文字沒(méi)了風(fēng)格,就顯示出來(lái)了。 </p><p>  適用網(wǎng)站:所有網(wǎng)站 </p><p>  采集

44、器應(yīng)對(duì):對(duì)于版權(quán)文字,好辦,替換掉。對(duì)于隨機(jī)的垃圾文字,沒(méi)辦法,勤快點(diǎn)了。 </p><p>  1.3.2.5用戶登錄才能訪問(wèn)網(wǎng)站內(nèi)容 </p><p>  分析:搜索引擎爬蟲(chóng)不會(huì)對(duì)每個(gè)這樣類型的網(wǎng)站設(shè)計(jì)登錄程序。聽(tīng)說(shuō)采集器可以針對(duì)某個(gè)網(wǎng)站設(shè)計(jì)模擬用戶登錄提交表單行為。 </p><p>  適用網(wǎng)站:極度討厭搜索引擎,且想阻止大部分采集器的網(wǎng)站 </p&g

45、t;<p>  采集器應(yīng)對(duì):制作擬用戶登錄提交表單行為的模塊 </p><p>  1.3.2.6利用腳本語(yǔ)言做分頁(yè)(隱藏分頁(yè)) </p><p>  分析:還是那句,搜索引擎爬蟲(chóng)不會(huì)針對(duì)各種網(wǎng)站的隱藏分頁(yè)進(jìn)行分析,這影響搜索引擎對(duì)其收錄。但是,采集者在編寫(xiě)采集規(guī)則時(shí),要分析目標(biāo)網(wǎng)頁(yè)代碼,懂點(diǎn)腳本知識(shí)的人,就會(huì)知道分頁(yè)的真實(shí)鏈接地址。 </p><p>

46、;  適用網(wǎng)站:對(duì)搜索引擎依賴度不高的網(wǎng)站,還有,采集你的人不懂腳本知識(shí) </p><p>  采集器應(yīng)對(duì):應(yīng)該說(shuō)采集者會(huì)怎么做,他反正都要分析你的網(wǎng)頁(yè)代碼,順便分析你的分頁(yè)腳本,花不了多少額外時(shí)間。 </p><p>  1.3.2.7防盜鏈措施</p><p>  只允許通過(guò)本站頁(yè)面連接查看,如:Request.ServerVariables(“HTTP_REF

47、ERER“) </p><p>  分析:asp和PHP可以通過(guò)讀取請(qǐng)求的HTTP_REFERER屬性,來(lái)判斷該請(qǐng)求是否來(lái)自本網(wǎng)站,從而來(lái)限制采集器,同樣也限制了搜索引擎爬蟲(chóng),嚴(yán)重影響搜索引擎對(duì)網(wǎng)站部分防盜鏈內(nèi)容的收錄。 </p><p>  適用網(wǎng)站:不太考慮搜索引擎收錄的網(wǎng)站 </p><p>  采集器應(yīng)對(duì):偽裝HTTP_REFERER。 </p>

48、<p>  1.3.2.8全flash、圖片或者pdf來(lái)呈現(xiàn)</p><p>  分析:對(duì)搜索引擎爬蟲(chóng)和采集器支持性不好,這個(gè)很多懂點(diǎn)seo的人都知道 </p><p>  適用網(wǎng)站:媒體設(shè)計(jì)類并且不在意搜索引擎收錄的網(wǎng)站 </p><p>  采集器應(yīng)對(duì):不采了,走人 </p><p>  1.3.2.9網(wǎng)站隨機(jī)采用不同模版

49、</p><p>  分析:因?yàn)椴杉魇歉鶕?jù)網(wǎng)頁(yè)結(jié)構(gòu)來(lái)定位所需要的內(nèi)容,一旦先后兩次模版更換,采集規(guī)則就失效,不錯(cuò)。而且這樣對(duì)搜索引擎爬蟲(chóng)沒(méi)影響。 </p><p>  適用網(wǎng)站:動(dòng)態(tài)網(wǎng)站,并且不考慮用戶體驗(yàn)。 </p><p>  采集器應(yīng)對(duì):一個(gè)網(wǎng)站模版不可能多于10個(gè)吧,每個(gè)模版弄一個(gè)規(guī)則就行了,不同模版采用不同采集規(guī)則。如果多于10個(gè)模版了,既然目標(biāo)網(wǎng)站都那

50、么費(fèi)勁的更換模版,成全他。 </p><p>  1.3.2.10采用動(dòng)態(tài)不規(guī)則html標(biāo)簽 </p><p>  分析:這個(gè)比較變態(tài)??紤]到html標(biāo)簽內(nèi)含空格和不含空格效果是一樣的,所以< div >和< div >對(duì)于頁(yè)面顯示效果一樣,但是作為采集器的標(biāo)記就是兩個(gè)不同標(biāo)記了。如果每次頁(yè)面的html標(biāo)簽內(nèi)空格數(shù)隨機(jī),那么 </p><p&

51、gt;  采集規(guī)則就失效了。但是,這對(duì)搜索引擎爬蟲(chóng)沒(méi)多大影響。 </p><p>  適合網(wǎng)站:所有動(dòng)態(tài)且不想遵守網(wǎng)頁(yè)設(shè)計(jì)規(guī)范的網(wǎng)站。 </p><p>  采集器應(yīng)對(duì):html cleaner還是很多的,先清理了html標(biāo)簽,然后再寫(xiě)采集規(guī)則;應(yīng)該用采集規(guī)則前先清理html標(biāo)簽,還是能夠拿到所需數(shù)據(jù)。 </p><p><b>  1.3.3法律風(fēng)險(xiǎn)&l

52、t;/b></p><p>  1.3.3.1盜版式采集</p><p>  通過(guò)采集程序來(lái)抓取別人網(wǎng)站的內(nèi)容,直接使用,或者沒(méi)有深度加工的使用,因?yàn)檫@種方法的便捷性成為當(dāng)下很多網(wǎng)站更新內(nèi)容的手段和渠道,這可以看做是行業(yè)內(nèi)部不正當(dāng)競(jìng)爭(zhēng)的一種方式,如果站長(zhǎng)們都爭(zhēng)相來(lái)采集內(nèi)容,那網(wǎng)站本身的意義和用戶體驗(yàn)都會(huì)蕩然無(wú)存,會(huì)對(duì)行業(yè)的整體發(fā)展造成惡性影響。這是社會(huì)本身就欠規(guī)范的知識(shí)版權(quán)體制的打擊

53、,會(huì)嚴(yán)重傷害原創(chuàng)內(nèi)容版權(quán)保護(hù)體系。</p><p>  1.3.3.2素材式采集</p><p>  去哪兒網(wǎng)為代表模式,采集各大航空官網(wǎng),代理機(jī)票網(wǎng)站的機(jī)票折扣信息,進(jìn)行價(jià)格排序,為用戶提供便利,網(wǎng)站實(shí)現(xiàn)銷售,雙贏模式,所以采集也不完全是不好得,。</p><p>  還有采集熱銷商品、熱點(diǎn)事件網(wǎng)民的評(píng)論,進(jìn)行一定算法加工,進(jìn)行輿情監(jiān)測(cè),用戶消費(fèi)心理等研究分析工作

54、。</p><p>  所以我們?cè)谶M(jìn)行網(wǎng)絡(luò)數(shù)據(jù)采集也應(yīng)該有所不為。國(guó)內(nèi)外關(guān)于網(wǎng)絡(luò)數(shù)據(jù)保護(hù)的法律法規(guī)都在不斷地制定與完善中,網(wǎng)絡(luò)數(shù)據(jù)采集遵守知識(shí)版權(quán)、網(wǎng)絡(luò)信息安全等等相關(guān)的法律,網(wǎng)絡(luò)爬蟲(chóng)嚴(yán)格控制網(wǎng)絡(luò)數(shù)據(jù)采集的速度,降低被采集網(wǎng)站服務(wù)器的負(fù)擔(dān)。惡意、暴力式消耗別人網(wǎng)站的服務(wù)器資源,甚至拖垮別人網(wǎng)站是一件不道德的事情。</p><p>  企業(yè)內(nèi)部信息系統(tǒng),屬于內(nèi)部信息,屬于采集禁區(qū),不協(xié)助他人

55、采集內(nèi)部信息。</p><p>  采集到帶有個(gè)人隱私信息,也應(yīng)當(dāng)謹(jǐn)慎、合理、合法使用。</p><p>  我們掌握采集這項(xiàng)技術(shù)時(shí),也應(yīng)該有所為,有所不為,應(yīng)當(dāng)為社會(huì)、為他人創(chuàng)造價(jià)值,不應(yīng)濫用技術(shù),謀取私利。</p><p><b>  1.3.4實(shí)踐課題</b></p><p>  本次實(shí)踐課題是互聯(lián)網(wǎng)熱點(diǎn)新聞評(píng)論的

56、獲取與管理,并設(shè)計(jì)出了互聯(lián)網(wǎng)新聞數(shù)據(jù)自動(dòng)采集管理系統(tǒng),其中用到了網(wǎng)絡(luò)爬蟲(chóng)技術(shù),通過(guò)對(duì)“頭條網(wǎng)”、“微博”關(guān)于熱點(diǎn)新聞信息爬取并進(jìn)行管理分析。網(wǎng)絡(luò)爬蟲(chóng)是一個(gè)自動(dòng)提取網(wǎng)頁(yè)的程序,它為搜索引擎從互聯(lián)網(wǎng)上下載網(wǎng)頁(yè)數(shù)據(jù),是搜索引擎的重要組成[8]。傳統(tǒng)爬蟲(chóng)從一個(gè)或若干初始網(wǎng)頁(yè)的URL開(kāi)始,獲得初始網(wǎng)頁(yè)上的URL,在抓取網(wǎng)頁(yè)的過(guò)程中,不斷從當(dāng)前頁(yè)面上抽取新的URL放入隊(duì)列,直到滿足系統(tǒng)的一定停止條件。聚焦爬蟲(chóng)的工作流程較為復(fù)雜,需要根據(jù)一定的網(wǎng)頁(yè)分

57、析算法過(guò)濾與主題無(wú)關(guān)的鏈接,保留有用的鏈接并將其放入等待抓取的URL隊(duì)列。然后,它將根據(jù)一定的搜索策略從隊(duì)列中選擇下一步要抓取的網(wǎng)頁(yè)URL,并重復(fù)上述過(guò)程,直到達(dá)到系統(tǒng)的某一條件時(shí)停止。另外,所有被爬蟲(chóng)抓取的網(wǎng)頁(yè)將會(huì)被系統(tǒng)存貯,進(jìn)行一定的分析、過(guò)濾,并建立索引,以便之后的查詢和檢索;對(duì)于聚焦爬蟲(chóng)來(lái)說(shuō),這一過(guò)程所得到的分析結(jié)果還可能對(duì)以后的抓取過(guò)程給出反饋和指導(dǎo)。在這些學(xué)科的基礎(chǔ)上,形成信息收集和加工的方法,從而形成一個(gè)實(shí)用的、高效的系統(tǒng)

58、。</p><p><b>  1.5 論文組織</b></p><p>  本論文共分為6個(gè)章節(jié),分別為:緒論、相關(guān)技術(shù)、需求分析、系統(tǒng)設(shè)計(jì)、系統(tǒng)實(shí)現(xiàn)、系統(tǒng)測(cè)試結(jié)論。</p><p>  第一章緒論,共分為課題的背景意義、現(xiàn)狀、研究?jī)?nèi)容、論文組織等4條,從整體上對(duì)本課題進(jìn)行了分析,使得對(duì)于本課題的開(kāi)發(fā)過(guò)程有一個(gè)大概的了解。</p>

59、<p>  第二章相關(guān)技術(shù)的研究,主要介紹了本課題所采用的各種相關(guān)技術(shù)。首先介紹了http協(xié)議,然后介紹了所用到的后臺(tái)的數(shù)據(jù)庫(kù),最后介紹了開(kāi)發(fā)過(guò)程中用到的C#采集相關(guān)的技術(shù)的使用,并分析了該技術(shù)的特性。</p><p>  第三章需求分析,主要介紹了系統(tǒng)總體的需求,對(duì)系統(tǒng)各功能需求例如爬取功能需求,信息檢索功能需求,信息排序功能需求,評(píng)分高亮顯示功能需求等做了相應(yīng)的介紹。</p>&l

60、t;p>  第四章系統(tǒng)設(shè)計(jì),從系統(tǒng)的設(shè)計(jì)分析、數(shù)據(jù)表的結(jié)構(gòu)規(guī)劃對(duì)系統(tǒng)進(jìn)行總體設(shè)計(jì),其中設(shè)計(jì)分析是用了系統(tǒng)功能分析,系統(tǒng)功能模塊設(shè)計(jì),數(shù)據(jù)庫(kù)需求分析,數(shù)據(jù)庫(kù)設(shè)計(jì),覆蓋了需求分析中所要求達(dá)到的功能需求。</p><p>  第五章系統(tǒng)實(shí)現(xiàn),系統(tǒng)分為新聞評(píng)論采集與檢索兩大模塊組成,每個(gè)部分又可以分成很多小模塊。每個(gè)模塊進(jìn)行截圖分析設(shè)計(jì)的同時(shí)都進(jìn)行詳細(xì)設(shè)計(jì),寫(xiě)出了它們的關(guān)鍵代碼。</p><p&

61、gt;  第六章系統(tǒng)測(cè)試結(jié)論,在系統(tǒng)設(shè)計(jì)完成以后會(huì)存在許多人為或非人為的錯(cuò)誤,因此需要測(cè)試系統(tǒng),系統(tǒng)測(cè)試的目的是為了發(fā)現(xiàn)平臺(tái)中存在的錯(cuò)誤而執(zhí)行程序的過(guò)程。在測(cè)試完畢后會(huì)得出各個(gè)功能的測(cè)試結(jié)果。</p><p><b>  第二章 相關(guān)技術(shù)</b></p><p>  2.1 Http協(xié)議簡(jiǎn)介</p><p>  HTTP(HyperText

62、Transport Protocol)是超文本傳輸協(xié)議的縮寫(xiě),它用于傳送WWW方式的數(shù)據(jù),關(guān)于HTTP協(xié)議的詳細(xì)內(nèi)容請(qǐng)參考RFC2616。HTTP協(xié)議采用了請(qǐng)求/響應(yīng)模型。客戶端向服務(wù)器發(fā)送一個(gè)請(qǐng)求,請(qǐng)求頭包含請(qǐng)求的方法、URL、協(xié)議版本、以及包含請(qǐng)求修飾符、客戶信息和內(nèi)容的類似于MIME的消息結(jié)構(gòu)。服務(wù)器以一個(gè)狀態(tài)行作為響應(yīng),響應(yīng)的內(nèi)容包括消息協(xié)議的版本,成功或者錯(cuò)誤編碼加上包含服務(wù)器信息、實(shí)體元信息以及可能的實(shí)體內(nèi)容。</p&

63、gt;<p>  通常HTTP消息包括客戶機(jī)向服務(wù)器的請(qǐng)求消息和服務(wù)器向客戶機(jī)的響應(yīng)消息。這兩種類型的消息由一個(gè)起始行,一個(gè)或者多個(gè)頭域,一個(gè)指示頭域結(jié)束的空行和可選的消息體組成。HTTP的頭域包括通用頭,請(qǐng)求頭,響應(yīng)頭和實(shí)體頭四個(gè)部分。每個(gè)頭域由一個(gè)域名,冒號(hào)(:)和域值三部分組成。域名是大小寫(xiě)無(wú)關(guān)的,域值前可以添加任何數(shù)量的空格符,頭域可以被擴(kuò)展為多行,在每行開(kāi)始處,使用至少一個(gè)空格或制表符。</p>&

64、lt;p><b>  2.1.1通用頭域</b></p><p>  通用頭域包含請(qǐng)求和響應(yīng)消息都支持的頭域,通用頭域包含Cache-Control、Connection、Date、Pragma、Transfer-Encoding、Upgrade、Via。對(duì)通用頭域的擴(kuò)展要求通訊雙方都支持此擴(kuò)展,如果存在不支持的通用頭域,一般將會(huì)作為實(shí)體頭域處理。下面簡(jiǎn)單介紹幾個(gè)在UPnP消息中使用的

65、通用頭域:</p><p>  1.Cache-Control頭域</p><p>  Cache-Control指定請(qǐng)求和響應(yīng)遵循的緩存機(jī)制。在請(qǐng)求消息或響應(yīng)消息中設(shè)置Cache-Control并不會(huì)修改另一個(gè)消息處理過(guò)程中的緩存處理過(guò)程。請(qǐng)求時(shí)的緩存指令包括no-cache、no-store、max-age、max-stale、min-fresh、only-if-cached,響應(yīng)消息

66、中的指令包括public、private、no-cache、no-store、no-transform、must-revalidate、proxy-revalidate、max-age。各個(gè)消息中的指令含義如下:</p><p>  Public指示響應(yīng)可被任何緩存區(qū)緩存。</p><p>  Private指示對(duì)于單個(gè)用戶的整個(gè)或部分響應(yīng)消息,不能被共享緩存處理。這允許服務(wù)器僅僅描述當(dāng)前

67、用戶。</p><p><b>  http結(jié)構(gòu)</b></p><p>  http結(jié)構(gòu)的部分響應(yīng)消息,此響應(yīng)消息對(duì)于其他用戶的請(qǐng)求無(wú)效。</p><p>  no-cache指示請(qǐng)求或響應(yīng)消息不能緩存</p><p>  no-store用于防止重要的信息被無(wú)意的發(fā)布。在請(qǐng)求消息中發(fā)送將使得請(qǐng)求和響應(yīng)消息都不使用緩存

68、。</p><p>  max-age指示客戶機(jī)可以接收生存期不大于指定時(shí)間(以秒為單位)的響應(yīng)。</p><p>  min-fresh指示客戶機(jī)可以接收響應(yīng)時(shí)間小于當(dāng)前時(shí)間加上指定時(shí)間的響應(yīng)。</p><p>  max-stale指示客戶機(jī)可以接收超出超時(shí)期間的響應(yīng)消息。如果指定max-stale消息的值,那么客戶機(jī)可以接收超出超時(shí)期指定值之內(nèi)的響應(yīng)消息。&l

69、t;/p><p>  HTTP Keep-Alive</p><p>  Keep-Alive功能使客戶端到服務(wù)器端的連接持續(xù)有效,當(dāng)出現(xiàn)對(duì)服務(wù)器的后繼請(qǐng)求時(shí),Keep-Alive功能避免了建立或者重新建立連接。市場(chǎng)上的大部分Web服務(wù)器,包括iPlanet、IIS和Apache,都支持HTTP Keep-Alive。對(duì)于提供靜態(tài)內(nèi)容的網(wǎng)站來(lái)說(shuō),這個(gè)功能通常很有用。但是,對(duì)于負(fù)擔(dān)較重的網(wǎng)站來(lái)說(shuō)

70、,這里存在另外一個(gè)問(wèn)題:雖然為客戶保留打開(kāi)的連接有一定的好處,但它同樣影響了性能,因?yàn)樵谔幚頃和F陂g,本來(lái)可以釋放的資源仍舊被占用。當(dāng)Web服務(wù)器和應(yīng)用服務(wù)器在同一臺(tái)機(jī)器上運(yùn)行時(shí),Keep- Alive功能對(duì)資源利用的影響尤其突出。</p><p><b>  2.Date頭域</b></p><p>  Date頭域表示消息發(fā)送的時(shí)間,時(shí)間的描述格式由rfc822定

71、義。例如,Date:Mon,31Dec200104:25:57GMT。Date描述的時(shí)間表示世界標(biāo)準(zhǔn)時(shí),換算成本地時(shí)間,需要知道用戶所在的時(shí)區(qū)。</p><p>  3.Pragma頭域</p><p>  Pragma頭域用來(lái)包含實(shí)現(xiàn)特定的指令,最常用的是Pragma:no-cache。在HTTP/1.1協(xié)議中,它的含義和Cache-Control:no-cache相同。</p&g

72、t;<p><b>  2.1.2請(qǐng)求消息</b></p><p>  請(qǐng)求消息的第一行為下面的格式:</p><p>  MethodSPRequest-URISPHTTP-VersionCRLFMethod表示對(duì)于Request-URI完成的方法,這個(gè)字段是大小寫(xiě)敏感的,包括OPTIONS、GET、HEAD、POST、PUT、DELETE、TRACE

73、。方法GET和HEAD應(yīng)該被所有的通用WEB服務(wù)器支持,其他所有方法的實(shí)現(xiàn)是可選的。GET方法取回由Request-URI標(biāo)識(shí)的信息。HEAD方法也是取回由Request-URI標(biāo)識(shí)的信息,只是可以在響應(yīng)時(shí),不返回消息體。POST方法可以請(qǐng)求服務(wù)器接收包含在請(qǐng)求中的實(shí)體信息,可以用于提交表單,向新聞組、BBS、郵件群組和數(shù)據(jù)庫(kù)發(fā)送消息。</p><p>  SP表示空格。Request-URI遵循URI格式,在此

74、字段為星號(hào)(*)時(shí),說(shuō)明請(qǐng)求并不用于某個(gè)特定的資源地址,而是用于服務(wù)器本身。HTTP-Version表示支持的HTTP版本,例如為HTTP/1.1。CRLF表示換行回車符。請(qǐng)求頭域允許客戶端向服務(wù)器傳遞關(guān)于請(qǐng)求或者關(guān)于客戶機(jī)的附加信息。</p><p>  請(qǐng)求頭域可能包含下列字段Accept、Accept-Charset、Accept-Encoding、Accept-Language、Authorization

75、、From、Host、If-Modified-Since、If-Match、If-None-Match、If-Range、If-Range、If-Unmodified-Since、Max-Forwards、Proxy-Authorization、Range、Referer、User-Agent。對(duì)請(qǐng)求頭域的擴(kuò)展要求通訊雙方都支持,如果存在不支持的請(qǐng)求頭域,一般將會(huì)作為實(shí)體頭域處理。</p><p><b&g

76、t;  1.Host頭域</b></p><p>  Host頭域指定請(qǐng)求資源的Intenet主機(jī)和端口號(hào),必須表示請(qǐng)求url的原始服務(wù)器或網(wǎng)關(guān)的位置。HTTP/1.1請(qǐng)求必須包含主機(jī)頭域,否則系統(tǒng)會(huì)以400狀態(tài)碼返回。</p><p>  2.Referer頭域</p><p>  Referer頭域允許客戶端指定請(qǐng)求uri的源資源地址,這可以允許服務(wù)

77、器生成回退鏈表,可用來(lái)登陸、優(yōu)化cache等。他也允許廢除的或錯(cuò)誤的連接由于維護(hù)的目的被追蹤。如果請(qǐng)求的uri沒(méi)有自己的uri地址,Referer不能被發(fā)送。如果指定的是部分uri地址,則此地址應(yīng)該是一個(gè)相對(duì)地址。</p><p><b>  3.Range頭域</b></p><p>  Range頭域可以請(qǐng)求實(shí)體的一個(gè)或者多個(gè)子范圍。但是服務(wù)器可以忽略此請(qǐng)求頭,如

78、果無(wú)條件GET包含Range請(qǐng)求頭,響應(yīng)會(huì)以狀態(tài)碼206(PartialContent)返回而不是以200(OK)。</p><p>  4.User-Agent頭域</p><p>  User-Agent頭域的內(nèi)容包含發(fā)出請(qǐng)求的用戶信息。</p><p><b>  2.1.3響應(yīng)消息</b></p><p>  響

79、應(yīng)消息的第一行為下面的格式:</p><p>  HTTP-VersionSPStatus-CodeSPReason-PhraseCRLF</p><p>  HTTP-Version表示支持的HTTP版本,例如為HTTP/1.1。Status-Code是一個(gè)三個(gè)數(shù)字的結(jié)果代碼。Reason-Phrase給Status-Code提供一個(gè)簡(jiǎn)單的文本描述。Status-Code主要用于機(jī)器自動(dòng)

80、識(shí)別,Reason-Phrase主要用于幫助用戶理解。Status-Code的第一個(gè)數(shù)字定義響應(yīng)的類別,后兩個(gè)數(shù)字沒(méi)有分類的作用。第一個(gè)數(shù)字可能取5個(gè)不同的值:</p><p>  1xx:信息響應(yīng)類,表示接收到請(qǐng)求并且繼續(xù)處理</p><p>  2xx:處理成功響應(yīng)類,表示動(dòng)作被成功接收、理解和接受</p><p>  3xx:重定向響應(yīng)類,為了完成指定的動(dòng)作,

81、必須接受進(jìn)一步處理</p><p>  4xx:客戶端錯(cuò)誤,客戶請(qǐng)求包含語(yǔ)法錯(cuò)誤或者是不能正確執(zhí)行</p><p>  5xx:服務(wù)端錯(cuò)誤,服務(wù)器不能正確執(zhí)行一個(gè)正確的請(qǐng)求</p><p>  響應(yīng)頭域允許服務(wù)器傳遞不能放在狀態(tài)行的附加信息,這些域主要描述服務(wù)器的信息和Request-URI進(jìn)一步的信息。響應(yīng)頭域包含Age、Location、Proxy-Authen

82、ticate、Public、Retry-After、Server、Vary、Warning、WWW-Authenticate。對(duì)響應(yīng)頭域的擴(kuò)展要求通訊雙方都支持,如果存在不支持的響應(yīng)頭域,一般將會(huì)作為實(shí)體頭域處理。</p><p>  1.Location響應(yīng)頭</p><p>  Location響應(yīng)頭用于重定向接收者到一個(gè)新URI地址。</p><p>  2.

83、Server響應(yīng)頭</p><p>  Server響應(yīng)頭包含處理請(qǐng)求的原始服務(wù)器的軟件信息。此域能包含多個(gè)產(chǎn)品標(biāo)識(shí)和注釋,產(chǎn)品標(biāo)識(shí)一般按照重要性排序。</p><p><b>  2.1.4實(shí)體信息</b></p><p>  請(qǐng)求消息和響應(yīng)消息都可以包含實(shí)體信息,實(shí)體信息一般由實(shí)體頭域和實(shí)體組成。實(shí)體頭域包含關(guān)于實(shí)體的原信息,實(shí)體頭包括Al

84、low、Content-Base、Content-Encoding、Content-Language、Content-Length、Content-Location、Content-MD5、Content-Range、Content-Type、Etag、Expires、Last-Modified、extension-header。extension-header允許客戶端定義新的實(shí)體頭,但是這些域可能無(wú)法被接受方識(shí)別。實(shí)體可以是一個(gè)經(jīng)過(guò)

85、編碼的字節(jié)流,它的編碼方式由Content-Encoding或Content-Type定義,它的長(zhǎng)度由Content-Length或Content-Range定義。</p><p>  1.Content-Type實(shí)體頭</p><p>  Content-Type實(shí)體頭用于向接收方指示實(shí)體的介質(zhì)類型,指定HEAD方法送到接收方的實(shí)體介質(zhì)類型,或GET方法發(fā)送的請(qǐng)求介質(zhì)類型</p&g

86、t;<p>  2.Content-Range實(shí)體頭</p><p>  Content-Range實(shí)體頭用于指定整個(gè)實(shí)體中的一部分的插入位置,他也指示了整個(gè)實(shí)體的長(zhǎng)度。在服務(wù)器向客戶返回一個(gè)部分響應(yīng),它必須描述響應(yīng)覆蓋的范圍和整個(gè)實(shí)體長(zhǎng)度。一般格式:</p><p>  Content-Range:bytes-unitSPfirst-byte-pos-last-byte-p

87、os/entity-legth</p><p>  例如,傳送頭500個(gè)字節(jié)次字段的形式:Content-Range:bytes0-499/1234如果一個(gè)http消息包含此節(jié)(例如,對(duì)范圍請(qǐng)求的響應(yīng)或?qū)σ幌盗蟹秶闹丿B請(qǐng)求),Content-Range表示傳送的范圍,Content-Length表示實(shí)際傳送的字節(jié)數(shù)。</p><p>  3.Last-modified實(shí)體頭</p&

88、gt;<p>  Last-modified實(shí)體頭指定服務(wù)器上保存內(nèi)容的最后修訂時(shí)間。</p><p>  例如,傳送頭500個(gè)字節(jié)次字段的形式:Content-Range:bytes0-499/1234如果一個(gè)http消息包含此節(jié)(例如,對(duì)范圍請(qǐng)求的響應(yīng)或?qū)σ幌盗蟹秶闹丿B請(qǐng)求),Content-Range表示傳送的范圍,Content-Length表示實(shí)際傳送的字節(jié)數(shù)。</p>&

89、lt;p>  2.2 MongoDB簡(jiǎn)介</p><p>  MongoDB是一個(gè)基于分布式文件存儲(chǔ)的數(shù)據(jù)庫(kù)。由C++語(yǔ)言編寫(xiě)。旨在為WEB應(yīng)用提供可擴(kuò)展的高性能數(shù)據(jù)存儲(chǔ)解決方案。MongoDB是一個(gè)介于關(guān)系數(shù)據(jù)庫(kù)和非關(guān)系數(shù)據(jù)庫(kù)之間的產(chǎn)品,是非關(guān)系數(shù)據(jù)庫(kù)當(dāng)中功能最豐富,最像關(guān)系數(shù)據(jù)庫(kù)的。他支持的數(shù)據(jù)結(jié)構(gòu)非常松散,是類似json的bjson格式,因此可以存儲(chǔ)比較復(fù)雜的數(shù)據(jù)類型。Mongo最大的特點(diǎn)是他支持的

90、查詢語(yǔ)言非常強(qiáng)大,其語(yǔ)法有點(diǎn)類似于面向?qū)ο蟮牟樵冋Z(yǔ)言,幾乎可以實(shí)現(xiàn)類似關(guān)系數(shù)據(jù)庫(kù)單表查詢的絕大部分功能,而且還支持對(duì)數(shù)據(jù)建立索引。</p><p>  2.2.1 獨(dú)立服務(wù)器</p><p>  如MySQL或SQLServer 一樣,MongoDB提供偵聽(tīng)端口以便接入。它提供了用于查詢,創(chuàng)建,更新和刪除的工具。按照它的接入方式相同:連接,執(zhí)行任務(wù)并關(guān)閉連接。</p><

91、;p>  2.2.2 基于文檔 </p><p>  MongoDB 沒(méi)有結(jié)構(gòu)化語(yǔ)言。你想創(chuàng)建一個(gè)新的文檔類型,不用做任何事來(lái)告訴數(shù)據(jù)庫(kù)關(guān)于這些數(shù)據(jù)的結(jié)構(gòu),而僅僅是存到數(shù)據(jù)庫(kù)中即可。 MongoDB使用類似JavaScript或PHP 的類型處理方式。就是說(shuō),數(shù)據(jù)庫(kù)是靈活的弱類型。有一些數(shù)據(jù)是有限制條件的(大塊的數(shù)據(jù)需要一些明確的處理),在大多數(shù)情況下,你可以像寫(xiě)PHP代碼一樣編寫(xiě)你的Mong

92、oDB代碼。 </p><p>  2.2.3非結(jié)構(gòu)化 </p><p>  MongoDB沒(méi)有很多查詢語(yǔ)句。在大多數(shù)情況下,只需給它一個(gè)數(shù)組指定你想要的信息,然后它會(huì)給你返回文檔的數(shù)組。如果你想運(yùn)行一些非常復(fù)雜的查詢(如Map-Reduce操作),可以向MongoDB傳遞JavaScript,其內(nèi)部的JavaScript引擎可以解析這個(gè)腳本。 &

93、lt;/p><p><b>  2.2.4 連接</b></p><p>  它具有強(qiáng)大的主流開(kāi)發(fā)語(yǔ)言支持,如C#、C++、Java、PHP、Perl、Python、Ruby。java程序設(shè)計(jì)語(yǔ)言是隨著因特網(wǎng)的發(fā)展而產(chǎn)生的,也是目前被國(guó)內(nèi)外廣泛使用的程序設(shè)計(jì)語(yǔ)言之一。由于Java語(yǔ)言的重要性,而且社會(huì)的需求量大,就業(yè)面廣的一些特點(diǎn)。使得做Java的一些項(xiàng)目需要訪問(wèn)數(shù)據(jù)庫(kù),

94、特別目前比較主流的軟件開(kāi)發(fā)中,都涉及到訪問(wèn)數(shù)據(jù)庫(kù)的問(wèn)題, C#連接MongoDB數(shù)據(jù)庫(kù)需要CSharpDriver。</p><p>  CSharpDriver,它是C#應(yīng)用程序連接和操作關(guān)系型數(shù)據(jù)庫(kù)的應(yīng)用程序接口(API)。,通過(guò)調(diào)用這些類和接口所提供的方法,可以連接不同的數(shù)據(jù)庫(kù),并為各種不同的數(shù)據(jù)庫(kù)提供統(tǒng)一的操作方式和編程思路。</p><p>  CSharpDriver工作原理。

95、如圖2-1所示,其中CSharpDriver驅(qū)動(dòng)程序管理器是CSharpDriver體系結(jié)構(gòu)的核心,其作用是根據(jù)目標(biāo)數(shù)據(jù)沖突(包括連接方式)的不同,選擇相應(yīng)的CSharpDriver驅(qū)動(dòng)程序供當(dāng)前C#應(yīng)用程序調(diào)用。</p><p>  圖2-1 C#連接MongoDB流程圖</p><p>  2.3 Selenium+PhantomJS</p><p>  涉

96、及到JavaScript渲染的頁(yè)面卻不能抓取,所以采用Web自動(dòng)化測(cè)試工具Selenium,無(wú)界面瀏覽器PhantomJS來(lái)抓取JavaScript渲染的頁(yè)面,帶我們熟悉使用后,爬蟲(chóng)技能將大大提升。</p><p>  Selenium是一個(gè)用于Web應(yīng)用程序測(cè)試的工具。Selenium 測(cè)試直接運(yùn)行在瀏覽器中,就像真正的用戶在操作一樣。支持的瀏覽器包括IE,Mozilla和Firefox等。這個(gè)工具的主要功能包

97、括:測(cè)試與瀏覽器的兼容性--測(cè)試你的應(yīng)用程序看是否能夠很好得工作在不同瀏覽器和操作系統(tǒng)之上。測(cè)試系統(tǒng)功能--創(chuàng)建衰退測(cè)試檢驗(yàn)軟件功能和用戶需求。</p><p>  PhantomJS是一個(gè)無(wú)界面的,可腳本編程的WebKit瀏覽器引擎。它原生支持多種web 標(biāo)準(zhǔn):DOM 操作,CSS選擇器,JSON,Canvas 以及SVG。phantomjs 可以做什么?無(wú)UI界面的網(wǎng)站測(cè)試、屏幕快照、頁(yè)面操作自動(dòng)化、網(wǎng)絡(luò)監(jiān)控

98、</p><p><b>  2.4 多線程</b></p><p>  為了提升采集性能,需要采用多線程的采集技術(shù)。很多大型網(wǎng)站都采用多個(gè)服務(wù)器鏡像的方式提供同樣的網(wǎng)頁(yè)內(nèi)容。采用多線程并行抓取能同時(shí)獲取同一個(gè)網(wǎng)站的多個(gè)服務(wù)器中的網(wǎng)頁(yè),這樣能極大地減少抓取這類網(wǎng)站的時(shí)間。 </p><p>  多線程是一種機(jī)制,它允許在程序中并發(fā)執(zhí)行多個(gè)指令

99、流,每個(gè)指令流都稱為一個(gè)線程,彼此間互相獨(dú)立。線程又稱為輕量級(jí)進(jìn)程,它和進(jìn)程一樣擁有獨(dú)立的執(zhí)行控制,由操作系統(tǒng)負(fù)責(zé)調(diào)度,區(qū)別在于線程沒(méi)有獨(dú)立的存儲(chǔ)空間,而是和所屬進(jìn)程中的其他線程共享存儲(chǔ)空間,這使得線程間的通信較進(jìn)程簡(jiǎn)單。多個(gè)線程的執(zhí)行是并發(fā)的,即在邏輯上是“同時(shí)”的。如果系統(tǒng)只有一個(gè)CPU,那么真正的“同時(shí)”是不可能的,但是由于CPU切換的速度非常快,用戶感覺(jué)不到其中的區(qū)別,因此用戶感覺(jué)到線程是同時(shí)執(zhí)行的。</p>&l

100、t;p>  2.5 Fiddler</p><p>  Fiddler是一個(gè)http協(xié)議調(diào)試代理工具,用來(lái)對(duì)數(shù)據(jù)進(jìn)行抓包分析,它能夠記錄并檢查所有你的電腦和互聯(lián)網(wǎng)之間的http通訊,設(shè)置斷點(diǎn),查看所有的“進(jìn)出”Fiddler的數(shù)據(jù)(指cookie,html,js,css等文件,這些都可以讓你胡亂修改的意思)。Fiddler 要比其他的網(wǎng)絡(luò)調(diào)試器要更加簡(jiǎn)單,因?yàn)樗粌H僅暴露http通訊還提供了一個(gè)用戶友好的

101、格式。</p><p>  使用Fiddler進(jìn)行數(shù)據(jù)抓包,并對(duì)這些數(shù)據(jù)據(jù)進(jìn)行分析,分析其實(shí)現(xiàn)規(guī)律后,就可以通過(guò)編寫(xiě)程序構(gòu)造出對(duì)應(yīng)的請(qǐng)求,并由程序自動(dòng)地實(shí)現(xiàn)這些請(qǐng)求發(fā)送。</p><p><b>  2.6 代理池</b></p><p>  現(xiàn)在越來(lái)越多的網(wǎng)站開(kāi)始注意保護(hù)自己的數(shù)據(jù)(國(guó)外網(wǎng)站做的要比國(guó)內(nèi)早),通過(guò)各種策略來(lái)反抗異常的采集。其

102、中最常見(jiàn)的策略是限制客戶端IP的訪問(wèn)頻率,通常表現(xiàn)為當(dāng)采集爬蟲(chóng)客戶端訪問(wèn)網(wǎng)站速度過(guò)快時(shí),網(wǎng)站會(huì)在一段時(shí)間內(nèi)返回403、503之類的錯(cuò)誤(例如谷歌、亞馬遜)或返回驗(yàn)證碼頁(yè)面(例如大眾點(diǎn)評(píng)網(wǎng)、去哪兒網(wǎng)),有個(gè)別網(wǎng)站會(huì)永久封鎖你IP的可能。</p><p>  通過(guò)多線程+ HTTP代理。通過(guò)高匿名HTTP代理發(fā)出一個(gè)請(qǐng)求,目標(biāo)網(wǎng)站只能檢測(cè)到HTTP代理的IP,而無(wú)法檢測(cè)到源IP,也無(wú)法知道你在使用代理,對(duì)目標(biāo)網(wǎng)站來(lái)說(shuō)

103、這個(gè)請(qǐng)求是來(lái)自于另外一個(gè)訪客(與你無(wú)關(guān))。假設(shè)我們擁有100個(gè)穩(wěn)定高匿的HTTP代理,在同IP間隔5秒的前提下,理論上每天能達(dá)到的下載量是170萬(wàn)!</p><p>  在程序中的實(shí)現(xiàn)方法:開(kāi)啟100個(gè)線程,每個(gè)線程固定地使用一個(gè)HTTP代理,每個(gè)線程處理不同的采集任務(wù),每個(gè)線程內(nèi)控制訪問(wèn)網(wǎng)站的速度。由于數(shù)據(jù)提取是純計(jì)算操作多線程并不能加速,12核CPU環(huán)境下,實(shí)際每天的采集量能達(dá)到100萬(wàn)左右(每個(gè)頁(yè)面提取20

104、個(gè)字段左右)。</p><p>  2.7 MVC設(shè)計(jì)模式</p><p>  MVC是三個(gè)單詞的縮寫(xiě),分別為: 模型(Model),視圖(View)和控制Controller)。 MVC模式的目的就是實(shí)現(xiàn)Web系統(tǒng)的職能分工。 </p><p>  Model層:應(yīng)用程序中用于處理應(yīng)用程序數(shù)據(jù)邏輯的部分。通常模型對(duì)象負(fù)責(zé)在數(shù)據(jù)庫(kù)中存取數(shù)據(jù)。</p>

105、<p>  View層:應(yīng)用程序中處理數(shù)據(jù)顯示的部分。通常視圖是依據(jù)模型數(shù)據(jù)創(chuàng)建的。</p><p>  Controller層:是應(yīng)用程序中處理用戶交互的部分。通常控制器負(fù)責(zé)從視圖讀取數(shù)據(jù),控制用戶輸入,并向模型發(fā)送數(shù)據(jù)。</p><p>  MVC本來(lái)是存在于Desktop程序中的,M是指數(shù)據(jù)模型,V是指用戶界面,C則是控制器。使用MVC的目的是將M和V的實(shí)現(xiàn)代碼分離,從而

106、使同一個(gè)程序可以使用不同的表現(xiàn)形式。比如一批統(tǒng)計(jì)數(shù)據(jù)你可以分別用柱狀圖、餅圖來(lái)表示。C存在的目的則是確保M和V的同步,一旦M改變,V應(yīng)該同步更新。</p><p>  MVC 分層有助于管理復(fù)雜的應(yīng)用程序,因?yàn)槟梢栽谝粋€(gè)時(shí)間內(nèi)專門(mén)關(guān)注一個(gè)方面。例如,您可以在不依賴業(yè)務(wù)邏輯的情況下專注于視圖設(shè)計(jì)。同時(shí)也讓?xiě)?yīng)用程序的測(cè)試更加容易。</p><p>  MVC 分層同時(shí)也簡(jiǎn)化了分組開(kāi)發(fā)。不同的

107、開(kāi)發(fā)人員可同時(shí)開(kāi)發(fā)視圖、控制器邏輯和業(yè)務(wù)邏輯。</p><p>  ASP.NET MVC框架特色:</p><p>  1.分離任務(wù)(輸入邏輯,業(yè)務(wù)邏輯和顯示邏輯),易于測(cè)試和默認(rèn)支持測(cè)試驅(qū)動(dòng)開(kāi)發(fā)(TDD)。所有MVC用到的組件都是基于接口并且可以在進(jìn)行測(cè)試時(shí)進(jìn)行Mock,你在不運(yùn)行ASP.NET進(jìn)程的情況下進(jìn)行測(cè)試,使得測(cè)試更加快速和簡(jiǎn)捷。</p><p>  

108、2.可擴(kuò)展的簡(jiǎn)便的框架。MVC框架被設(shè)計(jì)用來(lái)更輕松的移植和定制功能。你可以自定義視圖引擎、UrlRouting規(guī)則及重載Action方法等。MVC也支持Dependency Injection (DI,依賴注入) and Inversion of Control (IoC,控制反轉(zhuǎn))的良好支持。</p><p>  3.強(qiáng)大的UrlRouting機(jī)制讓你更方便的建立容易理解和可搜索的Url,為SEO提供更好的支持

109、。Url可以不包含任何文件擴(kuò)展名,并且可以重寫(xiě)Url使其對(duì)搜索引擎更加友好。</p><p>  4.可以使用ASP.NET現(xiàn)有的頁(yè)面標(biāo)記、用戶控件、模板頁(yè)。你可以使用嵌套模板頁(yè),嵌入表達(dá)式<%=%>,聲明服務(wù)器控件、模板,數(shù)據(jù)綁定、定位等等。</p><p>  5.對(duì)現(xiàn)有的asp.net程序的支持,mvc讓你可以使用如窗體認(rèn)證和Windows認(rèn)證、url認(rèn)證、組管理和規(guī)則、

110、輸出、數(shù)據(jù)緩存、session、profile 、health monitoring、配置管理系統(tǒng)、provider architecture特性。</p><p><b>  第三章 需求分析</b></p><p>  3.1 系統(tǒng)總體需求 </p><p>  需求就是以一種清晰、簡(jiǎn)明、一致且無(wú)二義性的方式對(duì)一個(gè)待開(kāi)發(fā)系統(tǒng)中的各個(gè)方面有

溫馨提示

  • 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)論