軟件工程畢業設計(論文)網絡爬蟲設計與實現_第1頁
軟件工程畢業設計(論文)網絡爬蟲設計與實現_第2頁
軟件工程畢業設計(論文)網絡爬蟲設計與實現_第3頁
軟件工程畢業設計(論文)網絡爬蟲設計與實現_第4頁
軟件工程畢業設計(論文)網絡爬蟲設計與實現_第5頁
已閱讀5頁,還剩53頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

1、畢業設計(論文)說明書學 院 軟件學院 專 業 軟件工程 年 級 2007 姓 名 指導教師 2011年 3月 6 日畢業設計(論文)任務書題目:網絡爬蟲設計與實現學生姓名 學院名稱 軟件學院 專 業 軟件工程 學 號 指導教師 職 稱 講師 1、 原始依據(包括設計或論文的工作基礎、研究條件、應用環境、工作目的等。)互聯網是一個龐大的非結構化的數據庫,將數據有效的檢索并組織呈現出來有著巨大的應用前景。搜索引擎作為一個輔助人們檢索信息的工具成為用戶訪問萬維網的入口和指南。但是,這些通用性搜索引擎也存在著一定的局限性。不同領域、不同背景的用戶往往具有不同的檢索目的和需求,通用搜索引擎所返回的結果

2、包含大量用戶不關心的網頁。所以需要一個能基于主題搜索的滿足特定需求的網絡爬蟲。為了解決上述問題,參照成功的網絡爬蟲模式,對網絡爬蟲進行研究,從而能夠為網絡爬蟲實現更深入的主題相關性,提供滿足特定搜索需求的網絡爬蟲。2、 參考文獻1winter中文搜索引擎技術解密:網絡蜘蛛 m北京:人民郵電出版社,2004年2sergey等the anatomy of a large-scale hypertextual web search engine m北京:清華大學出版社,1998年3wisenutwisenut search engine white paper m北京:中國電力出版社,2001年4g

3、ary r.wright w.richard stevenstcp-ip協議詳解卷3:tcp事務協議,http,nntp和unix域協議 m北京:機械工業出版社,2002 年1月.5羅剛 王振東自己動手寫網絡爬蟲m北京:清華大學出版社,2010年10月.6李曉明,閆宏飛,王繼民搜索引擎:原理、技術與系統華夏英才基金學術文庫m北京:科學出版社,2005年04月.3、 設計(研究)內容和要求(包括設計或研究內容、主要指標與技術參數,并根據課題性質對學生提出具體要求。)本課題的主要目的是設計面向主題的網絡爬蟲程序,同時需要滿足的是具有一定的性能,要考慮到網絡爬蟲的各種需求。網絡爬蟲應用寬度搜索技術。

4、對url進行分析,去重。網絡爬蟲使用多線程技術,讓爬蟲具備更強大的抓取能力。網絡爬蟲要實現對特定主題的爬取。網絡爬蟲還要完成信息提取任務,對于抓取回來的網頁提取出來:新聞、電子圖書、行業信息等。對網絡爬蟲的連接網絡設置連接及讀取時間,避免無限制的等待。研究網絡爬蟲的原理并實現爬蟲的相關功能。最終實現的網絡爬蟲應該能根據設定的主題,從設定的url進行一定深度的搜索,并最終得到需要的數據。 指導教師(簽字)年 月 日審題小組組長(簽字)年 月 日天津大學本科生畢業設計(論文)開題報告課題名稱網絡爬蟲設計與實現學院名稱軟件學院專業名稱軟件工程學生姓名指導教師(內容包括:課題的來源及意義,國內外發展狀

5、況,本課題的研究目標、研究內容、研究方法、研究手段和進度安排,實驗方案的可行性分析和已具備的實驗條件以及主要參考文獻等。)1 課題的來源及意義互聯網是一個龐大的非結構化的數據庫,將數據有效的檢索并組織呈現出來有著巨大的應用前景。搜索引擎作為一個輔助人們檢索信息的工具成為用戶訪問萬維網的入口和指南。但是,這些通用性搜索引擎也存在著一定的局限性。不同領域、不同背景的用戶往往具有不同的檢索目的和需求,通用搜索引擎所返回的結果包含大量用戶不關心的網頁。為了解決這個問題,一個靈活的爬蟲有著無可替代的重要意義。2 國內外發展狀況對于網絡爬蟲的研究從上世紀九十年代就開始了,目前爬蟲技術已經趨見成熟,網絡爬蟲

6、是搜索引擎的重要組成部分。網絡上比較著名的開源爬蟲包括nutch,larbin,heritrix。網絡爬蟲最重要的是網頁搜索策略(廣度優先和最佳度優先)和網頁分析策略(基于網絡拓撲的分析算法和基于網頁內容的網頁分析算法)。3 研究目標本論文主要研究搜索引擎的搜索器(網絡爬蟲程序)的設計與實現,實現簡單的可在后臺自動運行的爬蟲程序。1. 可以多線程進行抓取。2. 可以進行面向主題的抓取。四研究內容本課題研究的內容是如何使網絡爬蟲靈活高效。1. 如何具備更強的抓取能力。2. 如何分辨重復的網頁內容。3. 如何確定主題相關性。4. 對于網絡時延等的處理。五研究方法網絡爬蟲應用寬度搜索技術。對url進

7、行分析,去重。網絡爬蟲使用多線程技術,讓爬蟲具備更強大的抓取能力。網絡爬蟲還要完成信息提取任務,對于抓取回來的網頁提取出來新聞等信息。對網絡爬蟲的連接網絡設置連接及讀取時間,避免無限制的等待。研究網絡爬蟲的原理并實現爬蟲的相關功能。6 研究手段參考網上開源的網絡爬蟲和各種網絡爬蟲相關的書籍,在windows系統環境下開發。5 本課題進度安排: 2010.12.202011.03.10 查閱資料完成任務書 ,完成開題報告 2011.03.112011.03.12 開題報告會 2011.03.132011.04.24 查閱資料,進行論文基本章節的寫作,完成初稿, 并完成進行代碼編寫 2011.04

8、.252011.04.30 畢業設計中期報告會 2011.05.012011.05.22 系統設計結束并再次檢查系統的可靠性。2011.05.232011.06.22 完成論文及答辯6 本課題可行性分析網絡爬蟲目前已經比較普遍,國內外有眾多對網絡爬蟲的研究成果,大部分的技術難題已經有解決方案。所以本課題的可行性較高。8 實驗條件windows 操作系統 ;互聯網9 主要參考文獻1winter中文搜索引擎技術解密:網絡蜘蛛 m北京:人民郵電出版社,2004年2sergey等the anatomy of a large-scale hypertextual web search engine m北

9、京:清華大學出版社,1998年3wisenutwisenut search engine white paper m北京:中國電力出版社,2001年4gary r.wright w.richard stevenstcp-ip協議詳解卷3:tcp事務協議,http,nntp和unix域協議 m北京:機械工業出版社,2002 年1月.5羅剛 王振東自己動手寫網絡爬蟲m北京:清華大學出版社,2010年10月.6李曉明,閆宏飛,王繼民搜索引擎:原理、技術與系統華夏英才基金學術文庫m北京:科學出版社,2005年04月.選題是否合適: 是 否課題能否實現: 能 不能指導教師(簽字)年 月 日選題是否合適:

10、 是 否課題能否實現: 能 不能審題小組組長(簽字)年 月 日摘 要本課題的主要目的是設計面向主題的網絡爬蟲程序,同時需要滿足的是具有一定的性能,考慮到網絡爬蟲的各種需求。網絡爬蟲應用寬度搜索技術。對url進行分析,去重。網絡爬蟲使用多線程技術,讓爬蟲具備更強大的抓取能力。對網絡爬蟲的連接網絡設置連接及讀取時間,避免無限制的等待。為了適應不同需求,使網絡爬蟲可以根據預先設定的主題實現對特定主題的爬取。研究網絡爬蟲的原理并實現爬蟲的相關功能。關鍵詞:網絡爬蟲;面向主題;多線程abstractthe main purpose of this project is to design subject

11、-oriented web crawler process which is also required to meet certain performance, taking into account the diverse needs of web crawlers.web crawler uses the technology. of breadth-first search.web crawler uses multi-threaded technology, so that spiders crawl can have more powerful capabilities.set c

12、onnection time and read time of the web connection of the web crawler , to avoid unlimited waiting.in order to meet different needs, so that crawlers can achieve pre-set theme crawling a specific topic.research the principle web crawler and and realize the related functions.key words:web crawler; su

13、bject-oriented; multi-threading 天津大學2007屆本科生畢業設計(論文)目錄第一章概述11.1課題背景11.2網絡爬蟲的歷史和分類21.2.1網絡爬蟲的歷史21.2.2網絡爬蟲的分類31.3網絡爬蟲的發展趨勢4第二章 相關技術背景62.1網絡爬蟲的定義62.2網頁搜索策略介紹62.2.1廣度優先搜索策略62.2.2最佳優先搜索策略72.3判斷相關度算法7第三章 網絡爬蟲模型的分析和概要設計93.1網絡爬蟲的模型分析93.2網絡爬蟲的搜索策略93.3網絡爬蟲的主題相關度判斷103.4網絡爬蟲的概要設計12第四章 網絡爬蟲模型的設計和實現154.1網絡爬蟲總體設計1

14、54.2網絡爬蟲具體設計154.2.1爬取網頁154.2.2分析網頁164.2.3判斷相關度174.2.4保存網頁信息184.2.5數據庫設計和存儲184.2.6多線程的實現184.2.7附加功能194.2.8整體流程19第五章測試21第六章總結和展望24天津大學2007屆本科生畢業設計(論文)第一章概述1.1課題背景 網絡爬蟲,是一種按照一定的規則,自動的抓取萬維網信息的程序或者腳本。另外一些不常使用的名字還有螞蟻,自動索引,模擬程序或者蠕蟲。 網絡檢索功能起于互聯網內容爆炸性發展所帶來的對內容檢索的需求。搜索引擎不斷的發展,人們的需求也在不斷的提高,網絡信息搜索已經成為人們每天都要進行的內

15、容.如何使搜索引擎能時刻滿足人們的需求。最初的檢索功能通過索引站的方式實現,而有了網絡機器人,即網絡爬蟲這個技術之后,搜索引擎的時代便開始一發不可收拾了。1.2網絡爬蟲的歷史和分類1.2.1網絡爬蟲的歷史在互聯網發展初期,網站相對較少,信息查找比較容易。然而伴隨互聯網爆炸性的發展,普通網絡用戶想找到所需的資料簡直如同大海撈針,這時為滿足大眾信息檢索需求的專業搜索網站便應運而生了。現代意義上的搜索引擎的祖先,是1990年由蒙特利爾大學學生alan emtage發明的archie。雖然當時world wide web還未出現,但網絡中文件傳輸還是相當頻繁的,而且由于大量的文件散布在各個分散的ftp

16、主機中,查詢起來非常不便,因此alan archie工作原理與現在的搜索引擎已經很接近,它依靠腳本程序自動搜索網上的文件,然后對有關信息進行索引,供使用者以一定的表達式查詢。由于 archie深受用戶歡迎,受其啟發,美國內華達system computing services大學于1993年開發了另一個與之非常相似的搜索工具,不過此時的搜索工具除了索引文件外,已能檢索網頁。當時,“機器人”一詞在編程者中十分流行。電腦“機器人”(computer robot)是指某個能以人類無法達到的速度不間斷地執行某項任務的軟件程序。由于專門用于檢索信息的“機器人”程序象蜘蛛一樣在網絡間爬來爬去,因此, 搜索

17、引擎的“機器人”程序就被稱為“蜘蛛”程序。世界上第一個用于監測互聯網發展規模的“機器人”程序是matthew gray開發的world wide web wanderer。剛開始它只用來統計互聯網上的服務器數量,后來則發展為能夠檢索網站域名。與wanderer相對應,martin koster于1993年10月創建了aliweb,它是archie的http版本。aliweb不使用“機器人”程序,而是靠網站主動提交信息來建立 自己的鏈接索引,類似于現在我們熟知的yahoo。隨著互聯網的迅速發展,使得檢索所有新出現的網頁變得越來越困難,因此,在matthew gray的wanderer基礎上,一些

18、編程者將傳統的“蜘蛛”程序工作原理作了些改進。其設想是,既然所有網頁都可能有連向其他網站的鏈接,那么從跟蹤 一個網站的鏈接開始,就有可能檢索整個互聯網。到1993年底,一些基于此原理的搜索引擎開始紛紛涌現,其中以jumpstation、the world wide web worm(goto的前身,也就是今天overture),和repository-based software engineering (rbse) spider最負盛名。然而jumpstation和www worm只是以搜索工具在數據庫中找到匹配信息的先后次序排列搜索結果,因此毫無信息關聯度可言。而rbse是第一個在搜索結果

19、排列中引入關鍵字串匹配程 度概念的引擎 最早現代意義上的搜索引擎出現于1994年7月。當時michael mauldin將john leavitt的蜘蛛程序接入到其索引程序中,創建了大家現在熟知的lycos。同年4月,斯坦福(stanford)大學的兩名博士生,david filo和美籍華人楊致遠(gerry yang)共同創辦了超級目錄索引yahoo,并成功地使搜索引擎的概念深入人心。從此搜索引擎進入了高速發展時期。目前,互聯網上有名有姓的搜索引擎已 達數百家,其檢索的信息量也與從前不可同日而語。比如最近風頭正勁的google,其數據庫中存放的網頁已達30億之巨。隨著互聯網規模的急劇膨脹,一

20、家搜索引擎光靠自己單打獨斗已無法適應目前的市場狀況,因此現在搜索引擎之間開始出現了分工協作,并有了專業的搜索引 擎技術和搜索數據庫服務提供商。象國外的inktomi,它本身并不是直接面向用戶的搜索引擎,但向包括overture(原goto)、 looksmart、msn、hotbot等在內的其他搜索引擎提供全文網頁搜索服務。國內的百度也屬于這一類(注),搜狐和新浪用的就是它的技術。因此 從這個意義上說,它們是搜索引擎的搜索引擎。1.2.2網絡爬蟲的分類網絡爬蟲種類繁多,如果按照部署在哪里分,可以分成:1,服務器側:一般是一個多線程程序,同時下載多個目標html,可以用php, java, py

21、thon等做,一般綜合搜索引擎的爬蟲這樣做。但是,如果對方討厭爬蟲,很可能封掉服務器的ip,服務器ip又不容易改,另外耗用的帶寬也是較貴。2,客戶端:很適合部署定題爬蟲,或者叫聚焦爬蟲。做一個與google,百度等競爭的綜合搜索引擎成功的機會微乎其微,而垂直搜訴或者比價服務或者推 薦引擎,機會要多得多,這類爬蟲不是什么頁面都取的,而是只取關心的頁面,而且只取頁面上關心的內容,例如提取黃頁信息,商品價格信息,還有提取競爭對手 廣告信息的。這類爬蟲可以部署很多,而且可以很有侵略性。可以低成本大量部署,由于客戶端ip地址是動態的,所以很難被目標網站封鎖。1.3網絡爬蟲的發展趨勢目前,大多數的搜索引擎

22、都是基于關鍵詞的搜索引擎。基于關鍵字匹配的搜索技術有較大的局限性:首先,它不能區分同形異義。其次,不能聯想到關鍵字的同義詞。web商業化至今,搜索引擎始終保持著網絡上被使用最多的服務項目的地位,然而,隨著網上內容的爆炸式增長和內容形式花樣的不斷翻新,搜索引擎越來越不能滿足挑剔的網民們的各種信息需求。搜索引擎的發展面臨著兩大難題:一是如何跟上internet的發展速度,二是如何為用戶提供更精確的查詢結果。所以,傳統的引擎不能適應信息 技術的高速發展,新一代智能搜索引擎作為一種高效搜索引擎技術的在當今的網絡信息時代日益引起業界人士的關注。搜索引擎己成為一個新的研究、開發領域。因 為它要用到信息檢索

23、、人工智能、計算機網絡、分布式處理、數據庫、數據挖掘、數字圖書館、自然語言處理等多領域的理論和技術,所以具有綜合性和挑戰性。又 由于搜索引擎有大量的用戶,有很好的經濟價值,所以引起了世界各國計算機科學界和信息產業界的高度關注,目前的研究、開發十分活躍,并出現了很多值得注意的動向。目前傳統搜索引擎下,百度、谷歌等大廠商壟斷了網絡索引市場,因為它們的存在,日益龐大的互聯網內容才能突破網絡黑暗狀態,變成可知的一個世界。然而,傳統搜索引擎并不能支持定制搜索和信息處理、挖掘,只能以web1.0的形式存在。可以預見將來互聯網信息抓取、挖掘和再處理,將成為人們越來越多的需求,而滿足這種需求的,就是各種各樣的

24、爬蟲與相關的信息處理工具。現在網絡上流 行的信息采集工具、網站聚合工具,都是未來新一代爬蟲的先驅,甚至已經具備其特點。但是互聯網本身,不管1.0還是2.0,還沒有為爬蟲時代的到來做好充分準備。現在游行的seo,就是強勢搜索引擎條件下對網站結構產生的影響。爬蟲時代到來之后,互聯網上會出現專門的信息站點,就是提供給爬蟲看的站點。 傳統的網絡爬蟲技術主要應用于抓取靜態web 網頁,隨著ajax/web2.0的流行,如何抓取ajax 等動態頁面成了搜索引擎急需解決的問題,因為ajax顛覆了傳統的純http 請求/響應協議機制,如果搜索引擎依舊采用“爬”的機制,是無法抓取到ajax 頁面的有效數據的。

25、ajax 采用了javascript 驅動的異步請求/響應機制,以往的爬蟲們缺乏javascript語義上的理解,基本上無法模擬觸發javascript的異步調用并解析返回的異步回調邏輯和內容。 另外,在ajax的應用中,javascript 會對dom結構進行大量變動,甚至頁面所有內容都通過javascript 直接從服務器端讀取并動態繪制出來。這對習慣了dom 結構相對不變的靜態頁面簡直是無法理解的。由此可以看出,以往的爬蟲是基于協議驅動的,而對于ajax 這樣的技術,所需要的爬蟲引擎必須是基于事件驅動的。第二章 相關技術背景2.1網絡爬蟲的定義定義1:網絡爬蟲是一個自動提取網頁的程序,它

26、為搜索引擎從web上下載網頁,是搜索引擎的重要組成部分。通用網絡爬蟲從一個或若干初始網頁的url開始,獲得初始網頁上的url列表;在抓取網頁的過程中,不斷從當前頁面上抽取新的url放入待爬行隊列,直到滿足系統的停止條件。定義2:主題網絡爬蟲就是根據一定的網頁分析算法過濾與主題無關的鏈接,保留主題相關的鏈接并將其放入待抓取的url隊列中;然后根據一定的搜索策略從隊列中選擇下一步要抓取的網頁url,并重復上述過程,直到達到系統的某一條件時停止。所有被網絡爬蟲抓取的網頁將會被系統存儲,進行一定的分析、過濾,并建立索引,對于主題網絡爬蟲來說,這一過程所得到的分析結果還可能對后續的抓取過程進行反饋和指導

27、。定義3:如果網頁p中包含超鏈接l,則p稱為鏈接l的父網頁。定義4:如果超鏈接l指向網頁t,則網頁t稱為子網頁,又稱為目標網頁。主題網絡爬蟲的基本思路就是按照事先給出的主題,分超鏈接和已經下載的網頁內容,預測下一個待抓取的url及當前網頁的主題相關度,保證盡可能多地爬行、下載與主相關的網頁,盡可能少地下載無關網頁。2.2網頁搜索策略介紹 網頁的抓取策略可以分為深度優先、廣度優先和最佳優先三種。深度優先在很多情況下會導致爬蟲的陷入(trapped)問題,目前常見的是廣度優先和最佳優先方法。 2.2.1廣度優先搜索策略 廣度優先搜索策略是指在抓取過程中,在完成當前層次的搜索后,才進行下一層次的搜索

28、。該算法的設計和實現相對簡單。在目前為覆蓋盡可能多的網頁,一般使用廣度優先搜索方法。也有很多研究將廣度優先搜索策略應用于聚焦爬蟲中。其基本思想是認為與初始url在一定鏈接距離內的網頁具有主題相關性的概率很大。另外一種方法是將廣度優先搜索與網頁過濾技術結合使用,先用廣度優先策略抓取網頁,再將其中無關的網頁過濾掉。這些方法的缺點在于,隨著抓取網頁的增多,大量的無關網頁將被下載并過濾,算法的效率將變低。 2.2.2最佳優先搜索策略最佳優先搜索策略按照一定的網頁分析算法,預測候選url與目標網頁的相似度,或與主題的相關性,并選取評價最好的一個或幾個url進行抓取。它只訪問經過網頁分析算法預測為“有用”

29、的網頁。存在的一個問題是,在爬蟲抓取路徑上的很多相關網頁可能被忽略,因為最佳優先策略是一種局部最優搜索算法。因此需要將最佳優先結合具體的應用進行改進,以跳出局部最優點。將在第4節中結合網頁分析算法作具體的討論。研究表明,這樣的閉環調整可以將無關網頁數量降低30%90%。2.3判斷相關度算法主題爬蟲的系統組成最初考慮是對頁面的過濾,不像普通爬蟲對所有頁面的鏈接進行處理,先對頁面與受限領域的主題相關度進行分析,只有當其主題相關度符合要求時才處理該頁面中的鏈接,因為如果該頁面和本領域比較相關,它所包含的鏈接和領域相關的幾率也較大,這樣提高了爬行精度,雖然會遺漏少數頁面,但綜合效果是令人滿意的。因此,

30、主題相關度的分析是主題爬蟲設計的關鍵。 (一)主題相關度計算模型垂直搜索引擎與通用搜索引擎最大的區別在于垂直搜索引擎是面向某個領域的,因而垂直搜索引擎的網絡蜘蛛只采集與主題相關的網頁,與主題無關的網頁將被丟棄,將此類網絡蜘蛛稱為主題蜘蛛6-8。主題蜘蛛將網頁下載到本地后,需要使用基于內容的主題判別方法計算該網頁的主題相關度值,主題相關度低于某一閾值的網頁被丟棄。主題相關度的計算方法有布爾模型和向量空間模型兩種模型算法10。1.布爾模型。在主題判別時,布爾模型是很容易實現的。在布爾模型9中,一個文檔通過一個關鍵詞集合來表示。同時,某個主題也以關鍵詞集合的形式來表示。在判斷文檔與某主題的相關度的過

31、程中,相當于是計算兩個關鍵詞集合的交集。對基于布爾模型的主題判別模型來說,交集中含有的元素越多,則認為與主題的相關度就越高。2.空間向量模型。向量空間模型11(vector space model)由salton等人于20世紀60年代末提出,是一種簡便、高效的文本表示模型,其理論基礎是代數學。與布爾模型不同,向量空間模型把用戶的查詢要求和數據庫文檔信息表示成由檢索項構成的向量空間中的點(向量),而通過計算向量之間的距離來判定文檔和查詢之間的相似程度(例如,用它們之間夾角的余弦作為相似性度量)。然后,根據相似程度排列查詢結果。在向量空間模型中,文檔被形式化為n維空間中的向量,把關鍵詞的個數n作為

32、空間向量的維數,每個關鍵詞的權值 作為每一維分量的大小,則主題用向量表示為:a=(a1,a2,an),i=1,2,n,ai=wi對于頁面進行分析,統計關鍵詞出現的頻率,并求出頻率之比,以出現的頻率最高的關鍵詞作為基準,其頻率用xi=1表示,通過頻率比,求出其他關鍵詞的頻率 ,則該頁面對應向量的每一維分量為xiwi。指定一個閾值r,當cos=r時就可以認為該頁面和主題是比較相關的,r的取值需要根據經驗和實際要求確定,如果想獲得較多的頁面,可以把r設小一點,要獲得較少的頁面可以把r設的大一點。(二)布爾模型與空間向量模型分析布爾模型的主要缺陷在于每個關鍵詞的權重都是一樣的,它不支持設定關鍵詞的相對

33、重要性,但是其優點也較為明顯,它易于實現,計算代價較小。向量空間模型最大優點在于它在知識表示方法上的巨大優勢。在該模型中,文檔的內容被形式化為多維空間中的一個點,以向量的形式給出。也正是因為把文檔以向量的形式定義到實數域中,才使得模式識別和其他領域中各種成熟的算法和計算方法得以采用,極大地提高了自然語言文檔的可計算性和可操作性。通過對空間向量模型和布爾模型的介紹,我們知道現在垂直搜索引擎大多采用空間向量模型計算主題相關性。這樣極大的提高到主題爬蟲的效率,也極大的提高了垂直搜索引擎的應用效率,給客戶帶來了高效的查詢效果。與在進行頁面的主題相關度分析后,當其主題相關度符合要求時將處理該頁面中的所有

34、鏈接,但其中的鏈接指向的頁面也可能有許多偏離了主題,這一點在網頁的標題上就可以看出,現在大多數網頁的標題已經很明顯的給出了文本的主要描述對象,所以傳統的空間模型策略沒有注意到網頁標題這個重要的角色。針對此提出了一種基于網頁標題的空間向量模型主題相關度計算方法。第三章 網絡爬蟲模型的分析和概要設計3.1網絡爬蟲的模型分析 首先建立url任務列表,即開始要爬取的url。由url任務列表開始,根據預先設定的深度爬取網頁,同時判斷url是否重復,按照一定算法和排序方式搜索頁面,然后對頁面按照一定算法進行分析,并提取相關url,最后將所得url返回任務列表。之后將任務列表中url重新開始爬取,從而使網絡

35、爬蟲進行循環運行。3.2網絡爬蟲的搜索策略 本文的搜索策略為廣度優先搜索策略。如下圖3-1所示。圖3-1廣度優先搜索策略示意圖 1) 定義一個狀態結點采用廣度優先搜索算法解答問題時,需要構造一個表明狀態特征和不同狀態之間關系的數據結構,這種數據結構稱為結點。不同的問題需要用不同的數據結構描述。2)確定結點的擴展規則根據問題所給定的條件,從一個結點出發,可以生成一個或多個新的結點,這個過程通常稱為擴展。結點之間的關系一般可以表示成一棵樹,它被稱為解答樹。搜索算法的搜索過程實際上就是根據初始條件和擴展規則構造一棵解答樹并尋找符合目標狀態的結點的過程。廣度優先搜索算法中,解答樹上結點的擴展是沿結點深

36、度的“斷層”進行,也就是說,結點的擴展是按它們接近起始結點的程度依次進行的。首先生成第一層結點,同時檢查目標結點是否在所生成的結點中,如果不在,則將所有的第一層結點逐一擴展,得到第二層結點,并檢查第二層結點是否包含目標結點,.對長度為n+1的任一結點進行擴展之前,必須先考慮長度為n的結點的每種可能的狀態。因此,對于同一層結點來說,求解問題的價值是相同的,我們可以按任意順序來擴展它們。這里采用的原則是先生成的結點先擴展。結點的擴展規則也就是如何從現有的結點生成新結點。對不同的問題,結點的擴展規則也不相同,需要按照問題的要求確定。3)搜索策略為了便于進行搜索,要設置一個表存儲所有的結點。因為在廣度

37、優先搜索算法中,要滿足先生成的結點先擴展的原則,所以存儲結點的表一般設計成隊列的數據結構。搜索的步驟一般是:(1)從隊列頭取出一個結點,檢查它按照擴展規則是否能夠擴展,如果能則產生一個新結點。(2)檢查新生成的結點,看它是否已在隊列中存在,如果新結點已經在隊列中出現過,就放棄這個結點,然后回到第(1)步。否則,如果新結點未曾在隊列中出現過,則將它加入到隊列尾。(3)檢查新結點是否目標結點。如果新結點是目標結點,則搜索成功,程序結束;若新結點不是目標結點,則回到第(1)步,再從隊列頭取出結點進行擴展.。最終可能產生兩種結果:找到目標結點,或擴展完所有結點而沒有找到目標結點。3.3網絡爬蟲的主題相

38、關度判斷主題爬蟲的系統組成最初考慮是對頁面的過濾,不像普通爬蟲對所有頁面的鏈接進行處理,先對頁面與受限領域的主題相關度進行分析,只有當其主題相關度符合要求時才處理該頁面中的鏈接,因為如果該頁面和本領域比較相關,它所包含的鏈接和領域相關的幾率也較大,這樣提高了爬行精度,雖然會遺漏少數頁面,但綜合效果是令人滿意的。因此,主題相關度的分析是主題爬蟲設計的關鍵。主題蜘蛛將網頁下載到本地后,需要使用基于內容的主題判別方法計算該網頁的主題相關度值,主題相關度低于某一閾值的網頁被丟棄。(1) 什么是網頁標題通常瀏覽一個網頁時,通過瀏覽器頂端的藍色顯示條出現的信息就是“網頁標題”。在網頁html代碼中,網頁標

39、題位于標簽之間。網頁標題是對于一個網頁的高度概括,一般來說,網站首頁的標題就是網站的正式名稱,而網站中文章內容頁面的標題就是這文章的題目,欄目首頁的標題通常是欄目名稱。當然這種一般原則并不是固定不變的,在實際工作中可能會有一定的變化,但是無論如何變化,總體上仍然會遵照這種規律12。例如,現在會看到很多網站的首頁標題較長,除了網站名稱之外,還有網站相關業務之類的關鍵詞,這主要是為了在搜索引擎搜索結果中獲得排名優勢而考慮的,也屬于正常的搜索引擎優化方法。因為一般的公司名稱(或者品牌名稱)中可能不包含核心業務的關鍵詞,在搜索結果排名中將處于不利地位。(二)網頁標題的重要性以google為例,goog

40、le會對其標題標簽(meta title)中出現的關鍵字給予較高的權值。所以應當確保在網站的標題標簽中包含了最重要的關鍵詞,即應圍繞最重要的關鍵詞來決定網頁標題的內容。不過網頁的標題不可過長,一般最好在35到40個字符之間。在實際操作中,網頁標題不宜過短或過長。太短無法完整的表達網頁信息,太長不僅不利于用戶識別,而且對搜索引擎來說也加大了識別核心關鍵詞的難度;網頁標題應概括網頁的核心內容。搜索引擎在進行搜索的時候,搜索結果的內容一般是網頁標題、網頁摘要信息和鏈接,要引起用戶的關注,高度總結了網頁內容的標題至關重要。比如戴爾中國的網站首頁標題為“戴爾中國(dell china)計算機,筆記本電腦

41、,臺式機,打印機,工作站,服務器,存儲器,電子產品及附件等”。戴爾的首頁標題中不但涵蓋了最重要的公司信息,而且還包括公司的主要產品,這就是核心關鍵詞,當用“筆記本電腦”、“臺式電腦”這些關鍵詞在谷歌中進行搜索時,戴爾公司的網頁都排在第一屏的前幾條位置。(2) 但是與此同時需要注意的還有網頁正文的重要性,因為網頁的標題和關鍵字很可能與正文無關,虛假關鍵詞是通過在meta中設置與網站內容無關的關鍵詞,如在title中設置熱門關鍵詞,以達到誤導用戶進入網站的目的。同樣的情況也包括鏈接關鍵詞與實際內容不符的情況。 具體判斷主題相關度的步驟 1.對標題及正文的特征項的選取是通過分詞后與主題集合匹配,并通

42、過詞頻計算來得到與主題向量維數相等的標題向量和正文向量。2.通過向量空間模型計算出主題和標題的相關度b。3.通過空間向量向量模型計算主題與正文的相關度c。4.主題與整個網頁的相關度:a=4b+c。5.通過詳細計算,設定相關度閾值為2,網頁與主題的相關度a2,則認為該網頁與主題相關的。3.4網絡爬蟲的概要設計本網絡爬蟲的開發目的,通過網絡爬蟲技術一個自動提取網頁的程序,實現搜索引擎從自己想要訪問的網上下載網頁,再根據已下載的網頁上繼續訪問其它的網頁,并將其下載直到滿足用戶的需求。根據現實中不同用戶的實際上的各種需求,本項目簡單實現主題爬蟲,本網絡爬蟲需要達到如下幾個目標:1.設計基于多線程的網絡

43、爬蟲,客戶端向服務器發送自己設定好請求。如圖3-7所示。url配置文件url配置文件列表臨界區互聯網線程1搜索元url如線程2搜索元url如線程n圖3-2 多線程網絡爬蟲概要設計圖模型2.通過 http將web服務器上協議站點的網頁代碼提取出來。3.根據一定的正則表達式提取出客戶端所需要的信息。4.廣度優先搜索可從網頁中某個鏈接出發,訪問該鏈接網頁上的所有鏈接,訪問完成后,再通過遞歸算法實現下一層的訪問。 本網絡爬蟲最終將設計成一個能夠自動讀寫配置文件并且在后臺自動執行的網絡爬蟲程序。網絡爬蟲工作流程圖如圖3-3所示。圖3-3 網絡爬蟲工作流程圖第四章 網絡爬蟲模型的設計和實現4.1網絡爬蟲總

44、體設計根據本網絡爬蟲的概要設計本網絡爬蟲是一個自動提取網頁的程序,根據設定的主題判斷是否與主題相關,再根據已下載的網頁上繼續訪問其它的網頁,并將其下載直到滿足用戶的需求。 1.設計基于多線程的網絡爬蟲。2.通過 http將待爬取url列表對應的url的網頁代碼提取出來。3.提取出所需要的信息并且通過算法判斷網頁是否和設定的主題相關。4.廣度優先搜索,從網頁中某個鏈接出發,訪問該鏈接網頁上的所有鏈接,訪問完成后,再通過遞歸算法實現下一層的訪問,重復以上步驟。總的來說爬蟲程序根據輸入獲得url任務列表,即初始url種子,把初始種子保存在臨界區中,按照廣度搜索運算法搜索抓取網頁并提取url返回到臨屆

45、區中,通過判斷主題相關度算法判斷相關度,取出不相關網頁,從而使整個爬蟲程序循環運行下去。4.2網絡爬蟲具體設計4.2.1爬取網頁 主要用到的技術如下:繼承htmleditorkit類,改寫其中的 htmleditorkit.parser getparser()屬性protect為public,用下列函數爬取網頁:public class xxxxx extends htmleditorkit public htmleditorkit.parser getparser()return super.getparser(); 步驟如下:1首先建立url連接。urlconnection url_c =

46、 url_test.openconnection();2設置連接超時時間和讀取超時時間。url_c.setconnecttimeout(10000);url_c.setreadtimeout(10000);3. 用輸入流,bufferedreader讀取,并且將網頁內容存儲為字符串。4.2.2分析網頁繼承parsercallback獲得網頁內容/ 得到標題文本protected string urltitle = new string();/ 得到某一網頁上的所有鏈接protected vector links = new vector();protected vector linkname

47、= new vector();/ 得到網頁上的正文文本protected string paragraphtext = new string();protected string linkandparagraph = new string();protected string encode = new string();public parser(string baseurl) base = baseurl;public string getencode() return encode;/ 獲得該網頁標題public string geturltitle() return urltitle;/

48、 獲得該網頁的所有鏈接public vector getlinks() return links;/ 獲得所有該網頁的鏈接名public vector getlinkname() / 獲得網頁正文public string getparagraphtext() public void handleendtag(html.tag t, int pos) / 處理簡單標簽public void handlesimpletag(html.tag t, mutableattributeset a, int pos) / 處理結束標簽public void handlestarttag(html.tag

49、 t, mutableattributeset a, int pos) / 處理文本 標簽public void handletext(char data, int pos)之后通過調用htmleditorkit.parser類,生成對象就可以直接得到分析后的網頁文件。4.2.3判斷相關度 算法實現步驟和算法描述:1. 對標題及正文的特征項的選取是通過分詞后與主題集合匹配,并通過詞頻計算來得到與主題向量維數相等的標題向量和正文向量。2.通過向量空間模型計算出主題和標題的相關度b。3.通過空間向量向量模型計算主題與正文的相關度c。4.主題與整個網頁的相關度:a=4b+c。5.通過詳細計算,設定相

50、關度閾值為2,網頁與主題的相關度a2,則認為該網頁與主題相關的。輸入:主題集合文本a.txt,網頁url輸出:主題相關度(1)get topic(string path)/根據路徑獲取主題文本集合(2)compulate topicweight(string topic)/求主題結合權重(3)sortanddelrepeat(intcount)/刪除重復元素并排序(4)delrepeat(string segment)/刪除分詞后的重復元素(5)delrepeat(vector url)/刪除得到的url中的重復元素(6)getparser(string url)/獲得parser實例(7)s

51、tring titlestr =p.geturltitle()/獲取網頁標題(8)string bodystr=p.getparagraphtext()/獲取網頁文本(9)string titlestrseg=segment.segment(titlestr)/網頁標題分詞(10)string bodystrseg=segment.segment(bodystr)/網頁文本分詞(11)compulate title.length,body.length/計算標題向量長度和網頁文本向量長度(12)set topicweight1,titleweight1,bodyweight1;/設置權重(13

52、)last compulate relative/計算主題相關性(14)return relative;/返回結果 根據系統設置首先是下載所有網頁,而后判定主題相關性,與主題相關則放置在相關url庫中,不相關的網頁則丟棄。4.2.4保存網頁信息1.首先建立url連接。urlconnection url_c = url_test.openconnection();2.新建pagepro類。如下:private string host;private int port;private string contenttype;private int contentlength;private stri

53、ng date;private string url;3.將數據存入新建的pagepro類中。4.將數據保存到預先輸入的地址。4.2.5數據庫設計和存儲使用jdbc訪問數據庫,儲存下載的網頁url和下載時間信息。4.2.6多線程的實現 設計為4個線程同時進行工作。1. 從用戶輸入的起始url開始,遞歸獲得指定深度的url。2. 對每個url進行分析,判斷相關度。3. 下載與主題相關的網頁,并存儲在數據庫中。第i個線程對所有url列表中序列為第0+4i url的進行同步操作,其中對儲存所有url的列表執行synchronized (all_url)操作。4.2.7附加功能為了檢測網絡環境,防止因

54、為不良的網絡環境影響網絡爬蟲的爬取效率和正確略,額外添加了實時的ping功能,調用windows的命令解釋器的ping功能,測試用戶輸入網址與當前主機的連接狀況,測試當前網絡狀況是否良好。4.2.8整體流程爬蟲代碼文件構成如圖4-1:圖4-1代碼結構構成截圖 htmlparser.java這個類是改寫htmleditorkit.parser getparser()方法為publichttp.java是根據輸入url獲取網頁文檔parser.java是繼承parsercallback獲得網頁內容relative.java是判斷主題與網頁內容的相關性segment.java是對網頁主題和正文進行分詞download

溫馨提示

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

評論

0/150

提交評論