2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩56頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、<p>  采用技術(shù)手段,采集互聯(lián)網(wǎng)輿情信息,從而達(dá)到了解社會民情,挖掘民意,從而輔助國家決策,為科學(xué)決策和和諧社會建設(shè)更好的服務(wù)。 輿情監(jiān)測的最早形式是社會調(diào)查,下基層了解民間疾苦,現(xiàn)在發(fā)展為網(wǎng)絡(luò)輿情監(jiān)測,借助于互聯(lián)網(wǎng)通道,采用技術(shù)手段,大大降低了社會輿情調(diào)查成本(社會調(diào)查的樣本規(guī)模和代表性往往不足,如三峽移民調(diào)查1萬人,調(diào)查人員需要走村串戶,耗時幾個月,而網(wǎng)絡(luò)輿情可以在一個小時內(nèi)采集到幾百萬的言論)。輿情監(jiān)測一向都是各個國

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

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

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

5、、mongodb數(shù)據(jù)庫等相關(guān)技術(shù)對系統(tǒng)進(jìn)行了實現(xiàn),系統(tǒng)數(shù)據(jù)采集及時、操作簡單、運行穩(wěn)定、基本實現(xiàn)了對互聯(lián)網(wǎng)新聞文本的獲取與管理。</p><p>  關(guān)鍵詞:熱點新聞;網(wǎng)絡(luò)爬蟲;WEB前端展示;C#;數(shù)據(jù)庫 </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 研究內(nèi)容6</p><p>  1.5 論文組織12</p>

14、<p>  第二章 相關(guān)技術(shù)12</p><p>  2.1 Http協(xié)議簡介12</p><p>  2.2 MongoDB簡介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è)計模式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è)計28</p><p>  4.1 系統(tǒng)架構(gòu)設(shè)計28</p><p>  4.2 系統(tǒng)總體功能設(shè)計29</p><p>  4.3 系統(tǒng)詳細(xì)功能設(shè)計31</p><p>  4.4 系統(tǒng)數(shù)據(jù)庫設(shè)計37</p><p>  第五章 系統(tǒng)實現(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)測試結(jié)論48</p><p>  6.1 測試原理48</p><p>  6.2 測試項目48</p><p>  6.3 測試結(jié)果49<

18、;/p><p><b>  總結(jié)與體會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ò)上的信息呈幾何式增長。這使得人們擁有如此多信息驚喜同時,發(fā)現(xiàn)在網(wǎng)上找到所需信息的困難和無助,這種情況下催生出采集技術(shù)。。</p><p>  在互聯(lián)網(wǎng)上進(jìn)行自動數(shù)據(jù)采集這件事和互聯(lián)網(wǎng)存在的時間差不多一樣長。雖然網(wǎng)絡(luò)數(shù)據(jù)采集并不是新術(shù)語,常見的稱謂是網(wǎng)頁抓屏(screen scraping)、數(shù)據(jù)挖

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

36、;<p>  2、應(yīng)用于綜合門戶與行業(yè)門戶、地方門戶、專業(yè)門戶網(wǎng)站數(shù)據(jù)支撐與流量運營</p><p>  3、應(yīng)用“電子政務(wù)”與“電子商務(wù)平臺”的運營</p><p>  4、應(yīng)用于知識管理與知識共享</p><p>  5、應(yīng)用于“企業(yè)競爭情報系統(tǒ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)測與測控系統(tǒng)”等第一階段、信息搜索服務(wù)</p><p><b>  1.3.1.2前景</b></p><p>  人們通常所說的“海量數(shù)據(jù)采集”就是指類

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

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

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

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

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

43、息</p><p>  網(wǎng)頁里隱藏網(wǎng)站版權(quán)或者一些隨機垃圾文字,這些文字風(fēng)格寫在css文件中 </p><p>  分析:雖然不能防止采集,但是會讓采集后的內(nèi)容充滿了你網(wǎng)站的版權(quán)說明或者一些垃圾文字,因為一般采集器不會同時采集你的css文件,那些文字沒了風(fēng)格,就顯示出來了。 </p><p>  適用網(wǎng)站:所有網(wǎng)站 </p><p>  采集

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

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

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

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

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

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

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

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

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

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

54、。</p><p>  所以我們在進(jìn)行網(wǎng)絡(luò)數(shù)據(jù)采集也應(yīng)該有所不為。國內(nèi)外關(guān)于網(wǎng)絡(luò)數(shù)據(jù)保護(hù)的法律法規(guī)都在不斷地制定與完善中,網(wǎng)絡(luò)數(shù)據(jù)采集遵守知識版權(quán)、網(wǎng)絡(luò)信息安全等等相關(guān)的法律,網(wǎng)絡(luò)爬蟲嚴(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>  采集到帶有個人隱私信息,也應(yīng)當(dāng)謹(jǐn)慎、合理、合法使用。</p><p>  我們掌握采集這項技術(shù)時,也應(yīng)該有所為,有所不為,應(yīng)當(dāng)為社會、為他人創(chuàng)造價值,不應(yīng)濫用技術(shù),謀取私利。</p><p><b>  1.3.4實踐課題</b></p><p>  本次實踐課題是互聯(lián)網(wǎng)熱點新聞評論的

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

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

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

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

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

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

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

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

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

65、通用頭域:</p><p>  1.Cache-Control頭域</p><p>  Cache-Control指定請求和響應(yīng)遵循的緩存機制。在請求消息或響應(yīng)消息中設(shè)置Cache-Control并不會修改另一個消息處理過程中的緩存處理過程。請求時的緩存指令包括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。各個消息中的指令含義如下:</p><p>  Public指示響應(yīng)可被任何緩存區(qū)緩存。</p><p>  Private指示對于單個用戶的整個或部分響應(yīng)消息,不能被共享緩存處理。這允許服務(wù)器僅僅描述當(dāng)前

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

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

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

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

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

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

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

74、字段為星號(*)時,說明請求并不用于某個特定的資源地址,而是用于服務(wù)器本身。HTTP-Version表示支持的HTTP版本,例如為HTTP/1.1。CRLF表示換行回車符。請求頭域允許客戶端向服務(wù)器傳遞關(guān)于請求或者關(guān)于客戶機的附加信息。</p><p>  請求頭域可能包含下列字段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。對請求頭域的擴展要求通訊雙方都支持,如果存在不支持的請求頭域,一般將會作為實體頭域處理。</p><p><b&g

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

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

78、果無條件GET包含Range請求頭,響應(yīng)會以狀態(tài)碼206(PartialContent)返回而不是以200(OK)。</p><p>  4.User-Agent頭域</p><p>  User-Agent頭域的內(nèi)容包含發(fā)出請求的用戶信息。</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是一個三個數(shù)字的結(jié)果代碼。Reason-Phrase給Status-Code提供一個簡單的文本描述。Status-Code主要用于機器自動

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

81、必須接受進(jìn)一步處理</p><p>  4xx:客戶端錯誤,客戶請求包含語法錯誤或者是不能正確執(zhí)行</p><p>  5xx:服務(wù)端錯誤,服務(wù)器不能正確執(zhí)行一個正確的請求</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。對響應(yīng)頭域的擴展要求通訊雙方都支持,如果存在不支持的響應(yīng)頭域,一般將會作為實體頭域處理。</p><p>  1.Location響應(yīng)頭</p><p>  Location響應(yīng)頭用于重定向接收者到一個新URI地址。</p><p>  2.

83、Server響應(yīng)頭</p><p>  Server響應(yīng)頭包含處理請求的原始服務(wù)器的軟件信息。此域能包含多個產(chǎn)品標(biāo)識和注釋,產(chǎn)品標(biāo)識一般按照重要性排序。</p><p><b>  2.1.4實體信息</b></p><p>  請求消息和響應(yīng)消息都可以包含實體信息,實體信息一般由實體頭域和實體組成。實體頭域包含關(guān)于實體的原信息,實體頭包括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允許客戶端定義新的實體頭,但是這些域可能無法被接受方識別。實體可以是一個經(jīng)過

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

104、個字段左右)。</p><p>  2.7 MVC設(shè)計模式</p><p>  MVC是三個單詞的縮寫,分別為: 模型(Model),視圖(View)和控制Controller)。 MVC模式的目的就是實現(xiàn)Web系統(tǒng)的職能分工。 </p><p>  Model層:應(yīng)用程序中用于處理應(yīng)用程序數(shù)據(jù)邏輯的部分。通常模型對象負(fù)責(zé)在數(shù)據(jù)庫中存取數(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本來是存在于Desktop程序中的,M是指數(shù)據(jù)模型,V是指用戶界面,C則是控制器。使用MVC的目的是將M和V的實現(xiàn)代碼分離,從而

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

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

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

109、。Url可以不包含任何文件擴展名,并且可以重寫Url使其對搜索引擎更加友好。</p><p>  4.可以使用ASP.NET現(xiàn)有的頁面標(biāo)記、用戶控件、模板頁。你可以使用嵌套模板頁,嵌入表達(dá)式<%=%>,聲明服務(wù)器控件、模板,數(shù)據(jù)綁定、定位等等。</p><p>  5.對現(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>  需求就是以一種清晰、簡明、一致且無二義性的方式對一個待開發(fā)系統(tǒng)中的各個方面有

溫馨提示

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

評論

0/150

提交評論