網(wǎng)絡(luò)爬蟲的設(shè)計與實現(xiàn)_第1頁
網(wǎng)絡(luò)爬蟲的設(shè)計與實現(xiàn)_第2頁
網(wǎng)絡(luò)爬蟲的設(shè)計與實現(xiàn)_第3頁
網(wǎng)絡(luò)爬蟲的設(shè)計與實現(xiàn)_第4頁
網(wǎng)絡(luò)爬蟲的設(shè)計與實現(xiàn)_第5頁
已閱讀5頁,還剩54頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、 畢業(yè)設(shè)計(論文)說明書學 院 軟件學院 專 業(yè) 軟件工程 年 級 2007 姓 名 張鳳龍 指導教師 陳錦言 2011年 3月 6 日畢業(yè)設(shè)計(論文)任務(wù)書題目:網(wǎng)絡(luò)爬蟲設(shè)計與實現(xiàn)學生姓名 張鳳龍 學院名稱 軟件學院 專 業(yè) 軟件工程 學 號 3007218139 指導教師 陳錦言 職 稱 講師 1、 原始依據(jù)(包括設(shè)計或論文的工作基礎(chǔ)、研究條件、應(yīng)用環(huán)境、工作目的等。)互聯(lián)網(wǎng)是一個龐大的非結(jié)構(gòu)化的數(shù)據(jù)庫,將數(shù)據(jù)有效的檢索并組織呈現(xiàn)出來有著巨大的應(yīng)用前景。搜索引擎作為一個輔助人們檢索信息的工具成為用戶訪問萬維網(wǎng)的入口和指南。但是,這些通用性搜索引擎也存在著一定的局限性。不同領(lǐng)域、不同背景的用

2、戶往往具有不同的檢索目的和需求,通用搜索引擎所返回的結(jié)果包含大量用戶不關(guān)心的網(wǎng)頁。所以需要一個能基于主題搜索的滿足特定需求的網(wǎng)絡(luò)爬蟲。為了解決上述問題,參照成功的網(wǎng)絡(luò)爬蟲模式,對網(wǎng)絡(luò)爬蟲進行研究,從而能夠為網(wǎng)絡(luò)爬蟲實現(xiàn)更深入的主題相關(guān)性,提供滿足特定搜索需求的網(wǎng)絡(luò)爬蟲。2、 參考文獻1winter中文搜索引擎技術(shù)解密:網(wǎng)絡(luò)蜘蛛 m北京:人民郵電出版社,2004年2sergey等the anatomy of a large-scale hypertextual web search engine m北京:清華大學出版社,1998年3wisenutwisenut search engine whi

3、te paper m北京:中國電力出版社,2001年4gary r.wright w.richard stevenstcp-ip協(xié)議詳解卷3:tcp事務(wù)協(xié)議,http,nntp和unix域協(xié)議 m北京:機械工業(yè)出版社,2002 年1月.5羅剛 王振東自己動手寫網(wǎng)絡(luò)爬蟲m北京:清華大學出版社,2010年10月.6李曉明,閆宏飛,王繼民搜索引擎:原理、技術(shù)與系統(tǒng)華夏英才基金學術(shù)文庫m北京:科學出版社,2005年04月.3、 設(shè)計(研究)內(nèi)容和要求(包括設(shè)計或研究內(nèi)容、主要指標與技術(shù)參數(shù),并根據(jù)課題性質(zhì)對學生提出具體要求。)本課題的主要目的是設(shè)計面向主題的網(wǎng)絡(luò)爬蟲程序,同時需要滿足的是具有一定的性能

4、,要考慮到網(wǎng)絡(luò)爬蟲的各種需求。網(wǎng)絡(luò)爬蟲應(yīng)用寬度搜索技術(shù)。對url進行分析,去重。網(wǎng)絡(luò)爬蟲使用多線程技術(shù),讓爬蟲具備更強大的抓取能力。網(wǎng)絡(luò)爬蟲要實現(xiàn)對特定主題的爬取。網(wǎng)絡(luò)爬蟲還要完成信息提取任務(wù),對于抓取回來的網(wǎng)頁提取出來:新聞、電子圖書、行業(yè)信息等。對網(wǎng)絡(luò)爬蟲的連接網(wǎng)絡(luò)設(shè)置連接及讀取時間,避免無限制的等待。研究網(wǎng)絡(luò)爬蟲的原理并實現(xiàn)爬蟲的相關(guān)功能。最終實現(xiàn)的網(wǎng)絡(luò)爬蟲應(yīng)該能根據(jù)設(shè)定的主題,從設(shè)定的url進行一定深度的搜索,并最終得到需要的數(shù)據(jù)。 指導教師(簽字)年 月 日審題小組組長(簽字)年 月 日天津大學本科生畢業(yè)設(shè)計(論文)開題報告課題名稱網(wǎng)絡(luò)爬蟲設(shè)計與實現(xiàn)學院名稱軟件學院專業(yè)名稱軟件工程學

5、生姓名張鳳龍指導教師陳錦言(內(nèi)容包括:課題的來源及意義,國內(nèi)外發(fā)展狀況,本課題的研究目標、研究內(nèi)容、研究方法、研究手段和進度安排,實驗方案的可行性分析和已具備的實驗條件以及主要參考文獻等。)1 課題的來源及意義互聯(lián)網(wǎng)是一個龐大的非結(jié)構(gòu)化的數(shù)據(jù)庫,將數(shù)據(jù)有效的檢索并組織呈現(xiàn)出來有著巨大的應(yīng)用前景。搜索引擎作為一個輔助人們檢索信息的工具成為用戶訪問萬維網(wǎng)的入口和指南。但是,這些通用性搜索引擎也存在著一定的局限性。不同領(lǐng)域、不同背景的用戶往往具有不同的檢索目的和需求,通用搜索引擎所返回的結(jié)果包含大量用戶不關(guān)心的網(wǎng)頁。為了解決這個問題,一個靈活的爬蟲有著無可替代的重要意義。2 國內(nèi)外發(fā)展狀況對于網(wǎng)絡(luò)爬

6、蟲的研究從上世紀九十年代就開始了,目前爬蟲技術(shù)已經(jīng)趨見成熟,網(wǎng)絡(luò)爬蟲是搜索引擎的重要組成部分。網(wǎng)絡(luò)上比較著名的開源爬蟲包括nutch,larbin,heritrix。網(wǎng)絡(luò)爬蟲最重要的是網(wǎng)頁搜索策略(廣度優(yōu)先和最佳度優(yōu)先)和網(wǎng)頁分析策略(基于網(wǎng)絡(luò)拓撲的分析算法和基于網(wǎng)頁內(nèi)容的網(wǎng)頁分析算法)。3 研究目標本論文主要研究搜索引擎的搜索器(網(wǎng)絡(luò)爬蟲程序)的設(shè)計與實現(xiàn),實現(xiàn)簡單的可在后臺自動運行的爬蟲程序。1. 可以多線程進行抓取。2. 可以進行面向主題的抓取。四研究內(nèi)容本課題研究的內(nèi)容是如何使網(wǎng)絡(luò)爬蟲靈活高效。1. 如何具備更強的抓取能力。2. 如何分辨重復(fù)的網(wǎng)頁內(nèi)容。3. 如何確定主題相關(guān)性。4.

7、對于網(wǎng)絡(luò)時延等的處理。五研究方法網(wǎng)絡(luò)爬蟲應(yīng)用寬度搜索技術(shù)。對url進行分析,去重。網(wǎng)絡(luò)爬蟲使用多線程技術(shù),讓爬蟲具備更強大的抓取能力。網(wǎng)絡(luò)爬蟲還要完成信息提取任務(wù),對于抓取回來的網(wǎng)頁提取出來新聞等信息。對網(wǎng)絡(luò)爬蟲的連接網(wǎng)絡(luò)設(shè)置連接及讀取時間,避免無限制的等待。研究網(wǎng)絡(luò)爬蟲的原理并實現(xiàn)爬蟲的相關(guān)功能。6 研究手段參考網(wǎng)上開源的網(wǎng)絡(luò)爬蟲和各種網(wǎng)絡(luò)爬蟲相關(guān)的書籍,在windows系統(tǒng)環(huán)境下開發(fā)。5 本課題進度安排: 2010.12.202011.03.10 查閱資料完成任務(wù)書 ,完成開題報告 2011.03.112011.03.12 開題報告會 2011.03.132011.04.24 查閱資料,進

8、行論文基本章節(jié)的寫作,完成初稿, 并完成進行代碼編寫 2011.04.252011.04.30 畢業(yè)設(shè)計中期報告會 2011.05.012011.05.22 系統(tǒng)設(shè)計結(jié)束并再次檢查系統(tǒng)的可靠性。2011.05.232011.06.22 完成論文及答辯6 本課題可行性分析網(wǎng)絡(luò)爬蟲目前已經(jīng)比較普遍,國內(nèi)外有眾多對網(wǎng)絡(luò)爬蟲的研究成果,大部分的技術(shù)難題已經(jīng)有解決方案。所以本課題的可行性較高。8 實驗條件windows 操作系統(tǒng) ;互聯(lián)網(wǎng)9 主要參考文獻1winter中文搜索引擎技術(shù)解密:網(wǎng)絡(luò)蜘蛛 m北京:人民郵電出版社,2004年2sergey等the anatomy of a large-scale

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

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

11、 this project is to design subject-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 hav

12、e more powerful capabilities.set connection 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 f

13、unctions.key words:web crawler; subject-oriented; multi-threading 天津大學2007屆本科生畢業(yè)設(shè)計(論文)目錄第一章概述11.1課題背景11.2網(wǎng)絡(luò)爬蟲的歷史和分類21.2.1網(wǎng)絡(luò)爬蟲的歷史21.2.2網(wǎng)絡(luò)爬蟲的分類31.3網(wǎng)絡(luò)爬蟲的發(fā)展趨勢4第二章 相關(guān)技術(shù)背景62.1網(wǎng)絡(luò)爬蟲的定義62.2網(wǎng)頁搜索策略介紹62.2.1廣度優(yōu)先搜索策略62.2.2最佳優(yōu)先搜索策略72.3判斷相關(guān)度算法7第三章 網(wǎng)絡(luò)爬蟲模型的分析和概要設(shè)計93.1網(wǎng)絡(luò)爬蟲的模型分析93.2網(wǎng)絡(luò)爬蟲的搜索策略93.3網(wǎng)絡(luò)爬蟲的主題相關(guān)度判斷103.4網(wǎng)絡(luò)爬蟲的概要

14、設(shè)計12第四章 網(wǎng)絡(luò)爬蟲模型的設(shè)計和實現(xiàn)154.1網(wǎng)絡(luò)爬蟲總體設(shè)計154.2網(wǎng)絡(luò)爬蟲具體設(shè)計154.2.1爬取網(wǎng)頁154.2.2分析網(wǎng)頁164.2.3判斷相關(guān)度174.2.4保存網(wǎng)頁信息184.2.5數(shù)據(jù)庫設(shè)計和存儲184.2.6多線程的實現(xiàn)184.2.7附加功能194.2.8整體流程19第五章測試21第六章總結(jié)和展望24天津大學2007屆本科生畢業(yè)設(shè)計(論文)第一章概述1.1課題背景 網(wǎng)絡(luò)爬蟲,是一種按照一定的規(guī)則,自動的抓取萬維網(wǎng)信息的程序或者腳本。另外一些不常使用的名字還有螞蟻,自動索引,模擬程序或者蠕蟲。 網(wǎng)絡(luò)檢索功能起于互聯(lián)網(wǎng)內(nèi)容爆炸性發(fā)展所帶來的對內(nèi)容檢索的需求。搜索引擎不斷的發(fā)展

15、,人們的需求也在不斷的提高,網(wǎng)絡(luò)信息搜索已經(jīng)成為人們每天都要進行的內(nèi)容.如何使搜索引擎能時刻滿足人們的需求。最初的檢索功能通過索引站的方式實現(xiàn),而有了網(wǎng)絡(luò)機器人,即網(wǎng)絡(luò)爬蟲這個技術(shù)之后,搜索引擎的時代便開始一發(fā)不可收拾了。1.2網(wǎng)絡(luò)爬蟲的歷史和分類1.2.1網(wǎng)絡(luò)爬蟲的歷史在互聯(lián)網(wǎng)發(fā)展初期,網(wǎng)站相對較少,信息查找比較容易。然而伴隨互聯(lián)網(wǎng)爆炸性的發(fā)展,普通網(wǎng)絡(luò)用戶想找到所需的資料簡直如同大海撈針,這時為滿足大眾信息檢索需求的專業(yè)搜索網(wǎng)站便應(yīng)運而生了?,F(xiàn)代意義上的搜索引擎的祖先,是1990年由蒙特利爾大學學生alan emtage發(fā)明的archie。雖然當時world wide web還未出現(xiàn),但網(wǎng)

16、絡(luò)中文件傳輸還是相當頻繁的,而且由于大量的文件散布在各個分散的ftp主機中,查詢起來非常不便,因此alan archie工作原理與現(xiàn)在的搜索引擎已經(jīng)很接近,它依靠腳本程序自動搜索網(wǎng)上的文件,然后對有關(guān)信息進行索引,供使用者以一定的表達式查詢。由于 archie深受用戶歡迎,受其啟發(fā),美國內(nèi)華達system computing services大學于1993年開發(fā)了另一個與之非常相似的搜索工具,不過此時的搜索工具除了索引文件外,已能檢索網(wǎng)頁。當時,“機器人”一詞在編程者中十分流行。電腦“機器人”(computer robot)是指某個能以人類無法達到的速度不間斷地執(zhí)行某項任務(wù)的軟件程序。由于專門

17、用于檢索信息的“機器人”程序象蜘蛛一樣在網(wǎng)絡(luò)間爬來爬去,因此, 搜索引擎的“機器人”程序就被稱為“蜘蛛”程序。世界上第一個用于監(jiān)測互聯(lián)網(wǎng)發(fā)展規(guī)模的“機器人”程序是matthew gray開發(fā)的world wide web wanderer。剛開始它只用來統(tǒng)計互聯(lián)網(wǎng)上的服務(wù)器數(shù)量,后來則發(fā)展為能夠檢索網(wǎng)站域名。與wanderer相對應(yīng),martin koster于1993年10月創(chuàng)建了aliweb,它是archie的http版本。aliweb不使用“機器人”程序,而是靠網(wǎng)站主動提交信息來建立 自己的鏈接索引,類似于現(xiàn)在我們熟知的yahoo。隨著互聯(lián)網(wǎng)的迅速發(fā)展,使得檢索所有新出現(xiàn)的網(wǎng)頁變得越來越

18、困難,因此,在matthew gray的wanderer基礎(chǔ)上,一些編程者將傳統(tǒng)的“蜘蛛”程序工作原理作了些改進。其設(shè)想是,既然所有網(wǎng)頁都可能有連向其他網(wǎng)站的鏈接,那么從跟蹤 一個網(wǎng)站的鏈接開始,就有可能檢索整個互聯(lián)網(wǎng)。到1993年底,一些基于此原理的搜索引擎開始紛紛涌現(xiàn),其中以jumpstation、the world wide web worm(goto的前身,也就是今天overture),和repository-based software engineering (rbse) spider最負盛名。然而jumpstation和www worm只是以搜索工具在數(shù)據(jù)庫中找到匹配信息的先后次

19、序排列搜索結(jié)果,因此毫無信息關(guān)聯(lián)度可言。而rbse是第一個在搜索結(jié)果排列中引入關(guān)鍵字串匹配程 度概念的引擎 最早現(xiàn)代意義上的搜索引擎出現(xiàn)于1994年7月。當時michael mauldin將john leavitt的蜘蛛程序接入到其索引程序中,創(chuàng)建了大家現(xiàn)在熟知的lycos。同年4月,斯坦福(stanford)大學的兩名博士生,david filo和美籍華人楊致遠(gerry yang)共同創(chuàng)辦了超級目錄索引yahoo,并成功地使搜索引擎的概念深入人心。從此搜索引擎進入了高速發(fā)展時期。目前,互聯(lián)網(wǎng)上有名有姓的搜索引擎已 達數(shù)百家,其檢索的信息量也與從前不可同日而語。比如最近風頭正勁的googl

20、e,其數(shù)據(jù)庫中存放的網(wǎng)頁已達30億之巨。隨著互聯(lián)網(wǎng)規(guī)模的急劇膨脹,一家搜索引擎光靠自己單打獨斗已無法適應(yīng)目前的市場狀況,因此現(xiàn)在搜索引擎之間開始出現(xiàn)了分工協(xié)作,并有了專業(yè)的搜索引 擎技術(shù)和搜索數(shù)據(jù)庫服務(wù)提供商。象國外的inktomi,它本身并不是直接面向用戶的搜索引擎,但向包括overture(原goto)、 looksmart、msn、hotbot等在內(nèi)的其他搜索引擎提供全文網(wǎng)頁搜索服務(wù)。國內(nèi)的百度也屬于這一類(注),搜狐和新浪用的就是它的技術(shù)。因此 從這個意義上說,它們是搜索引擎的搜索引擎。1.2.2網(wǎng)絡(luò)爬蟲的分類網(wǎng)絡(luò)爬蟲種類繁多,如果按照部署在哪里分,可以分成:1,服務(wù)器側(cè):一般是一個多

21、線程程序,同時下載多個目標html,可以用php, java, python等做,一般綜合搜索引擎的爬蟲這樣做。但是,如果對方討厭爬蟲,很可能封掉服務(wù)器的ip,服務(wù)器ip又不容易改,另外耗用的帶寬也是較貴。2,客戶端:很適合部署定題爬蟲,或者叫聚焦爬蟲。做一個與google,百度等競爭的綜合搜索引擎成功的機會微乎其微,而垂直搜訴或者比價服務(wù)或者推 薦引擎,機會要多得多,這類爬蟲不是什么頁面都取的,而是只取關(guān)心的頁面,而且只取頁面上關(guān)心的內(nèi)容,例如提取黃頁信息,商品價格信息,還有提取競爭對手 廣告信息的。這類爬蟲可以部署很多,而且可以很有侵略性??梢缘统杀敬罅坎渴穑捎诳蛻舳薸p地址是動態(tài)的,所

22、以很難被目標網(wǎng)站封鎖。1.3網(wǎng)絡(luò)爬蟲的發(fā)展趨勢目前,大多數(shù)的搜索引擎都是基于關(guān)鍵詞的搜索引擎?;陉P(guān)鍵字匹配的搜索技術(shù)有較大的局限性:首先,它不能區(qū)分同形異義。其次,不能聯(lián)想到關(guān)鍵字的同義詞。web商業(yè)化至今,搜索引擎始終保持著網(wǎng)絡(luò)上被使用最多的服務(wù)項目的地位,然而,隨著網(wǎng)上內(nèi)容的爆炸式增長和內(nèi)容形式花樣的不斷翻新,搜索引擎越來越不能滿足挑剔的網(wǎng)民們的各種信息需求。搜索引擎的發(fā)展面臨著兩大難題:一是如何跟上internet的發(fā)展速度,二是如何為用戶提供更精確的查詢結(jié)果。所以,傳統(tǒng)的引擎不能適應(yīng)信息 技術(shù)的高速發(fā)展,新一代智能搜索引擎作為一種高效搜索引擎技術(shù)的在當今的網(wǎng)絡(luò)信息時代日益引起業(yè)界人士

23、的關(guān)注。搜索引擎己成為一個新的研究、開發(fā)領(lǐng)域。因 為它要用到信息檢索、人工智能、計算機網(wǎng)絡(luò)、分布式處理、數(shù)據(jù)庫、數(shù)據(jù)挖掘、數(shù)字圖書館、自然語言處理等多領(lǐng)域的理論和技術(shù),所以具有綜合性和挑戰(zhàn)性。又 由于搜索引擎有大量的用戶,有很好的經(jīng)濟價值,所以引起了世界各國計算機科學界和信息產(chǎn)業(yè)界的高度關(guān)注,目前的研究、開發(fā)十分活躍,并出現(xiàn)了很多值得注意的動向。目前傳統(tǒng)搜索引擎下,百度、谷歌等大廠商壟斷了網(wǎng)絡(luò)索引市場,因為它們的存在,日益龐大的互聯(lián)網(wǎng)內(nèi)容才能突破網(wǎng)絡(luò)黑暗狀態(tài),變成可知的一個世界。然而,傳統(tǒng)搜索引擎并不能支持定制搜索和信息處理、挖掘,只能以web1.0的形式存在。可以預(yù)見將來互聯(lián)網(wǎng)信息抓取、挖掘

24、和再處理,將成為人們越來越多的需求,而滿足這種需求的,就是各種各樣的爬蟲與相關(guān)的信息處理工具。現(xiàn)在網(wǎng)絡(luò)上流 行的信息采集工具、網(wǎng)站聚合工具,都是未來新一代爬蟲的先驅(qū),甚至已經(jīng)具備其特點。但是互聯(lián)網(wǎng)本身,不管1.0還是2.0,還沒有為爬蟲時代的到來做好充分準備。現(xiàn)在游行的seo,就是強勢搜索引擎條件下對網(wǎng)站結(jié)構(gòu)產(chǎn)生的影響。爬蟲時代到來之后,互聯(lián)網(wǎng)上會出現(xiàn)專門的信息站點,就是提供給爬蟲看的站點。 傳統(tǒng)的網(wǎng)絡(luò)爬蟲技術(shù)主要應(yīng)用于抓取靜態(tài)web 網(wǎng)頁,隨著ajax/web2.0的流行,如何抓取ajax 等動態(tài)頁面成了搜索引擎急需解決的問題,因為ajax顛覆了傳統(tǒng)的純http 請求/響應(yīng)協(xié)議機制,如果搜索

25、引擎依舊采用“爬”的機制,是無法抓取到ajax 頁面的有效數(shù)據(jù)的。 ajax 采用了javascript 驅(qū)動的異步請求/響應(yīng)機制,以往的爬蟲們?nèi)狈avascript語義上的理解,基本上無法模擬觸發(fā)javascript的異步調(diào)用并解析返回的異步回調(diào)邏輯和內(nèi)容。 另外,在ajax的應(yīng)用中,javascript 會對dom結(jié)構(gòu)進行大量變動,甚至頁面所有內(nèi)容都通過javascript 直接從服務(wù)器端讀取并動態(tài)繪制出來。這對習慣了dom 結(jié)構(gòu)相對不變的靜態(tài)頁面簡直是無法理解的。由此可以看出,以往的爬蟲是基于協(xié)議驅(qū)動的,而對于ajax 這樣的技術(shù),所需要的爬蟲引擎必須是基于事件驅(qū)動的。第二章 相關(guān)技術(shù)

26、背景2.1網(wǎng)絡(luò)爬蟲的定義定義1:網(wǎng)絡(luò)爬蟲是一個自動提取網(wǎng)頁的程序,它為搜索引擎從web上下載網(wǎng)頁,是搜索引擎的重要組成部分。通用網(wǎng)絡(luò)爬蟲從一個或若干初始網(wǎng)頁的url開始,獲得初始網(wǎng)頁上的url列表;在抓取網(wǎng)頁的過程中,不斷從當前頁面上抽取新的url放入待爬行隊列,直到滿足系統(tǒng)的停止條件。定義2:主題網(wǎng)絡(luò)爬蟲就是根據(jù)一定的網(wǎng)頁分析算法過濾與主題無關(guān)的鏈接,保留主題相關(guān)的鏈接并將其放入待抓取的url隊列中;然后根據(jù)一定的搜索策略從隊列中選擇下一步要抓取的網(wǎng)頁url,并重復(fù)上述過程,直到達到系統(tǒng)的某一條件時停止。所有被網(wǎng)絡(luò)爬蟲抓取的網(wǎng)頁將會被系統(tǒng)存儲,進行一定的分析、過濾,并建立索引,對于主題網(wǎng)絡(luò)爬

27、蟲來說,這一過程所得到的分析結(jié)果還可能對后續(xù)的抓取過程進行反饋和指導。定義3:如果網(wǎng)頁p中包含超鏈接l,則p稱為鏈接l的父網(wǎng)頁。定義4:如果超鏈接l指向網(wǎng)頁t,則網(wǎng)頁t稱為子網(wǎng)頁,又稱為目標網(wǎng)頁。主題網(wǎng)絡(luò)爬蟲的基本思路就是按照事先給出的主題,分超鏈接和已經(jīng)下載的網(wǎng)頁內(nèi)容,預(yù)測下一個待抓取的url及當前網(wǎng)頁的主題相關(guān)度,保證盡可能多地爬行、下載與主相關(guān)的網(wǎng)頁,盡可能少地下載無關(guān)網(wǎng)頁。2.2網(wǎng)頁搜索策略介紹 網(wǎng)頁的抓取策略可以分為深度優(yōu)先、廣度優(yōu)先和最佳優(yōu)先三種。深度優(yōu)先在很多情況下會導致爬蟲的陷入(trapped)問題,目前常見的是廣度優(yōu)先和最佳優(yōu)先方法。 2.2.1廣度優(yōu)先搜索策略 廣度優(yōu)先搜

28、索策略是指在抓取過程中,在完成當前層次的搜索后,才進行下一層次的搜索。該算法的設(shè)計和實現(xiàn)相對簡單。在目前為覆蓋盡可能多的網(wǎng)頁,一般使用廣度優(yōu)先搜索方法。也有很多研究將廣度優(yōu)先搜索策略應(yīng)用于聚焦爬蟲中。其基本思想是認為與初始url在一定鏈接距離內(nèi)的網(wǎng)頁具有主題相關(guān)性的概率很大。另外一種方法是將廣度優(yōu)先搜索與網(wǎng)頁過濾技術(shù)結(jié)合使用,先用廣度優(yōu)先策略抓取網(wǎng)頁,再將其中無關(guān)的網(wǎng)頁過濾掉。這些方法的缺點在于,隨著抓取網(wǎng)頁的增多,大量的無關(guān)網(wǎng)頁將被下載并過濾,算法的效率將變低。 2.2.2最佳優(yōu)先搜索策略最佳優(yōu)先搜索策略按照一定的網(wǎng)頁分析算法,預(yù)測候選url與目標網(wǎng)頁的相似度,或與主題的相關(guān)性,并選取評價最

29、好的一個或幾個url進行抓取。它只訪問經(jīng)過網(wǎng)頁分析算法預(yù)測為“有用”的網(wǎng)頁。存在的一個問題是,在爬蟲抓取路徑上的很多相關(guān)網(wǎng)頁可能被忽略,因為最佳優(yōu)先策略是一種局部最優(yōu)搜索算法。因此需要將最佳優(yōu)先結(jié)合具體的應(yīng)用進行改進,以跳出局部最優(yōu)點。將在第4節(jié)中結(jié)合網(wǎng)頁分析算法作具體的討論。研究表明,這樣的閉環(huán)調(diào)整可以將無關(guān)網(wǎng)頁數(shù)量降低30%90%。2.3判斷相關(guān)度算法主題爬蟲的系統(tǒng)組成最初考慮是對頁面的過濾,不像普通爬蟲對所有頁面的鏈接進行處理,先對頁面與受限領(lǐng)域的主題相關(guān)度進行分析,只有當其主題相關(guān)度符合要求時才處理該頁面中的鏈接,因為如果該頁面和本領(lǐng)域比較相關(guān),它所包含的鏈接和領(lǐng)域相關(guān)的幾率也較大,這

30、樣提高了爬行精度,雖然會遺漏少數(shù)頁面,但綜合效果是令人滿意的。因此,主題相關(guān)度的分析是主題爬蟲設(shè)計的關(guān)鍵。 (一)主題相關(guān)度計算模型垂直搜索引擎與通用搜索引擎最大的區(qū)別在于垂直搜索引擎是面向某個領(lǐng)域的,因而垂直搜索引擎的網(wǎng)絡(luò)蜘蛛只采集與主題相關(guān)的網(wǎng)頁,與主題無關(guān)的網(wǎng)頁將被丟棄,將此類網(wǎng)絡(luò)蜘蛛稱為主題蜘蛛6-8。主題蜘蛛將網(wǎng)頁下載到本地后,需要使用基于內(nèi)容的主題判別方法計算該網(wǎng)頁的主題相關(guān)度值,主題相關(guān)度低于某一閾值的網(wǎng)頁被丟棄。主題相關(guān)度的計算方法有布爾模型和向量空間模型兩種模型算法10。1.布爾模型。在主題判別時,布爾模型是很容易實現(xiàn)的。在布爾模型9中,一個文檔通過一個關(guān)鍵詞集合來表示。同時

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

32、向量空間模型中,文檔被形式化為n維空間中的向量,把關(guān)鍵詞的個數(shù)n作為空間向量的維數(shù),每個關(guān)鍵詞的權(quán)值 作為每一維分量的大小,則主題用向量表示為:a=(a1,a2,an),i=1,2,n,ai=wi對于頁面進行分析,統(tǒng)計關(guān)鍵詞出現(xiàn)的頻率,并求出頻率之比,以出現(xiàn)的頻率最高的關(guān)鍵詞作為基準,其頻率用xi=1表示,通過頻率比,求出其他關(guān)鍵詞的頻率 ,則該頁面對應(yīng)向量的每一維分量為xiwi。指定一個閾值r,當cos=r時就可以認為該頁面和主題是比較相關(guān)的,r的取值需要根據(jù)經(jīng)驗和實際要求確定,如果想獲得較多的頁面,可以把r設(shè)小一點,要獲得較少的頁面可以把r設(shè)的大一點。(二)布爾模型與空間向量模型分析布爾模

33、型的主要缺陷在于每個關(guān)鍵詞的權(quán)重都是一樣的,它不支持設(shè)定關(guān)鍵詞的相對重要性,但是其優(yōu)點也較為明顯,它易于實現(xiàn),計算代價較小。向量空間模型最大優(yōu)點在于它在知識表示方法上的巨大優(yōu)勢。在該模型中,文檔的內(nèi)容被形式化為多維空間中的一個點,以向量的形式給出。也正是因為把文檔以向量的形式定義到實數(shù)域中,才使得模式識別和其他領(lǐng)域中各種成熟的算法和計算方法得以采用,極大地提高了自然語言文檔的可計算性和可操作性。通過對空間向量模型和布爾模型的介紹,我們知道現(xiàn)在垂直搜索引擎大多采用空間向量模型計算主題相關(guān)性。這樣極大的提高到主題爬蟲的效率,也極大的提高了垂直搜索引擎的應(yīng)用效率,給客戶帶來了高效的查詢效果。與在進行

34、頁面的主題相關(guān)度分析后,當其主題相關(guān)度符合要求時將處理該頁面中的所有鏈接,但其中的鏈接指向的頁面也可能有許多偏離了主題,這一點在網(wǎng)頁的標題上就可以看出,現(xiàn)在大多數(shù)網(wǎng)頁的標題已經(jīng)很明顯的給出了文本的主要描述對象,所以傳統(tǒng)的空間模型策略沒有注意到網(wǎng)頁標題這個重要的角色。針對此提出了一種基于網(wǎng)頁標題的空間向量模型主題相關(guān)度計算方法。第三章 網(wǎng)絡(luò)爬蟲模型的分析和概要設(shè)計3.1網(wǎng)絡(luò)爬蟲的模型分析 首先建立url任務(wù)列表,即開始要爬取的url。由url任務(wù)列表開始,根據(jù)預(yù)先設(shè)定的深度爬取網(wǎng)頁,同時判斷url是否重復(fù),按照一定算法和排序方式搜索頁面,然后對頁面按照一定算法進行分析,并提取相關(guān)url,最后將所

35、得url返回任務(wù)列表。之后將任務(wù)列表中url重新開始爬取,從而使網(wǎng)絡(luò)爬蟲進行循環(huán)運行。3.2網(wǎng)絡(luò)爬蟲的搜索策略 本文的搜索策略為廣度優(yōu)先搜索策略。如下圖3-1所示。圖3-1廣度優(yōu)先搜索策略示意圖 1) 定義一個狀態(tài)結(jié)點采用廣度優(yōu)先搜索算法解答問題時,需要構(gòu)造一個表明狀態(tài)特征和不同狀態(tài)之間關(guān)系的數(shù)據(jù)結(jié)構(gòu),這種數(shù)據(jù)結(jié)構(gòu)稱為結(jié)點。不同的問題需要用不同的數(shù)據(jù)結(jié)構(gòu)描述。2)確定結(jié)點的擴展規(guī)則根據(jù)問題所給定的條件,從一個結(jié)點出發(fā),可以生成一個或多個新的結(jié)點,這個過程通常稱為擴展。結(jié)點之間的關(guān)系一般可以表示成一棵樹,它被稱為解答樹。搜索算法的搜索過程實際上就是根據(jù)初始條件和擴展規(guī)則構(gòu)造一棵解答樹并尋找符合目

36、標狀態(tài)的結(jié)點的過程。廣度優(yōu)先搜索算法中,解答樹上結(jié)點的擴展是沿結(jié)點深度的“斷層”進行,也就是說,結(jié)點的擴展是按它們接近起始結(jié)點的程度依次進行的。首先生成第一層結(jié)點,同時檢查目標結(jié)點是否在所生成的結(jié)點中,如果不在,則將所有的第一層結(jié)點逐一擴展,得到第二層結(jié)點,并檢查第二層結(jié)點是否包含目標結(jié)點,.對長度為n+1的任一結(jié)點進行擴展之前,必須先考慮長度為n的結(jié)點的每種可能的狀態(tài)。因此,對于同一層結(jié)點來說,求解問題的價值是相同的,我們可以按任意順序來擴展它們。這里采用的原則是先生成的結(jié)點先擴展。結(jié)點的擴展規(guī)則也就是如何從現(xiàn)有的結(jié)點生成新結(jié)點。對不同的問題,結(jié)點的擴展規(guī)則也不相同,需要按照問題的要求確定。

37、3)搜索策略為了便于進行搜索,要設(shè)置一個表存儲所有的結(jié)點。因為在廣度優(yōu)先搜索算法中,要滿足先生成的結(jié)點先擴展的原則,所以存儲結(jié)點的表一般設(shè)計成隊列的數(shù)據(jù)結(jié)構(gòu)。搜索的步驟一般是:(1)從隊列頭取出一個結(jié)點,檢查它按照擴展規(guī)則是否能夠擴展,如果能則產(chǎn)生一個新結(jié)點。(2)檢查新生成的結(jié)點,看它是否已在隊列中存在,如果新結(jié)點已經(jīng)在隊列中出現(xiàn)過,就放棄這個結(jié)點,然后回到第(1)步。否則,如果新結(jié)點未曾在隊列中出現(xiàn)過,則將它加入到隊列尾。(3)檢查新結(jié)點是否目標結(jié)點。如果新結(jié)點是目標結(jié)點,則搜索成功,程序結(jié)束;若新結(jié)點不是目標結(jié)點,則回到第(1)步,再從隊列頭取出結(jié)點進行擴展.。最終可能產(chǎn)生兩種結(jié)果:找到

38、目標結(jié)點,或擴展完所有結(jié)點而沒有找到目標結(jié)點。3.3網(wǎng)絡(luò)爬蟲的主題相關(guān)度判斷主題爬蟲的系統(tǒng)組成最初考慮是對頁面的過濾,不像普通爬蟲對所有頁面的鏈接進行處理,先對頁面與受限領(lǐng)域的主題相關(guān)度進行分析,只有當其主題相關(guān)度符合要求時才處理該頁面中的鏈接,因為如果該頁面和本領(lǐng)域比較相關(guān),它所包含的鏈接和領(lǐng)域相關(guān)的幾率也較大,這樣提高了爬行精度,雖然會遺漏少數(shù)頁面,但綜合效果是令人滿意的。因此,主題相關(guān)度的分析是主題爬蟲設(shè)計的關(guān)鍵。主題蜘蛛將網(wǎng)頁下載到本地后,需要使用基于內(nèi)容的主題判別方法計算該網(wǎng)頁的主題相關(guān)度值,主題相關(guān)度低于某一閾值的網(wǎng)頁被丟棄。(1) 什么是網(wǎng)頁標題通常瀏覽一個網(wǎng)頁時,通過瀏覽器頂端

39、的藍色顯示條出現(xiàn)的信息就是“網(wǎng)頁標題”。在網(wǎng)頁html代碼中,網(wǎng)頁標題位于標簽之間。網(wǎng)頁標題是對于一個網(wǎng)頁的高度概括,一般來說,網(wǎng)站首頁的標題就是網(wǎng)站的正式名稱,而網(wǎng)站中文章內(nèi)容頁面的標題就是這文章的題目,欄目首頁的標題通常是欄目名稱。當然這種一般原則并不是固定不變的,在實際工作中可能會有一定的變化,但是無論如何變化,總體上仍然會遵照這種規(guī)律12。例如,現(xiàn)在會看到很多網(wǎng)站的首頁標題較長,除了網(wǎng)站名稱之外,還有網(wǎng)站相關(guān)業(yè)務(wù)之類的關(guān)鍵詞,這主要是為了在搜索引擎搜索結(jié)果中獲得排名優(yōu)勢而考慮的,也屬于正常的搜索引擎優(yōu)化方法。因為一般的公司名稱(或者品牌名稱)中可能不包含核心業(yè)務(wù)的關(guān)鍵詞,在搜索結(jié)果排名

40、中將處于不利地位。(二)網(wǎng)頁標題的重要性以google為例,google會對其標題標簽(meta title)中出現(xiàn)的關(guān)鍵字給予較高的權(quán)值。所以應(yīng)當確保在網(wǎng)站的標題標簽中包含了最重要的關(guān)鍵詞,即應(yīng)圍繞最重要的關(guān)鍵詞來決定網(wǎng)頁標題的內(nèi)容。不過網(wǎng)頁的標題不可過長,一般最好在35到40個字符之間。在實際操作中,網(wǎng)頁標題不宜過短或過長。太短無法完整的表達網(wǎng)頁信息,太長不僅不利于用戶識別,而且對搜索引擎來說也加大了識別核心關(guān)鍵詞的難度;網(wǎng)頁標題應(yīng)概括網(wǎng)頁的核心內(nèi)容。搜索引擎在進行搜索的時候,搜索結(jié)果的內(nèi)容一般是網(wǎng)頁標題、網(wǎng)頁摘要信息和鏈接,要引起用戶的關(guān)注,高度總結(jié)了網(wǎng)頁內(nèi)容的標題至關(guān)重要。比如戴爾中國

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

42、步驟 1.對標題及正文的特征項的選取是通過分詞后與主題集合匹配,并通過詞頻計算來得到與主題向量維數(shù)相等的標題向量和正文向量。2.通過向量空間模型計算出主題和標題的相關(guān)度b。3.通過空間向量向量模型計算主題與正文的相關(guān)度c。4.主題與整個網(wǎng)頁的相關(guān)度:a=4b+c。5.通過詳細計算,設(shè)定相關(guān)度閾值為2,網(wǎng)頁與主題的相關(guān)度a2,則認為該網(wǎng)頁與主題相關(guān)的。3.4網(wǎng)絡(luò)爬蟲的概要設(shè)計本網(wǎng)絡(luò)爬蟲的開發(fā)目的,通過網(wǎng)絡(luò)爬蟲技術(shù)一個自動提取網(wǎng)頁的程序,實現(xiàn)搜索引擎從自己想要訪問的網(wǎng)上下載網(wǎng)頁,再根據(jù)已下載的網(wǎng)頁上繼續(xù)訪問其它的網(wǎng)頁,并將其下載直到滿足用戶的需求。根據(jù)現(xiàn)實中不同用戶的實際上的各種需求,本項目簡單實

43、現(xiàn)主題爬蟲,本網(wǎng)絡(luò)爬蟲需要達到如下幾個目標:1.設(shè)計基于多線程的網(wǎng)絡(luò)爬蟲,客戶端向服務(wù)器發(fā)送自己設(shè)定好請求。如圖3-7所示。url配置文件url配置文件列表臨界區(qū)互聯(lián)網(wǎng)線程1搜索元url如線程2搜索元url如線程n圖3-2 多線程網(wǎng)絡(luò)爬蟲概要設(shè)計圖模型2.通過 http將web服務(wù)器上協(xié)議站點的網(wǎng)頁代碼提取出來。3.根據(jù)一定的正則表達式提取出客戶端所需要的信息。4.廣度優(yōu)先搜索可從網(wǎng)頁中某個鏈接出發(fā),訪問該鏈接網(wǎng)頁上的所有鏈接,訪問完成后,再通過遞歸算法實現(xiàn)下一層的訪問。 本網(wǎng)絡(luò)爬蟲最終將設(shè)計成一個能夠自動讀寫配置文件并且在后臺自動執(zhí)行的網(wǎng)絡(luò)爬蟲程序。網(wǎng)絡(luò)爬蟲工作流程圖如圖3-3所示。圖3-3

44、 網(wǎng)絡(luò)爬蟲工作流程圖第四章 網(wǎng)絡(luò)爬蟲模型的設(shè)計和實現(xiàn)4.1網(wǎng)絡(luò)爬蟲總體設(shè)計根據(jù)本網(wǎng)絡(luò)爬蟲的概要設(shè)計本網(wǎng)絡(luò)爬蟲是一個自動提取網(wǎng)頁的程序,根據(jù)設(shè)定的主題判斷是否與主題相關(guān),再根據(jù)已下載的網(wǎng)頁上繼續(xù)訪問其它的網(wǎng)頁,并將其下載直到滿足用戶的需求。 1.設(shè)計基于多線程的網(wǎng)絡(luò)爬蟲。2.通過 http將待爬取url列表對應(yīng)的url的網(wǎng)頁代碼提取出來。3.提取出所需要的信息并且通過算法判斷網(wǎng)頁是否和設(shè)定的主題相關(guān)。4.廣度優(yōu)先搜索,從網(wǎng)頁中某個鏈接出發(fā),訪問該鏈接網(wǎng)頁上的所有鏈接,訪問完成后,再通過遞歸算法實現(xiàn)下一層的訪問,重復(fù)以上步驟。總的來說爬蟲程序根據(jù)輸入獲得url任務(wù)列表,即初始url種子,把初始種子

45、保存在臨界區(qū)中,按照廣度搜索運算法搜索抓取網(wǎng)頁并提取url返回到臨屆區(qū)中,通過判斷主題相關(guān)度算法判斷相關(guān)度,取出不相關(guān)網(wǎng)頁,從而使整個爬蟲程序循環(huán)運行下去。4.2網(wǎng)絡(luò)爬蟲具體設(shè)計4.2.1爬取網(wǎng)頁 主要用到的技術(shù)如下:繼承htmleditorkit類,改寫其中的 htmleditorkit.parser getparser()屬性protect為public,用下列函數(shù)爬取網(wǎng)頁:public class xxxxx extends htmleditorkit public htmleditorkit.parser getparser()return super.getparser(); 步驟如

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

47、ector();protected vector linkname = new vector();/ 得到網(wǎng)頁上的正文文本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;/ 獲得該網(wǎng)頁標題public stri

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

49、ublic void handlestarttag(html.tag t, mutableattributeset a, int pos) / 處理文本 標簽public void handletext(char data, int pos)之后通過調(diào)用htmleditorkit.parser類,生成對象就可以直接得到分析后的網(wǎng)頁文件。4.2.3判斷相關(guān)度 算法實現(xiàn)步驟和算法描述:1. 對標題及正文的特征項的選取是通過分詞后與主題集合匹配,并通過詞頻計算來得到與主題向量維數(shù)相等的標題向量和正文向量。2.通過向量空間模型計算出主題和標題的相關(guān)度b。3.通過空間向量向量模型計算主題與正文的相關(guān)度c

50、。4.主題與整個網(wǎng)頁的相關(guān)度:a=4b+c。5.通過詳細計算,設(shè)定相關(guān)度閾值為2,網(wǎng)頁與主題的相關(guān)度a2,則認為該網(wǎng)頁與主題相關(guān)的。輸入:主題集合文本a.txt,網(wǎng)頁url輸出:主題相關(guān)度(1)get topic(string path)/根據(jù)路徑獲取主題文本集合(2)compulate topicweight(string topic)/求主題結(jié)合權(quán)重(3)sortanddelrepeat(intcount)/刪除重復(fù)元素并排序(4)delrepeat(string segment)/刪除分詞后的重復(fù)元素(5)delrepeat(vector url)/刪除得到的url中的重復(fù)元素(6)ge

51、tparser(string url)/獲得parser實例(7)string titlestr =p.geturltitle()/獲取網(wǎng)頁標題(8)string bodystr=p.getparagraphtext()/獲取網(wǎng)頁文本(9)string titlestrseg=segment.segment(titlestr)/網(wǎng)頁標題分詞(10)string bodystrseg=segment.segment(bodystr)/網(wǎng)頁文本分詞(11)compulate title.length,body.length/計算標題向量長度和網(wǎng)頁文本向量長度(12)set topicweight1

52、,titleweight1,bodyweight1;/設(shè)置權(quán)重(13)last compulate relative/計算主題相關(guān)性(14)return relative;/返回結(jié)果 根據(jù)系統(tǒng)設(shè)置首先是下載所有網(wǎng)頁,而后判定主題相關(guān)性,與主題相關(guān)則放置在相關(guān)url庫中,不相關(guān)的網(wǎng)頁則丟棄。4.2.4保存網(wǎng)頁信息1.首先建立url連接。urlconnection url_c = url_test.openconnection();2.新建pagepro類。如下:private string host;private int port;private string contenttype;priv

53、ate int contentlength;private string date;private string url;3.將數(shù)據(jù)存入新建的pagepro類中。4.將數(shù)據(jù)保存到預(yù)先輸入的地址。4.2.5數(shù)據(jù)庫設(shè)計和存儲使用jdbc訪問數(shù)據(jù)庫,儲存下載的網(wǎng)頁url和下載時間信息。4.2.6多線程的實現(xiàn) 設(shè)計為4個線程同時進行工作。1. 從用戶輸入的起始url開始,遞歸獲得指定深度的url。2. 對每個url進行分析,判斷相關(guān)度。3. 下載與主題相關(guān)的網(wǎng)頁,并存儲在數(shù)據(jù)庫中。第i個線程對所有url列表中序列為第0+4i url的進行同步操作,其中對儲存所有url的列表執(zhí)行synchronized

54、 (all_url)操作。4.2.7附加功能為了檢測網(wǎng)絡(luò)環(huán)境,防止因為不良的網(wǎng)絡(luò)環(huán)境影響網(wǎng)絡(luò)爬蟲的爬取效率和正確略,額外添加了實時的ping功能,調(diào)用windows的命令解釋器的ping功能,測試用戶輸入網(wǎng)址與當前主機的連接狀況,測試當前網(wǎng)絡(luò)狀況是否良好。4.2.8整體流程爬蟲代碼文件構(gòu)成如圖4-1:圖4-1代碼結(jié)構(gòu)構(gòu)成截圖 htmlparser.java這個類是改寫htmleditorkit.parser getparser()方法為publichttp.java是根據(jù)輸入url獲取網(wǎng)頁文檔parser.java是繼承parsercallback獲得網(wǎng)頁內(nèi)容relative.java是判斷主題與網(wǎng)頁內(nèi)容的相關(guān)性s

溫馨提示

  • 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. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論