熱點新聞獲取與管理系統——畢業(yè)論文_第1頁
已閱讀1頁,還剩56頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

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

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

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

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

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

14、<p>  第二章 相關技術12</p><p>  2.1 Http協議簡介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設計模式22</p><p>  第三章 需求分析23</p><p>  3.1 系統總體需求23</p><p>  3.2 系統功能需求24</p><p>  3.3 非功能性需求2

16、7</p><p>  第四章 系統設計28</p><p>  4.1 系統架構設計28</p><p>  4.2 系統總體功能設計29</p><p>  4.3 系統詳細功能設計31</p><p>  4.4 系統數據庫設計37</p><p>  第五章 系統實現

17、40</p><p>  5.1 系統典型界面40</p><p>  5.2 關鍵程序實現42</p><p>  第六章 系統測試結論48</p><p>  6.1 測試原理48</p><p>  6.2 測試項目48</p><p>  6.3 測試結果49<

18、;/p><p><b>  總結與體會49</b></p><p><b>  致 謝50</b></p><p><b>  參考文獻51</b></p><p><b>  第一章 緒論</b></p><p><b&

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

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

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

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

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

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

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

26、數據可視化。</p><p>  顯然,大量的應用場景都會需要這種幾乎可以毫無阻礙地獲取數據的手段:市場預測、機器語言翻譯,甚至醫(yī)療診斷領域,通過對新聞網站、文章以及健康論壇中的數據進行采集和分析,也可以獲得很多好處。</p><p>  甚至在藝術領域,網絡數據采集也為藝術創(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”開頭的短句,最終做成了一個很受大眾歡迎的數據可視圖,描述了這個世界每天、每分鐘的感覺。</p><p>  無論你現在處于哪個領域,網絡數據采集都可以讓你的工作更高效,幫你

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

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

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

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

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

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

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

35、在網頁版的PDF和網絡圖片中。</p><p><b>  1.3 研究內容</b></p><p><b>  1.3.1采集價值</b></p><p><b>  1.3.1.1應用</b></p><p>  1、應用于搜索引擎與垂直搜索平臺搭建與運營</p>

36、;<p>  2、應用于綜合門戶與行業(yè)門戶、地方門戶、專業(yè)門戶網站數據支撐與流量運營</p><p>  3、應用“電子政務”與“電子商務平臺”的運營</p><p>  4、應用于知識管理與知識共享</p><p>  5、應用于“企業(yè)競爭情報系統”的運營</p><p>  6、應用于“BI商業(yè)智能系統”</p>

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

54、。</p><p>  所以我們在進行網絡數據采集也應該有所不為。國內外關于網絡數據保護的法律法規(guī)都在不斷地制定與完善中,網絡數據采集遵守知識版權、網絡信息安全等等相關的法律,網絡爬蟲嚴格控制網絡數據采集的速度,降低被采集網站服務器的負擔。惡意、暴力式消耗別人網站的服務器資源,甚至拖垮別人網站是一件不道德的事情。</p><p>  企業(yè)內部信息系統,屬于內部信息,屬于采集禁區(qū),不協助他人

55、采集內部信息。</p><p>  采集到帶有個人隱私信息,也應當謹慎、合理、合法使用。</p><p>  我們掌握采集這項技術時,也應該有所為,有所不為,應當為社會、為他人創(chuàng)造價值,不應濫用技術,謀取私利。</p><p><b>  1.3.4實踐課題</b></p><p>  本次實踐課題是互聯網熱點新聞評論的

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

71、義。例如,Date:Mon,31Dec200104:25:57GMT。Date描述的時間表示世界標準時,換算成本地時間,需要知道用戶所在的時區(qū)。</p><p>  3.Pragma頭域</p><p>  Pragma頭域用來包含實現特定的指令,最常用的是Pragma:no-cache。在HTTP/1.1協議中,它的含義和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應該被所有的通用WEB服務器支持,其他所有方法的實現是可選的。GET方法取回由Request-URI標識的信息。HEAD方法也是取回由Request-URI標識的信息,只是可以在響應時,不返回消息體。POST方法可以請求服務器接收包含在請求中的實體信息,可以用于提交表單,向新聞組、BBS、郵件群組和數據庫發(fā)送消息。</p><p>  SP表示空格。Request-URI遵循URI格式,在此

74、字段為星號(*)時,說明請求并不用于某個特定的資源地址,而是用于服務器本身。HTTP-Version表示支持的HTTP版本,例如為HTTP/1.1。CRLF表示換行回車符。請求頭域允許客戶端向服務器傳遞關于請求或者關于客戶機的附加信息。</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的原始服務器或網關的位置。HTTP/1.1請求必須包含主機頭域,否則系統會以400狀態(tài)碼返回。</p><p>  2.Referer頭域</p><p>  Referer頭域允許客戶端指定請求uri的源資源地址,這可以允許服務

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

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

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

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

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

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

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

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

86、t;<p>  2.Content-Range實體頭</p><p>  Content-Range實體頭用于指定整個實體中的一部分的插入位置,他也指示了整個實體的長度。在服務器向客戶返回一個部分響應,它必須描述響應覆蓋的范圍和整個實體長度。一般格式:</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é)(例如,對范圍請求的響應或對一系列范圍的重疊請求),Content-Range表示傳送的范圍,Content-Length表示實際傳送的字節(jié)數。</p><p>  3.Last-modified實體頭</p&

88、gt;<p>  Last-modified實體頭指定服務器上保存內容的最后修訂時間。</p><p>  例如,傳送頭500個字節(jié)次字段的形式:Content-Range:bytes0-499/1234如果一個http消息包含此節(jié)(例如,對范圍請求的響應或對一系列范圍的重疊請求),Content-Range表示傳送的范圍,Content-Length表示實際傳送的字節(jié)數。</p>&

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

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

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

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

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

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

95、如圖2-1所示,其中CSharpDriver驅動程序管理器是CSharpDriver體系結構的核心,其作用是根據目標數據沖突(包括連接方式)的不同,選擇相應的CSharpDriver驅動程序供當前C#應用程序調用。</p><p>  圖2-1 C#連接MongoDB流程圖</p><p>  2.3 Selenium+PhantomJS</p><p>  涉

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

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

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

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

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

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

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

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

104、個字段左右)。</p><p>  2.7 MVC設計模式</p><p>  MVC是三個單詞的縮寫,分別為: 模型(Model),視圖(View)和控制Controller)。 MVC模式的目的就是實現Web系統的職能分工。 </p><p>  Model層:應用程序中用于處理應用程序數據邏輯的部分。通常模型對象負責在數據庫中存取數據。</p>

105、<p>  View層:應用程序中處理數據顯示的部分。通常視圖是依據模型數據創(chuàng)建的。</p><p>  Controller層:是應用程序中處理用戶交互的部分。通??刂破髫撠煆囊晥D讀取數據,控制用戶輸入,并向模型發(fā)送數據。</p><p>  MVC本來是存在于Desktop程序中的,M是指數據模型,V是指用戶界面,C則是控制器。使用MVC的目的是將M和V的實現代碼分離,從而

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

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

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

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

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

溫馨提示

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

評論

0/150

提交評論