• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
              C++博客 :: 首頁 :: 新隨筆 ::  ::  :: 管理

            Spider概述

            Posted on 2010-09-16 19:29 Kevin_Zhang 閱讀(848) 評論(0)  編輯 收藏 引用 所屬分類: 搜索引擎

            Spider概述

            Spider即網(wǎng)絡(luò)爬蟲 ,其定義有廣義和狹義之分。狹義上指遵循標(biāo)準(zhǔn)的 http協(xié)議利用超鏈接和 Web文檔檢索的方法遍歷萬維網(wǎng)信息空間的軟件程序 ;而廣義的定義則是所有能遵循 http協(xié)議檢索 Web文檔的軟件都稱之為網(wǎng)絡(luò)爬蟲。

            Spider是一個功能很強(qiáng)的自動提取網(wǎng)頁的程序 ,它為搜索引擎從萬維網(wǎng)上下載網(wǎng)頁 ,是搜索引擎的重要組成 .它通過請求站點(diǎn)上的 HTML文檔訪問某一站點(diǎn)。它遍歷 Web空間 ,不斷從一個站點(diǎn)移動到另一個站點(diǎn) ,自動建立索引 ,并加入到網(wǎng)頁數(shù)據(jù)庫中。網(wǎng)絡(luò)爬蟲進(jìn)入某個超級文本時(shí) ,它利用 HTML語言的標(biāo)記結(jié)構(gòu)來搜索信息及獲取指向其他超級文本的 URL地址 ,可以完全不依賴用戶干預(yù)實(shí)現(xiàn)網(wǎng)絡(luò)上的自動爬行和搜索。

            Spider的隊(duì)列

            (1)等待隊(duì)列 :新發(fā)現(xiàn)的 URL被加入到這個隊(duì)列 ,等待被 Spider程序處理 ;

            (2)處理隊(duì)列 :要被處理的 URL被傳送到這個隊(duì)列。為了避免同一個 URL被多次處理 ,當(dāng)一個 URL被處理過后 ,它將被轉(zhuǎn)移到完成隊(duì)列或者錯誤隊(duì)列 (如果發(fā)生錯誤 )。

            (3)錯誤隊(duì)列 :如果在下載網(wǎng)頁是發(fā)生錯誤 ,該 URL將被加入 到錯誤隊(duì)列。

            (4)完成隊(duì)列 :如果在處理網(wǎng)頁沒有發(fā)生錯誤 ,該 URL將被加入到完成隊(duì)列。

            網(wǎng)絡(luò)爬蟲搜索策略

            在抓取網(wǎng)頁的時(shí)候 ,目前網(wǎng)絡(luò)爬蟲一般有兩種策略 :無主題搜索與基于某特定主體的專業(yè)智能搜索。其中前者主要包括 :廣度優(yōu)先和深度優(yōu)先。廣度優(yōu)先是指網(wǎng)絡(luò)爬蟲會先抓取起始網(wǎng)頁中鏈接的所有網(wǎng)頁 ,然后再選擇其中的一個鏈接網(wǎng)頁 ,繼續(xù)抓取在此網(wǎng)頁中鏈接的所有網(wǎng)頁。這是最常用的方式,因?yàn)檫@個方法可以讓網(wǎng)絡(luò)爬蟲并行處理 ,提高其抓取速度。深度優(yōu)先是指網(wǎng)絡(luò)爬蟲會從起始頁開始 ,一個鏈接一個鏈接跟蹤下去 ,處理完這條線路之后再轉(zhuǎn)入下一個起始頁 ,繼續(xù)跟蹤鏈接。這個方法有個優(yōu)點(diǎn)是網(wǎng)絡(luò)爬蟲在設(shè)計(jì)的時(shí)候比較容易。大多數(shù)網(wǎng)頁爬行器采用寬度優(yōu)先搜索策略或者是對這種策略的某些改進(jìn)。

            在專業(yè)搜索引擎中 ,網(wǎng)絡(luò)爬蟲的任務(wù)是獲取 Web頁面和決定鏈接的訪問順序 ,它通常從一個 “種子集 ”(如用戶查詢、種子鏈接或種子頁面 )發(fā),以迭代的方式訪問頁面和提取鏈接。搜索過程中 ,未訪問的鏈接被暫存在一個稱為 “搜索前沿 ”(Spider Frontier)的隊(duì)列中 ,網(wǎng)絡(luò)爬蟲根據(jù)搜索前沿中鏈接的 “重要程度 ”決定下一個要訪問的鏈接。如何評價(jià)和預(yù)測鏈接的 “重要程度 ”(或稱價(jià)值 )是決定網(wǎng)絡(luò)爬蟲搜索策略的關(guān)鍵。

            眾多的網(wǎng)絡(luò)爬蟲設(shè)計(jì)各不相同 ,但歸根結(jié)底是采用不同的鏈接價(jià)值評價(jià)標(biāo)準(zhǔn)。

            常用開源網(wǎng)絡(luò)爬蟲介紹及其比較

            Nutch

            開發(fā)語言:Java

            http://lucene.apache.org/nutch/

            簡介:

            Apache的子項(xiàng)目之一,屬于Lucene項(xiàng)目下的子項(xiàng)目。

            Nutch是一個基于Lucene,類似Google的完整網(wǎng)絡(luò)搜索引擎解決方案,基于Hadoop的分布式處理模型保證了系統(tǒng)的性能,類似Eclipse的插件機(jī)制保證了系統(tǒng)的可客戶化,而且很容易集成到自己的應(yīng)用之中。

            Larbin

            開發(fā)語言:C++

            http://larbin.sourceforge.net/index-eng.html

            簡介

              larbin是一種開源的網(wǎng)絡(luò)爬蟲/網(wǎng)絡(luò)蜘蛛,由法國的年輕人 Sébastien Ailleret獨(dú)立開發(fā)。larbin目的是能夠跟蹤頁面的url進(jìn)行擴(kuò)展的抓取,最后為搜索引擎提供廣泛的數(shù)據(jù)來源。

              Larbin只是一個爬蟲,也就是說larbin只抓取網(wǎng)頁,至于如何parse的事情則由用戶自己完成。另外,如何存儲到數(shù)據(jù)庫以及建立索引的事情 larbin也不提供。

              latbin最初的設(shè)計(jì)也是依據(jù)設(shè)計(jì)簡單但是高度可配置性的原則,因此我們可以看到,一個簡單的larbin的爬蟲可以每天獲取500萬的網(wǎng)頁,非常高效。

            Heritrix

            開發(fā)語言:Java

            http://crawler.archive.org/

            簡介

            與Nutch比較

            和 Nutch。二者均為Java開源框架,Heritrix 是 SourceForge上的開源產(chǎn)品,Nutch為Apache的一個子項(xiàng)目,它們都稱作網(wǎng)絡(luò)爬蟲/蜘蛛( Web Crawler),它們實(shí)現(xiàn)的原理基本一致:深度遍歷網(wǎng)站的資源,將這些資源抓取到本地,使用的方法都是分析網(wǎng)站每一個有效的URI,并提交Http請求,從而獲得相應(yīng)結(jié)果,生成本地文件及相應(yīng)的日志信息等。

            Heritrix 是個 "archival crawler" -- 用來獲取完整的、精確的、站點(diǎn)內(nèi)容的深度復(fù)制。包括獲取圖像以及其他非文本內(nèi)容。抓取并存儲相關(guān)的內(nèi)容。對內(nèi)容來者不拒,不對頁面進(jìn)行內(nèi)容上的修改。重新爬行對相同的URL不針對先前的進(jìn)行替換。爬蟲通過Web用戶界面啟動、監(jiān)控、調(diào)整,允許彈性的定義要獲取的URL。

            二者的差異:

            Nutch 只獲取并保存可索引的內(nèi)容。Heritrix則是照單全收。力求保存頁面原貌

            Nutch 可以修剪內(nèi)容,或者對內(nèi)容格式進(jìn)行轉(zhuǎn)換。

            Nutch 保存內(nèi)容為數(shù)據(jù)庫優(yōu)化格式便于以后索引;刷新替換舊的內(nèi)容。而Heritrix 是添加(追加)新的內(nèi)容。

            Nutch 從命令行運(yùn)行、控制。Heritrix 有 Web 控制管理界面。

            Nutch 的定制能力不夠強(qiáng),不過現(xiàn)在已經(jīng)有了一定改進(jìn)。Heritrix 可控制的參數(shù)更多。

            Heritrix提供的功能沒有nutch多,有點(diǎn)整站下載的味道。既沒有索引又沒有解析,甚至對于重復(fù)爬取URL都處理不是很好。

            Heritrix的功能強(qiáng)大 但是配置起來卻有點(diǎn)麻煩。

            三者的比較

            一、從功能方面來說,Heritrix與Larbin的功能類似。都是一個純粹的網(wǎng)絡(luò)爬蟲,提供網(wǎng)站的鏡像下載。而Nutch是一個網(wǎng)絡(luò)搜索引擎框架,爬取網(wǎng)頁只是其功能的一部分。

            二、從分布式處理來說,Nutch支持分布式處理,而另外兩個好像尚且還沒有支持。

            三、從爬取的網(wǎng)頁存儲方式來說,Heritrix和 Larbin都是將爬取下來的內(nèi)容保存為原始類型的內(nèi)容。而Nutch是將內(nèi)容保存到其特定格式的segment中去。

            四,對于爬取下來的內(nèi)容的處理來說,Heritrix和 Larbin都是將爬取下來的內(nèi)容不經(jīng)處理直接保存為原始內(nèi)容。而Nutch對文本進(jìn)行了包括鏈接分析、正文提取、建立索引(Lucene索引)等處理。

            五,從爬取的效率來說,Larbin效率較高,因?yàn)槠涫鞘褂胏++實(shí)現(xiàn)的并且功能單一。

            表 3種爬蟲的比較

            crawler

            開發(fā)語言

            功能單一

            支持分布式爬取

            效率

            鏡像保存

            Nutch

            Java

            ×

            ×

            Larbin

            C++

            ×

            Heritrix

            Java

            ×

            其他網(wǎng)絡(luò)爬蟲介紹:

            Heritrix
            Heritrix是一個開源,可擴(kuò)展的web爬蟲項(xiàng)目。Heritrix設(shè)計(jì)成嚴(yán)格按照robots.txt文件的排除指示和META robots標(biāo)簽。
            http://crawler.archive.org/

            WebSPHINX
            WebSPHINX是一個Java類包和Web爬蟲的交互式開發(fā)環(huán)境。Web爬蟲(也叫作機(jī)器人或蜘蛛)是可以自動瀏覽與處理Web頁面的程序。WebSPHINX由兩部分組成:爬蟲工作平臺和WebSPHINX類包。
            http://www.cs.cmu.edu/~rcm/websphinx/

            WebLech
            WebLech是一個功能強(qiáng)大的Web站點(diǎn)下載與鏡像工具。它支持按功能需求來下載web站點(diǎn)并能夠盡可能模仿標(biāo)準(zhǔn)Web瀏覽器的行為。WebLech有一個功能控制臺并采用多線程操作。
            http://weblech.sourceforge.net/
            Arale
            Arale主要為個人使用而設(shè)計(jì),而沒有像其它爬蟲一樣是關(guān)注于頁面索引。Arale能夠下載整個web站點(diǎn)或來自web站點(diǎn)的某些資源。Arale還能夠把動態(tài)頁面映射成靜態(tài)頁面。
            http://web.tiscali.it/_flat/arale.jsp.html

            J-Spider
            J-Spider:是一個完全可配置和定制的Web Spider引擎.你可以利用它來檢查網(wǎng)站的錯誤(內(nèi)在的服務(wù)器錯誤等),網(wǎng)站內(nèi)外部鏈接檢查,分析網(wǎng)站的結(jié)構(gòu)(可創(chuàng)建一個網(wǎng)站地圖),下載整個Web站點(diǎn),你還可以寫一個JSpider插件來擴(kuò)展你所需要的功能。
            http://j-spider.sourceforge.net/

            spindle
            spindle 是一個構(gòu)建在Lucene工具包之上的Web索引/搜索工具.它包括一個用于創(chuàng)建索引的HTTP spider和一個用于搜索這些索引的搜索類。spindle項(xiàng)目提供了一組JSP標(biāo)簽庫使得那些基于JSP的站點(diǎn)不需要開發(fā)任何Java類就能夠增加搜索功能。
            http://www.bitmechanic.com/projects/spindle/

            Arachnid
            Arachnid: 是一個基于Java的web spider框架.它包含一個簡單的HTML剖析器能夠分析包含HTML內(nèi)容的輸入流.通過實(shí)現(xiàn)Arachnid的子類就能夠開發(fā)一個簡單的Web spiders并能夠在Web站上的每個頁面被解析之后增加幾行代碼調(diào)用。 Arachnid的下載包中包含兩個spider應(yīng)用程序例子用于演示如何使用該框架。
            http://arachnid.sourceforge.net/

            LARM
            LARM能夠?yàn)镴akarta Lucene搜索引擎框架的用戶提供一個純Java的搜索解決方案。它包含能夠?yàn)槲募瑪?shù)據(jù)庫表格建立索引的方法和為Web站點(diǎn)建索引的爬蟲。
            http://larm.sourceforge.net/

            JoBo
            JoBo 是一個用于下載整個Web站點(diǎn)的簡單工具。它本質(zhì)是一個Web Spider。與其它下載工具相比較它的主要優(yōu)勢是能夠自動填充form(如:自動登錄)和使用cookies來處理session。JoBo還有靈活的下載規(guī)則(如:通過網(wǎng)頁的URL,大小,MIME類型等)來限制下載。
            http://www.matuschek.net/software/jobo/index.html

            snoics-reptile
            snoics -reptile是用純Java開發(fā)的,用來進(jìn)行網(wǎng)站鏡像抓取的工具,可以使用配制文件中提供的URL入口,把這個網(wǎng)站所有的能用瀏覽器通過GET的方式獲取到的資源全部抓取到本地,包括網(wǎng)頁和各種類型的文件,如:圖片、flash、mp3、zip、rar、exe等文件。可以將整個網(wǎng)站完整地下傳至硬盤內(nèi),并能保持原有的網(wǎng)站結(jié)構(gòu)精確不變。只需要把抓取下來的網(wǎng)站放到web服務(wù)器(如:Apache)中,就可以實(shí)現(xiàn)完整的網(wǎng)站鏡像。
            http://www.blogjava.net/snoics


            Web-Harvest
            Web-Harvest是一個Java開源Web數(shù)據(jù)抽取工具。它能夠收集指定的Web頁面并從這些頁面中提取有用的數(shù)據(jù)。Web-Harvest主要是運(yùn)用了像XSLT,XQuery,正則表達(dá)式等這些技術(shù)來實(shí)現(xiàn)對text/xml的操作。
            http://web-harvest.sourceforge.net

            spiderpy
            spiderpy是一個基于Python編碼的一個開源web爬蟲工具,允許用戶收集文件和搜索網(wǎng)站,并有一個可配置的界面。
            http://pyspider.sourceforge.net/

            The Spider Web Network Xoops Mod Team
            pider Web Network Xoops Mod是一個Xoops下的模塊,完全由PHP語言實(shí)現(xiàn)。
            http://www.tswn.com/

            larbin
            larbin是個基于C++的web爬蟲工具,擁有易于操作的界面,不過只能跑在LINUX下,在一臺普通PC下larbin每天可以爬5百萬個頁面(當(dāng)然啦,需要擁有良好的網(wǎng)絡(luò))
            http://larbin.sourceforge.net/index-eng.html

            爬蟲存在的問題

            1. robots.txt

            robots.txt是一個純文本文件,在這個文件中網(wǎng)站管理者可以聲明該網(wǎng)站中不想被robots訪問的部分,或者指定搜索引擎只收錄指定的內(nèi)容。

            當(dāng)一個搜索機(jī)器人(有的叫搜索蜘蛛)訪問一個站點(diǎn)時(shí),它會首先檢查該站點(diǎn)根目錄下是否存在robots.txt,如果存在,搜索機(jī)器人就會按照該文件中的內(nèi)容來確定訪問的范圍;如果該文件不存在,那么搜索機(jī)器人就沿著鏈接抓取。

            另外,robots.txt必須放置在一個站點(diǎn)的根目錄下,而且文件名必須全部小寫。

            2. 有些類型的網(wǎng)頁難以爬取。例如,使用javascript調(diào)用的頁面、需要注冊才能訪問的頁面等。

            網(wǎng)絡(luò)爬蟲的相關(guān)研究工作

            有些類型的網(wǎng)頁難以爬取。例如,使用javascript調(diào)用的頁面、需要注冊才能訪問的頁面等,對于這些網(wǎng)絡(luò)的爬取被歸結(jié)為深層網(wǎng)絡(luò)的挖掘。這些網(wǎng)頁可歸結(jié)為如下幾類:(1)通過

            填寫表單形成對后臺再現(xiàn)數(shù)據(jù)庫查詢得到的動態(tài)頁面。(2)由于缺乏被指向的超鏈接而沒有被索引到的頁面。(3)需要注冊或其他限制訪問的頁面。(4)可訪問的非網(wǎng)頁文件。在曾偉輝等人的文章中,對這類問題進(jìn)行了綜述。在王映等人的文章中,提出了使用一個嵌入式的JavaScript引擎來進(jìn)行動態(tài)網(wǎng)頁采集的方法。

            1. 有些非靜態(tài)的Web2.0網(wǎng)站的內(nèi)容動態(tài)生成,數(shù)據(jù)量巨大,難以抓取,例如論壇等網(wǎng)站。在2008年SIGIR中,Yida Wang等提出了一種爬取論壇的爬取方法。

            2. 有些網(wǎng)站會限制網(wǎng)絡(luò)爬蟲的爬取,Analia G. Lourenco, Orlando O. Belo 在2006年提出來使用查詢?nèi)罩镜姆椒ㄏ拗凭W(wǎng)絡(luò)爬蟲的活動以減輕服務(wù)器壓力。

            3. 網(wǎng)絡(luò)上的網(wǎng)頁數(shù)量太大,在爬取時(shí)需要考慮爬取的時(shí)間及效率等問題,UCLA的Junghoo Cho等提出了使用并行的crawler的方法。

            4.

            久久久无码精品亚洲日韩按摩| 国产69精品久久久久99| 国产高潮国产高潮久久久91 | 久久精品欧美日韩精品| 综合人妻久久一区二区精品| 久久久无码精品亚洲日韩京东传媒| 一97日本道伊人久久综合影院| 久久久噜噜噜久久| 亚洲精品tv久久久久| 欧美亚洲国产精品久久| 亚洲欧美伊人久久综合一区二区| 久久久久久久久久久精品尤物| 久久久一本精品99久久精品88| 久久久精品久久久久影院| 久久精品国产亚洲AV蜜臀色欲| 中文字幕久久波多野结衣av| 国内精品九九久久久精品| 国产成人久久精品二区三区| 亚洲国产成人精品91久久久| 久久精品日日躁夜夜躁欧美| 国产精品久久久久久福利69堂| 国产精品欧美亚洲韩国日本久久| 久久夜色精品国产www| 亚洲va中文字幕无码久久不卡| 国产精品久久久久9999高清| 亚洲天堂久久久| 久久国产精品99精品国产987| 久久亚洲精品无码观看不卡| 欧美一区二区三区久久综合| 久久久久亚洲AV无码专区网站| 一本色道久久综合亚洲精品| 久久精品国产久精国产| 亚洲精品NV久久久久久久久久| 国产成人久久精品区一区二区| 亚洲国产精品无码久久青草| 99久久这里只有精品| 久久综合久久美利坚合众国| 久久亚洲欧美日本精品| 99蜜桃臀久久久欧美精品网站| 99久久人人爽亚洲精品美女| 亚洲狠狠婷婷综合久久久久|