王璇,霍義霞,慈云飛,史國振,李莉
(1. 北京電子科技學(xué)院信息安全系,北京 100070;2. 西安電子科技大學(xué)計(jì)算機(jī)學(xué)院,陜西 西安 710000)
Larbin體系結(jié)構(gòu)的研究與優(yōu)化
王璇1,2,霍義霞1,慈云飛1,史國振1,李莉1,2
(1. 北京電子科技學(xué)院信息安全系,北京 100070;2. 西安電子科技大學(xué)計(jì)算機(jī)學(xué)院,陜西 西安 710000)
網(wǎng)絡(luò)爬蟲是搜索引擎的重要組成部分,其性能直接影響搜索引擎的準(zhǔn)確性和及時(shí)性。Larbin是一個(gè)高效、簡單、功能比較完善的開源爬蟲框架,基于此,介紹了幾種典型的開源爬蟲框架,并對(duì)其進(jìn)行多維度比較;對(duì)Larbin體系結(jié)構(gòu)進(jìn)行詳細(xì)的介紹;然后指出Larbin在程序結(jié)構(gòu)和流程方面存在的不足,提出對(duì)應(yīng)的優(yōu)化方案;測試結(jié)果表明,改進(jìn)后的方案在速度和性能方面都有所提高。
搜索引擎;網(wǎng)絡(luò)爬蟲;Larbin;開源;優(yōu)化
Larbin是一個(gè)高效、簡單、功能多樣化的開源的網(wǎng)絡(luò)爬蟲框架,擁有完整的體系結(jié)構(gòu)和功能設(shè)計(jì),適合在此基礎(chǔ)上進(jìn)行二次開發(fā)。雖然Larbin的創(chuàng)始人在2003年就停止對(duì)其維護(hù)和升級(jí)。但是,目前仍有大量的人在研究和使用它。例如,文獻(xiàn)[4]為滿足抓取微博的需求,在Larbin的基礎(chǔ)上提出動(dòng)態(tài)爬取、定時(shí)采集和代理采集的方案。文獻(xiàn)[5]改進(jìn)了Larbin中URL去重算法,使URL的沖突率由原來的10%降低到0.82%。為滿足抓取企業(yè)內(nèi)網(wǎng)的需求,文獻(xiàn)[6]對(duì)Larbin進(jìn)行功能擴(kuò)展,實(shí)現(xiàn)了站點(diǎn)自動(dòng)登錄、保存網(wǎng)頁、過濾無效URL以及網(wǎng)頁消噪的功能。文獻(xiàn)[7]對(duì)Larbin進(jìn)行主題化改進(jìn),使其成為主題爬蟲框架TLarbin。
本節(jié)首先介紹了幾種社區(qū)活躍度較高的網(wǎng)絡(luò)爬蟲框架,并針對(duì)它們的特點(diǎn)進(jìn)行多維對(duì)比。Larbin是活躍度較高的開源爬蟲框架之一,在研究Larbin的基礎(chǔ)上,將對(duì)其體系結(jié)構(gòu)進(jìn)行詳細(xì)的介紹。
2.1 開源爬蟲框架比較
目前開源的網(wǎng)絡(luò)爬蟲框架比較成熟,在商業(yè)上取得較廣泛的應(yīng)用。其中,社區(qū)活躍程度較高的有Larbin、Nutch、Heritrix、Scrapy、Pholcus、Snoopy等。下面對(duì)Larbin、Nutch、Heritrix、Scrapy這4種常用的爬蟲框架進(jìn)行比較。
Nutch是基于Lucene的Apache的子項(xiàng)目[8],使用Java語言開發(fā),基于Hadoop的分布式處理,用戶可以方便地根據(jù)自己的需求進(jìn)行定制。Larbin 是一種C++的開源爬蟲,有其獨(dú)特的亮點(diǎn)和作用,其高效性和高度可配置性為想用C++研究爬蟲的人們提供了很好的平臺(tái)[9]。Heritrix是SourceForge上基于Java的開源爬蟲,提供友好的Web界面、高度可擴(kuò)展性,深受搜索引擎研究者的青睞[10]。Scrapy是用Python開發(fā)的一個(gè)開源Web爬蟲框架,用于快速抓取Web站點(diǎn)并從頁面中高效提取結(jié)構(gòu)化的數(shù)據(jù),但是其通用性差[11]。開源爬蟲框架對(duì)比如表1所示。
從表1可以得出:1) 同一時(shí)間打開多個(gè)連接,使Larbin相對(duì)其他爬蟲框架在速度上具有明顯的優(yōu)勢[12],但是不支持分布式;2) 可以對(duì)網(wǎng)頁進(jìn)行鏡像保存,作為搜索引擎的數(shù)據(jù)來源;3) 具有高度可配置性??傊琇arbin是一個(gè)小型的爬蟲框架,其針對(duì)小型爬蟲具有良好的工作效率,不適合大型分布式抓取。
2.2 Larbin的設(shè)計(jì)結(jié)構(gòu)
Larbin符合主流網(wǎng)絡(luò)爬蟲的設(shè)計(jì)思路,擁有完整的體系結(jié)構(gòu)和功能設(shè)計(jì)。Larbin采用模塊化的程序設(shè)計(jì),各功能模塊劃分清晰,流程如圖1所示。根據(jù)圖1,Larbin可分為以下幾個(gè)模塊:內(nèi)存隊(duì)列模塊、DNS解析模塊、連接處理模塊、解析robots文件、HTML文件處理模塊、URL處理模塊。下面根據(jù)一個(gè)URL抓取網(wǎng)頁的過程介紹各模塊間的銜接關(guān)系。
Step1 種子鏈接。從圖1可以看出,Larbin中種子鏈接有3個(gè)來源:配置文件、控制臺(tái)、解析網(wǎng)頁獲得的子鏈接,作為種子URL在Larbin中的流向基本相同。根據(jù)優(yōu)先級(jí)將其存儲(chǔ)到硬盤或內(nèi)存隊(duì)列(URL庫),等待下一步處理。
Step2 從庫中獲取URL。從URL庫獲取一個(gè)或者多個(gè)URL,然后按照一定策略將其放入對(duì)應(yīng)站點(diǎn)。
Step3 DNS解析。在抓取之前需要進(jìn)行DNS解析獲取IP地址。Larbin利用ADNS進(jìn)行批量域名解析,以此提高效率,即對(duì)于一個(gè)站點(diǎn)只進(jìn)行一次DNS解析。獲取該站點(diǎn)下的robots文件,查看該站點(diǎn)下的抓取限制。
Step4 網(wǎng)頁抓取。發(fā)起連接,檢查robots文件,確保該站點(diǎn)可以抓??;對(duì)服務(wù)器發(fā)起請(qǐng)求報(bào)文,服務(wù)器返回應(yīng)答報(bào)文。
Step5 解析robots文件和HTML文件。獲取禁止抓取的URL列表;進(jìn)行子鏈接提取。
表1 開源爬蟲框架對(duì)比
圖1 Larbin整體流程
Step6 對(duì)上一步獲取的URL進(jìn)行深度判斷和排重處理。然后將合格的URL存入到URL庫中。
至此,一個(gè)URL的網(wǎng)頁獲取流程結(jié)束。
基于以上的介紹可以發(fā)現(xiàn),Larbin符合主流網(wǎng)絡(luò)爬蟲的設(shè)計(jì)思路,采用單線程非阻塞模式,對(duì)于單一站點(diǎn)的爬取在速度上具有明顯的優(yōu)勢。但是,Larbin在數(shù)據(jù)結(jié)構(gòu)和程序流程方面也有其不足之處,包括:數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)不合理,造成fifo隊(duì)列滿以及爬取速率下降等問題;程序流程設(shè)計(jì)不合理,造成由于網(wǎng)絡(luò)原因而導(dǎo)致的URL丟棄。另外,目前Larbin只能抓取網(wǎng)頁,不提供網(wǎng)頁解析、內(nèi)容存儲(chǔ)及索引服務(wù),在此提供一種思路:Larbin連接外部數(shù)據(jù)庫并建立索引。
本節(jié)針對(duì)Larbin的不足提出對(duì)應(yīng)的改進(jìn)方案,其中包括:修復(fù)站點(diǎn)隊(duì)列滿的問題;優(yōu)化速度下降問題;鏈接抓取失敗后采用重試方案;提出實(shí)現(xiàn)網(wǎng)頁解析、內(nèi)容存儲(chǔ)、索引服務(wù)的思路。
3.1 數(shù)據(jù)結(jié)構(gòu)優(yōu)化
Larbin的目標(biāo)是對(duì)網(wǎng)頁上的URL進(jìn)行擴(kuò)展性的抓取,為搜索引擎提供廣泛的數(shù)據(jù)來源。但是隨著系統(tǒng)的運(yùn)行,出現(xiàn)網(wǎng)頁獲取速度下降的現(xiàn)象。這是因?yàn)閺囊粋€(gè)網(wǎng)頁中抽取的子鏈接被批量放入內(nèi)存或者硬盤隊(duì)列。Larbin批量讀取這些子鏈接再次進(jìn)行網(wǎng)頁抓取時(shí),它們之間的多樣性越來越差,造成速度下降。因此,提出如下解決方案。
Step1 解決速度下降問題最直接的方法是打亂URL庫中鏈接的排序,在這里修改對(duì)硬盤和內(nèi)存隊(duì)列的調(diào)度時(shí)間間隔,達(dá)到間接打亂順序的需求。
Step2 根據(jù)系統(tǒng)運(yùn)行內(nèi)存大小,適當(dāng)?shù)卦黾觤axUrlsBySite的值,即每個(gè)站點(diǎn)中可以存儲(chǔ)的URL最大數(shù),本文修改為10 000。
Step3 waitDuration是同一個(gè)網(wǎng)站送出2次請(qǐng)求之間等待的時(shí)間,當(dāng)對(duì)多個(gè)網(wǎng)站進(jìn)行抓取時(shí),適當(dāng)減小其值,可以提高抓取速度,本文設(shè)置為30。
3.2 程序流程優(yōu)化
流程優(yōu)化1 優(yōu)化站點(diǎn)隊(duì)列的操作流程Larbin可能提示隊(duì)列滿的錯(cuò)誤,提示如下。Larbin: site.cc:97: void NamedSite::putInFifo(url*):Assertion`inFifo! =outFifo' failed。
出現(xiàn)這種錯(cuò)誤是因?yàn)長arbin對(duì)限定值設(shè)定不當(dāng):Larbin源碼中l(wèi)imit設(shè)定為1,maxUrlsBySite設(shè)置為40。假設(shè)當(dāng)前站點(diǎn)中鏈接數(shù)量nburls=39,由于nburls > maxUrlsBySite-limit不成立,當(dāng)前URL放入fifo隊(duì)列,從而導(dǎo)致fifo隊(duì)列滿。
設(shè)置一個(gè)全局變量控制是否從庫中獲取URL。當(dāng)站點(diǎn)中的鏈接數(shù)量達(dá)到限定值后,控制隊(duì)列暫時(shí)不獲取URL,避免取出后再進(jìn)行回存,對(duì)系統(tǒng)性能產(chǎn)生影響。詳細(xì)方案如下。
Step1 首先改進(jìn)限定值設(shè)定:limit設(shè)置為大于1的數(shù)字。
Step2 設(shè)置一個(gè)全局變量isGet_que,初始值默認(rèn)設(shè)為true,表示所有站點(diǎn)URL數(shù)量均未達(dá)到限定值,可以繼續(xù)從庫中獲取一個(gè)URL。
Step3 當(dāng)某個(gè)站點(diǎn)隊(duì)列中的URL數(shù)量達(dá)到限定值時(shí),isGet_que置為false,表示不再從URL庫中取URL。
Step4 再次取URL時(shí),首先判斷isGet_que的狀態(tài),決定是否從庫中獲取URL。
優(yōu)化后偽代碼如下。
/*初始化 isGet_que隊(duì)列*/
初始化為true,表示可以從URL庫中取URL;/*判斷 isGet_que隊(duì)列的狀態(tài)*/
static bool canGetUrl () {
判斷該站點(diǎn)下URL是否達(dá)到限定值
達(dá)到限定值,提示暫時(shí)不獲得URL;
未達(dá)到限定值,從URL庫中獲取URL并加入到namedSiteList;
}
/*將URL放入fifo隊(duì)列,更新isGet_que 狀態(tài)*/ void NamedSite::putGenericUrl(url *u) {
nburls++;
判斷該站點(diǎn)下URL是否達(dá)到限定值
如果達(dá)到限定值,isGet_que置為false;
如果沒有達(dá)到,isGet_que置為true;
…
}
/*從fifo中取出一個(gè)URL,更新 isGet_que*/
inline url *IPSite::getUrl () {
從fifo中獲取URL;
Nburls--;
判斷該站點(diǎn)下URL是否達(dá)到限定值
如果達(dá)到限定值,isGet_que置為false;
如果沒有達(dá)到,isGet_que置為true;
…
}
優(yōu)化前后流程對(duì)比如圖2所示。
圖2 站點(diǎn)隊(duì)列操作流程對(duì)比
流程優(yōu)化2 鏈接抓取失敗后采用重試方案
在Larbin中,當(dāng)DNS解析失敗、無連接以及robots文件禁止時(shí),則調(diào)用forgetUrl()進(jìn)行URL忽略操作,即從隊(duì)列中直接刪除。但在正常的抓取過程中,可能由于網(wǎng)絡(luò)不穩(wěn)定、帶寬有限、網(wǎng)站臨時(shí)關(guān)閉等原因造成socket連接不成功、DNS解析中斷或失?。╮obots文件禁止抓取的鏈接在此不做優(yōu)化)。當(dāng)出現(xiàn)此問題時(shí),不會(huì)直接將這條URL刪除,而是將其重新放回站點(diǎn)隊(duì)尾,等待下次抓取,改進(jìn)方案設(shè)計(jì)如下。
Step1 當(dāng)一個(gè)URL的DNS狀態(tài)為解析失敗或者無連接狀態(tài)時(shí),將當(dāng)前URL重新放入namedSiteList隊(duì)尾,并設(shè)置為等待DNS解析狀態(tài),默認(rèn)最多重試3次。
Step2 設(shè)置一個(gè)全局變量reconn為3,每次抓取失敗重試后,更新reconn的值。
優(yōu)化后偽代碼大致如下。
int reconn =3;//每個(gè)URL增加一個(gè)屬性參數(shù),表示可以重試的次數(shù)
void failure (url *u, FetchError reason) {
if(u->reconn>0){
DNS置為等待解析狀態(tài)
將u重新加入到namedSiteList;
//重試次數(shù)減1
}
優(yōu)化前、后流程對(duì)比如圖3所示。
流程優(yōu)化3 網(wǎng)頁解析、內(nèi)容存儲(chǔ)、索引服務(wù)的基本思路
圖3 優(yōu)化前后流程
Larbin只負(fù)責(zé)抓取網(wǎng)頁,從網(wǎng)頁中提取出子鏈接,加入到URL庫進(jìn)行下一步的擴(kuò)展性抓取。但是不負(fù)責(zé)網(wǎng)頁內(nèi)容的解析、提取內(nèi)容的存儲(chǔ)以及建立索引等操作[13]。在此提出實(shí)現(xiàn)以上功能的基本思路,設(shè)計(jì)結(jié)構(gòu)如圖4所示。
圖4 功能實(shí)現(xiàn)基本流程
1) 網(wǎng)頁解析。Larbin將抓取的網(wǎng)頁保存到本地,可以對(duì)本地的網(wǎng)頁文件進(jìn)行頁面內(nèi)容解析,按相關(guān)規(guī)則提取符合要求的目標(biāo)數(shù)據(jù)。這樣既保證網(wǎng)頁解析的速度,同時(shí)也不會(huì)影響Larbin繼續(xù)抓取網(wǎng)頁的速度。目前主流的網(wǎng)頁解析工具如表2所示。
表2 網(wǎng)頁解析工具
2) 信息存儲(chǔ)。將解析分類后的目標(biāo)數(shù)據(jù)存入本地?cái)?shù)據(jù)庫,目標(biāo)數(shù)據(jù)包括標(biāo)題、正文、時(shí)間、正文圖片、點(diǎn)擊率、評(píng)論數(shù)、文章摘要等內(nèi)容。Larbin對(duì)接的外部數(shù)據(jù)庫可以是mysql傳統(tǒng)數(shù)據(jù)庫,也可以是redis等非關(guān)系型數(shù)據(jù)庫。
3) 索引服務(wù)。將獲得的目標(biāo)數(shù)據(jù)傳送到非結(jié)構(gòu)化信息搜索引擎,通過建立硬盤索引,實(shí)現(xiàn)對(duì)數(shù)據(jù)信息的快速索引。
通過搭建環(huán)境,在單機(jī)環(huán)境下對(duì)優(yōu)化后的爬蟲系統(tǒng)進(jìn)行測試,通過與原系統(tǒng)的抓取能力進(jìn)行對(duì)比,驗(yàn)證本文優(yōu)化方案設(shè)計(jì)的高效性和合理性。本文基于CentOS6.5平臺(tái)對(duì)優(yōu)化前和優(yōu)化后的Larbin進(jìn)行測試,限定到20個(gè)網(wǎng)站,運(yùn)行12 h。
實(shí)驗(yàn)結(jié)果1 工作效率對(duì)比
工作效率的對(duì)比是指優(yōu)化代碼前后,抓取網(wǎng)頁數(shù)量和子鏈接數(shù)量的對(duì)比,由于Larbin自身并沒有提取內(nèi)容的功能,所以在此不涉及抓取內(nèi)容量對(duì)比。由圖5可知,優(yōu)化后的系統(tǒng)在網(wǎng)頁抓取和子鏈接獲取方面更高效。12 h之內(nèi),優(yōu)化前后抓取的網(wǎng)頁數(shù)量大約分別是80萬條和110萬條,效率平均提高約35%;從網(wǎng)頁中解析的子鏈接數(shù)量大約分別是950萬條和1 200萬條,效率平均提高約20%;另外,6 h以內(nèi)的子鏈接數(shù)量優(yōu)化前后基本相等,6 h后,本文方法的子鏈接數(shù)量相對(duì)優(yōu)化前有了較大提升,從而速度下降問題得到緩解。
圖5 網(wǎng)頁和子鏈接獲取速度對(duì)比
實(shí)驗(yàn)結(jié)果2 性能對(duì)比
進(jìn)行網(wǎng)頁抓取的URL有3個(gè)狀態(tài):成功、robots禁止、DNS解析失敗。通過對(duì)比優(yōu)化前后URL狀態(tài)分布情況,驗(yàn)證抓取失敗進(jìn)行重試操作對(duì)成功率的影響。由于網(wǎng)絡(luò)狀態(tài)將對(duì)網(wǎng)絡(luò)爬蟲產(chǎn)生一定的影響,測試當(dāng)前網(wǎng)絡(luò)的分組丟失率達(dá)到1%,優(yōu)化前通過查看Webserver的統(tǒng)計(jì)結(jié)果,超時(shí)、DNS解析失敗等原因?qū)е碌淖渔溄荧@取失敗約占2.3%,如圖6(a)所示。采取失敗重試后,子鏈接失敗率降低到1.0%,如圖6(b)所示。
圖6 子鏈接狀態(tài)分布情況對(duì)比圖
Larbin作為一個(gè)開源的網(wǎng)絡(luò)爬蟲框架,給搜索引擎提供了豐富的數(shù)據(jù)來源。該框架適合進(jìn)行二次開發(fā),使用者可以根據(jù)自己的需求制定自己的Larbin爬蟲。本文對(duì)Larbin的體系結(jié)構(gòu)進(jìn)行了介紹,并針對(duì)其在數(shù)據(jù)結(jié)構(gòu)和流程方面的不足提出了優(yōu)化方案。實(shí)驗(yàn)測試證明,該優(yōu)化方案可行有效,使Larbin的程序邏輯更加合理并能夠更加高效地抓取網(wǎng)絡(luò)數(shù)據(jù)。
[1] BRIN S, PAGE L. Reprint of: the anatomy of a large-scale hypertextual Web search engine[J]. Computer Networks, 2012, 56(18):3825-3833.
[2] 孫駿雄. 基于網(wǎng)絡(luò)爬蟲的網(wǎng)站信息采集技術(shù)研究[D]. 大連: 大連海事大學(xué), 2014. SUN J X. The study on technology of website information collection based on Web crawler[D]. Dalian: Dalian Maritime University,2014.
[3] 呂陽. 分布式網(wǎng)絡(luò)爬蟲系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[D]. 成都: 電子科技大學(xué), 2013. LV Y. Distributed Web crawler system design and implementation[D]. Chengdu: University of Electronic Science and Technology of China, 2013.
[4] 單月光. 基于微博的網(wǎng)絡(luò)輿情關(guān)鍵技術(shù)的研究與實(shí)現(xiàn)[D]. 成都:電子科技大學(xué), 2013. SHAN Y G. The research and implementation of network public opinion's key techniques based on microblog[D]. Chengdu: University of Electronic Science and Technology of China, 2013.
[5] 李躍健, 朱程榮. 基于Larbin的網(wǎng)絡(luò)爬蟲體系結(jié)構(gòu)的研究與改進(jìn)[J]. 計(jì)算機(jī)技術(shù)與發(fā)展, 2012, 22(7): 147-150. LI Y J, ZHU C R. Study and improvement on system architectures of Larbin Web cawler [J]. Computer Technology and Development,2012, 22(7): 147-150.
[6] 羅浩. 基于CLucene和Larbin的企業(yè)搜索引擎的研究與實(shí)現(xiàn)[D].成都: 電子科技大學(xué), 2010. LUO H . The research and implementation of enterprise search engine based on CLucene and Larbin [D].Chengdu: University of Electronic Science and Technology of China, 2010.
[7] 杜一平. 主題搜索網(wǎng)絡(luò)爬蟲的設(shè)計(jì)與研究[D]. 合肥: 中國科學(xué)技術(shù)大學(xué), 2009. DU Y P. Design and implementation of topical search engine Web crawler [D]. Hefei: University of Electronic Science and Technology of China, 2009.
[8] CAFARELLA M, CUTTING D. Building nutch: open source search.[J]. Queue, 2004, 2(2): 54-61.
[9] 敖東陽, 劉好杰. Larbin分析與Windows平臺(tái)下移植[J]. 智能計(jì)算機(jī)與應(yīng)用, 2009(4): 23-24. AO D Y, LIU H J. Analysis of Larbin and transplantation to Windows system [J]. Computer Study, 2009(4): 23-24.
[10] 張敏, 孫敏. 基于Heritrix限定爬蟲的設(shè)計(jì)與實(shí)現(xiàn)[J]. 計(jì)算機(jī)應(yīng)用與軟件, 2013, 30(4): 33-35. ZHANG M, SUN M. Design and implementation of qualified spider based on Heritrix [J]. Computer Applications and Software,2013, 30(4): 33-35.
[11] 趙本本, 殷旭東, 王偉. 基于Scrapy的GitHub數(shù)據(jù)爬蟲[J]. 電子技術(shù)與軟件工程, 2016(6):199-202. ZHAO B B, YIN X D, WANG W . GitHub Web crawler based on Scrapy[J]. Journal of Electronic Technology And Software Engineering, 2016(6): 199-202.
[12] KARKI R, GENNERT M A. Fresh analysis of streaming media stored on the Web [J]. 2011.
[13] TONG W, XIE X Y. A research on a defending policy against the WebCrawler's attack[C]//International Conference on Anti-Counterfeiting, Security, and Identification in Communication. c2009:363-366.
王璇(1991-),女,山東菏澤人,西安電子科技大學(xué)碩士生,主要研究方向?yàn)槎嗪苏{(diào)度。
霍義霞(1991-),女,河北廊坊人,北京電子科技學(xué)院碩士生,主要研究方向?yàn)榫W(wǎng)絡(luò)安全。
慈云飛(1989-),男,安徽池州人,北京電子科技學(xué)院碩士生,主要研究方向?yàn)樵L問控制和信息安全。
史國振(1974-),男,河南濟(jì)源人,博士,北京電子科技學(xué)院副教授、碩士生導(dǎo)師,主要研究方向?yàn)榫W(wǎng)絡(luò)與系統(tǒng)安全、嵌入式安全。
李莉(1974-),女,山東青島人,西安電子科技大學(xué)博士生,北京電子科技學(xué)院副教授、碩士生導(dǎo)師,主要研究方向?yàn)榫W(wǎng)絡(luò)與系統(tǒng)安全、嵌入式系統(tǒng)安全應(yīng)用。
Study and optimization on system architectures of Larbin
WANG Xuan1,2, HUO Yi-xia1, CI Yun-fei1, SHI Guo-zhen1, LI Li1,2
(1. School of Information Security, Beijing Electronic Science and Technology Institute, Beijing 100070, China;2. School of Computer, Xidian University, Xi'an 710000, China)
Web crawler is an important part of the search engine, its performance will directly affect the accuracy and timeliness of the search engine. Larbin is an efficient and simple open source crawler with relatively perfect in functions. Several typical open-source crawler were firstly introduced and a multi-dimensional comparison was made among them. Then, the system architecture and working mechanism of Larbin were given in detail. Its shortcomings in the program structure and process were pointed out, and improved programs were proposed. Experimental results show that improved program is better in speed and performance.
search engine, Web crawler, Larbin, open source, optimization
隨著信息技術(shù)和網(wǎng)絡(luò)技術(shù)的高速發(fā)展,互聯(lián)網(wǎng)信息規(guī)模呈爆炸式增長,內(nèi)容呈現(xiàn)雜亂無章,其中包括文本、視頻、音頻、圖片等非結(jié)構(gòu)化數(shù)據(jù)。為了使用戶方便快捷地獲取各種各樣的目標(biāo)信息,搜索引擎[1]應(yīng)運(yùn)而生。數(shù)據(jù)收集,即如何獲取互聯(lián)網(wǎng)數(shù)量龐大的信息是搜索引擎的技術(shù)基礎(chǔ)。目前網(wǎng)絡(luò)爬蟲是公認(rèn)的完成網(wǎng)絡(luò)信息自動(dòng)采集任務(wù)最有效的工具,其本質(zhì)是一種按照特定的搜索策略和算法自動(dòng)抓取互聯(lián)網(wǎng)信息的程序[2]。網(wǎng)絡(luò)爬蟲的性能將直接影響搜索引擎查找信息的及時(shí)性和準(zhǔn)確性[3]。
s: The National Key Research Program of China (No.2016YFB0800304), The Natural Science Foundationof Beijing (No.4152048), The Natural Science Foundation of Jiangsu Province (No.BK20150787), 2016 Spring Buds Project of Beijing Electronic Science & Technology Institute (No.2016CL04)
TP393
A
10.11959/j.issn.2096-109x.2016.00076
2016-05-12;
2016-08-02。通信作者:李莉,lili103@besti.edu.cn
國家重點(diǎn)研發(fā)計(jì)劃基金資助項(xiàng)目(No.2016YFB0800304);北京市自然科學(xué)基金資助項(xiàng)目(No.4152048);江蘇省自然科學(xué)基金資助項(xiàng)目(No.BK20150787);北京電子科技學(xué)院2016年春蕾計(jì)劃基金資助項(xiàng)目(No.2016CL04)