目錄
3.爬蟲身份識別
4.用戶爬蟲的例子
4.1 開源爬蟲
網(wǎng)絡(luò)爬蟲的組成
控制器
解析器
資源庫
3.爬蟲身份識別
網(wǎng)絡(luò)爬蟲通過使用http請求的用戶代理(User Agent)字段來向網(wǎng)絡(luò)服務(wù)器表明他們的身份。網(wǎng)絡(luò)管理員則通過檢查網(wǎng)絡(luò)服務(wù)器的日志,使用用戶代理字段來辨認(rèn)哪一個爬蟲曾經(jīng)訪問過以及它訪問的頻率。用戶代理字段可能會包含一個可以讓管理員獲取爬蟲更多信息的URL。郵件抓取器和其他懷有惡意的網(wǎng)絡(luò)爬蟲通常不會留任何的用戶代理字段內(nèi)容,或者他們也會將他們的身份偽裝成瀏覽器或者其他的知名爬蟲。
對于網(wǎng)路爬蟲,留下用戶標(biāo)志信息是十分重要的;這樣,網(wǎng)絡(luò)管理員在需要的時候就可以聯(lián)系爬蟲的主人。有時,爬蟲可能會陷入爬蟲陷阱或者使一個服務(wù)器超負(fù)荷,這時,爬蟲主人需要使爬蟲停止。對那些有興趣了解特定爬蟲訪問時間網(wǎng)絡(luò)管理員來講,用戶標(biāo)識信息是十分重要的。
4.用戶爬蟲的例子
以下是一系列已經(jīng)發(fā)布的一般用途的網(wǎng)絡(luò)爬蟲(除了主題檢索的爬蟲)的體系結(jié)構(gòu),包括了對不同組件命名和突出特點的簡短的描述。
RBSE(Eichmann,1994)是第一個發(fā)布的爬蟲。它有兩個基礎(chǔ)程序。第一個是“spider”,抓取隊列中的內(nèi)容到一個關(guān)系數(shù)據(jù)庫中,第二個程序是“mite”,是一個修改后的www的ASCII瀏覽器,負(fù)責(zé)從網(wǎng)絡(luò)上下載頁面。
WebCrawler(Pinkerton,1994)是第一個公開可用的,用來建立全文索引的一個子程序,他使用庫www來下載頁面;另外一個程序使用廣度優(yōu)先來解析獲取URL并對其排序;它還包括一個根據(jù)選定文本和查詢相似程度爬行的實時爬蟲。
World Wide Web Worm(McBryan,1994)是一個用來為文件建立包括標(biāo)題和URL簡單索引的爬蟲。索引可以通過grep式的Unix命令來搜索。
Google Crawler(Brin and Page,1998)用了一些細(xì)節(jié)來描述,但是這些細(xì)節(jié)僅僅是關(guān)于使用C++和Python編寫的、一個早期版本的體系結(jié)構(gòu)。因為文本解析就是全文檢索和URL抽取的過程,所以爬蟲集成了索引處理。這里擁有一個URL服務(wù)器,用來給幾個爬蟲程序發(fā)送要抓取的URL列表。在文本解析的時候,新發(fā)現(xiàn)的URL傳送給URL服務(wù)器并檢測這個URL是不是已經(jīng)存在,如果不存在的話,該URL就加入到URL服務(wù)器中。
CobWeb(da Silva et al.,1999)使用了一個中央“調(diào)度者”和一系列的“分布式的搜集者”。搜集者解析下載的頁面并把找到的URL發(fā)送給調(diào)度者,然后調(diào)度者反過來分配給搜集者。調(diào)度者使用深度優(yōu)先策略,并且使用平衡禮貌策略來避免服務(wù)器超載。爬蟲是使用Perl語言編寫的。
Mercator(Heydon and Najork,1999;Najork and Heydon,2001)是一個分布式的,模塊化的使用java編寫的網(wǎng)絡(luò)爬蟲。它的模塊化源自于使用可互換的的“協(xié)議模塊”和“處理模塊”。協(xié)議模塊負(fù)責(zé)怎樣獲取網(wǎng)頁(例如使用HTTP),處理模塊負(fù)責(zé)怎樣處理頁面。標(biāo)準(zhǔn)處理模塊僅僅包括了解析頁面和抽取URL,其他處理模塊可以用來檢索文本頁面,或者搜集網(wǎng)絡(luò)數(shù)據(jù)。
WebFountain(Edwards et al.,2001)是一個與Mercator類似的分布式的模塊化的爬蟲,但是使用C++編寫的。它的特點是一個管理員機器控制一系列的螞蟻機器。經(jīng)過多次下載頁面后,頁面的變化率可以推測出來,這時,一個非線性的方法必須用于求解方程以獲得一個最大的新鮮度的訪問策略。作者推薦在早期檢索階段使用這個爬蟲,然后用統(tǒng)一策略檢索,就是所有的頁面都使用相同的頻率訪問。
PolyBot(Shkapenyuk and Suel,2002)是一個使用C++和Python編寫的分布式網(wǎng)絡(luò)爬蟲。它由一個爬蟲管理者,一個或多個下載者,一個或多個DNS解析者組成。抽取到的URL被添加到硬盤的一個隊列里面,然后使用批處理的模式處理這些URL。平衡禮貌方面考慮到了第二、三級網(wǎng)域,因為第三級網(wǎng)域通常也會保存在同一個網(wǎng)絡(luò)服務(wù)器上。
WebRACE(Zeinalipour-Yazti and Dikaiakos,2002)是一個使用java實現(xiàn)的,擁有檢索模塊和緩存模塊的爬蟲,它是一個很通用的稱作eRACE的系統(tǒng)的一部分。系統(tǒng)從用戶得到下載頁面的請求,爬蟲的行為有點像一個聰明的代理服務(wù)器。系統(tǒng)還監(jiān)視訂閱網(wǎng)頁的請求,當(dāng)網(wǎng)頁發(fā)生改變的時候,它必須使爬蟲下載更新這個頁面并且通知訂閱者。WebRACE最大的特色是,當(dāng)大多數(shù)的爬蟲都從一組URL開始的時候,WebRACE可以連續(xù)地的接收抓取開始的URL地址。
Ubicrawer(Boldi et al.,2004)是一個使用java編寫的分布式爬蟲。它沒有中央程序。它由一組完全相同的代理組成,分配功能通過主機前后一致的散列計算進行。這里沒有重復(fù)的頁面,除非爬蟲崩潰了(然后,另外一個代理就會接替崩潰的代理重新開始抓取)。爬蟲設(shè)計為高伸縮性和允許失敗的。
FAST Crawler(Risvik and Michelsen,2002)是一個分布式的爬蟲,在Fast Search&Transfer中使用,關(guān)于其體系結(jié)構(gòu)的一個大致的描述可以在[citation needed]找到。
Labrador,一個工作在開源項目Terrier?Search Engine上的非開源的爬蟲。
TeezirCrawler是一個非開源的可伸縮的網(wǎng)頁抓取器,在Teezir上使用。該程序被設(shè)計為一個完整的可以處理各種類型網(wǎng)頁的爬蟲,包括各種JavaScript和HTML文檔。爬蟲既支持主題檢索也支持非主題檢索。
Spinn3r,一個通過博客構(gòu)建反饋信息的爬蟲。Spinn3r是基于java的,它的大部分的體系結(jié)構(gòu)都是開源的。
HotCrawler,一個使用c語言和php編寫的爬蟲。
ViREL Microformats Crawler,搜索公眾信息作為嵌入到網(wǎng)頁的一小部分。
除了上面列出的幾個特定的爬蟲結(jié)構(gòu)以外,還有Cho(Cho and Garcia-Molina,2002)和Chakrabarti(Chakrabarti,2003)發(fā)布的一般的爬蟲體系結(jié)構(gòu)。
4.1 開源爬蟲
DataparkSearch是一個在GNU GPL許可下發(fā)布的爬蟲搜索引擎。
GNU Wget是一個在GPL許可下,使用C語言編寫的命令行式的爬蟲。它主要用于網(wǎng)絡(luò)服務(wù)器和FTP服務(wù)器的鏡像。
Heritrix是一個互聯(lián)網(wǎng)檔案館級的爬蟲,設(shè)計的目標(biāo)為對大型網(wǎng)絡(luò)的大部分內(nèi)容的定期存檔快照,是使用java編寫的。
Ht://Dig在它和索引引擎中包括了一個網(wǎng)頁爬蟲。
HTTrack用網(wǎng)絡(luò)爬蟲創(chuàng)建網(wǎng)絡(luò)站點鏡像,以便離線觀看。它使用C語言編寫,在GPL許可下發(fā)行。
ICDL Crawler是一個用C++編寫,跨平臺的網(wǎng)絡(luò)爬蟲。它僅僅使用空閑的CPU資源,在ICDL標(biāo)準(zhǔn)上抓取整個站點。
JSpider是一個在GPL許可下發(fā)行的,高度可配置的,可定制的網(wǎng)絡(luò)爬蟲引擎。
LLarbin由Sebastien Ailleret開發(fā);
Webtools4larbin由Andreas Beder開發(fā);
Methabot是一個使用C語言編寫的高速優(yōu)化的,使用命令行方式運行的,在2-clause BSD許可下發(fā)布的網(wǎng)頁檢索器。它的主要的特性是高可配置性,模塊化;它檢索的目標(biāo)可以是本地文件系統(tǒng),HTTP或者FTP。
Nutch是一個使用java編寫,在Apache許可下發(fā)行的爬蟲。它可以用來連接Lucene的全文檢索套件;
Pavuk是一個在GPL許可下發(fā)行的,使用命令行的WEB站點鏡像工具,可以選擇使用X11的圖形界面。與wget和httprack相比,他有一系列先進的特性,如以正則表達(dá)式為基礎(chǔ)的文件過濾規(guī)則和文件創(chuàng)建規(guī)則。
WebVac是斯坦福WebBase項目使用的一個爬蟲。
WebSPHINX(Miller and Bharat,1998)是一個由java類庫構(gòu)成的,基于文本的搜索引擎。它使用多線程進行網(wǎng)頁檢索,html解析,擁有一個圖形用戶界面用來設(shè)置開始的種子URL和抽取下載的數(shù)據(jù);
WIRE-網(wǎng)絡(luò)信息檢索環(huán)境(Baeza-Yates和Castillo,2002)是一個使用C++編寫,在GPL許可下發(fā)行的爬蟲,內(nèi)置了幾種頁面下載安排的策略,還有一個生成報告和統(tǒng)計資料的模塊,所以,它主要用于網(wǎng)絡(luò)特征的描述;
LWP:RobotUA(Langheinrich,2004)是一個在Perl5許可下發(fā)行的,可以優(yōu)異的完成并行任務(wù)的Perl類庫構(gòu)成的機器人。
Web Crawler是一個為.net準(zhǔn)備的開放源代碼的網(wǎng)絡(luò)檢索器(C#編寫)。
Sherlock Holmes收集和檢索本地和網(wǎng)絡(luò)上的文本類數(shù)據(jù)(文本文件,網(wǎng)頁),該項目由捷克門戶網(wǎng)站中樞(Czech web portal Centrum)贊助并且主用商用于這里;它同時也使用在。
YaCy是一個基于P2P網(wǎng)絡(luò)的免費的分布式搜索引擎(在GPL許可下發(fā)行);
Ruya是一個在廣度優(yōu)先方面表現(xiàn)優(yōu)秀,基于等級抓取的開放源代碼的網(wǎng)絡(luò)爬蟲。在英語和日語頁面的抓取表現(xiàn)良好,它在GPL許可下發(fā)行,并且完全使用Python編寫。按照robots.txt有一個延時的單網(wǎng)域延時爬蟲。
Universal Information Crawler快速發(fā)展的網(wǎng)絡(luò)爬蟲,用于檢索存儲和分析數(shù)據(jù);
Agent Kernel,當(dāng)一個爬蟲抓取時,用來進行安排,并發(fā)和存儲的java框架。
是一個使用C#編寫,需要SQL Server 2005支持的,在GPL許可下發(fā)行的多功能的開源的機器人。它可以用來下載,檢索,存儲包括電子郵件地址,文件,超鏈接,圖片和網(wǎng)頁在內(nèi)的各種數(shù)據(jù)。
Dine是一個多線程的java的http客戶端。它可以在LGPL許可下進行二次開發(fā)。
網(wǎng)絡(luò)爬蟲的組成
在網(wǎng)絡(luò)爬蟲的系統(tǒng)框架中,主過程由控制器,解析器,資源庫三部分組成??刂破鞯闹饕ぷ魇秦?fù)責(zé)給多線程中的各個爬蟲線程分配工作任務(wù)。解析器的主要工作是下載網(wǎng)頁,進行頁面的處理,主要是將一些JS腳本標(biāo)簽、CSS代碼內(nèi)容、空格字符、HTML標(biāo)簽等內(nèi)容處理掉,爬蟲的基本工作是由解析器完成。資源庫是用來存放下載到的網(wǎng)頁資源,一般都采用大型的數(shù)據(jù)庫存儲,如Oracle數(shù)據(jù)庫,并對其建立索引。
控制器
控制器是網(wǎng)絡(luò)爬蟲的中央控制器,它主要是負(fù)責(zé)根據(jù)系統(tǒng)傳過來的URL鏈接,分配一線程,然后啟動線程調(diào)用爬蟲爬取網(wǎng)頁的過程。
解析器
解析器是負(fù)責(zé)網(wǎng)絡(luò)爬蟲的主要部分,其負(fù)責(zé)的工作主要有:下載網(wǎng)頁的功能,對網(wǎng)頁的文本進行處理,如過濾功能,抽取特殊HTML標(biāo)簽的功能,分析數(shù)據(jù)功能。文章來源:http://www.zghlxwxcb.cn/news/detail-839964.html
資源庫
主要是用來存儲網(wǎng)頁中下載下來的數(shù)據(jù)記錄的容器,并提供生成索引的目標(biāo)源。中大型的數(shù)據(jù)庫產(chǎn)品有:Oracle、Sql Server等。文章來源地址http://www.zghlxwxcb.cn/news/detail-839964.html
到了這里,關(guān)于數(shù)據(jù)界的達(dá)克摩斯之劍----深入淺出帶你理解網(wǎng)絡(luò)爬蟲(Forth)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!