999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

Larbin體系結構的研究與優化

2016-11-07 09:44:20王璇霍義霞慈云飛史國振李莉
網絡與信息安全學報 2016年8期
關鍵詞:優化

王璇,霍義霞,慈云飛,史國振,李莉

(1. 北京電子科技學院信息安全系,北京 100070;2. 西安電子科技大學計算機學院,陜西 西安 710000)

Larbin體系結構的研究與優化

王璇1,2,霍義霞1,慈云飛1,史國振1,李莉1,2

(1. 北京電子科技學院信息安全系,北京 100070;2. 西安電子科技大學計算機學院,陜西 西安 710000)

網絡爬蟲是搜索引擎的重要組成部分,其性能直接影響搜索引擎的準確性和及時性。Larbin是一個高效、簡單、功能比較完善的開源爬蟲框架,基于此,介紹了幾種典型的開源爬蟲框架,并對其進行多維度比較;對Larbin體系結構進行詳細的介紹;然后指出Larbin在程序結構和流程方面存在的不足,提出對應的優化方案;測試結果表明,改進后的方案在速度和性能方面都有所提高。

搜索引擎;網絡爬蟲;Larbin;開源;優化

Larbin是一個高效、簡單、功能多樣化的開源的網絡爬蟲框架,擁有完整的體系結構和功能設計,適合在此基礎上進行二次開發。雖然Larbin的創始人在2003年就停止對其維護和升級。但是,目前仍有大量的人在研究和使用它。例如,文獻[4]為滿足抓取微博的需求,在Larbin的基礎上提出動態爬取、定時采集和代理采集的方案。文獻[5]改進了Larbin中URL去重算法,使URL的沖突率由原來的10%降低到0.82%。為滿足抓取企業內網的需求,文獻[6]對Larbin進行功能擴展,實現了站點自動登錄、保存網頁、過濾無效URL以及網頁消噪的功能。文獻[7]對Larbin進行主題化改進,使其成為主題爬蟲框架TLarbin。

2 開源爬蟲框架

本節首先介紹了幾種社區活躍度較高的網絡爬蟲框架,并針對它們的特點進行多維對比。Larbin是活躍度較高的開源爬蟲框架之一,在研究Larbin的基礎上,將對其體系結構進行詳細的介紹。

2.1 開源爬蟲框架比較

目前開源的網絡爬蟲框架比較成熟,在商業上取得較廣泛的應用。其中,社區活躍程度較高的有Larbin、Nutch、Heritrix、Scrapy、Pholcus、Snoopy等。下面對Larbin、Nutch、Heritrix、Scrapy這4種常用的爬蟲框架進行比較。

Nutch是基于Lucene的Apache的子項目[8],使用Java語言開發,基于Hadoop的分布式處理,用戶可以方便地根據自己的需求進行定制。Larbin 是一種C++的開源爬蟲,有其獨特的亮點和作用,其高效性和高度可配置性為想用C++研究爬蟲的人們提供了很好的平臺[9]。Heritrix是SourceForge上基于Java的開源爬蟲,提供友好的Web界面、高度可擴展性,深受搜索引擎研究者的青睞[10]。Scrapy是用Python開發的一個開源Web爬蟲框架,用于快速抓取Web站點并從頁面中高效提取結構化的數據,但是其通用性差[11]。開源爬蟲框架對比如表1所示。

從表1可以得出:1) 同一時間打開多個連接,使Larbin相對其他爬蟲框架在速度上具有明顯的優勢[12],但是不支持分布式;2) 可以對網頁進行鏡像保存,作為搜索引擎的數據來源;3) 具有高度可配置性??傊?,Larbin是一個小型的爬蟲框架,其針對小型爬蟲具有良好的工作效率,不適合大型分布式抓取。

2.2 Larbin的設計結構

Larbin符合主流網絡爬蟲的設計思路,擁有完整的體系結構和功能設計。Larbin采用模塊化的程序設計,各功能模塊劃分清晰,流程如圖1所示。根據圖1,Larbin可分為以下幾個模塊:內存隊列模塊、DNS解析模塊、連接處理模塊、解析robots文件、HTML文件處理模塊、URL處理模塊。下面根據一個URL抓取網頁的過程介紹各模塊間的銜接關系。

Step1 種子鏈接。從圖1可以看出,Larbin中種子鏈接有3個來源:配置文件、控制臺、解析網頁獲得的子鏈接,作為種子URL在Larbin中的流向基本相同。根據優先級將其存儲到硬盤或內存隊列(URL庫),等待下一步處理。

Step2 從庫中獲取URL。從URL庫獲取一個或者多個URL,然后按照一定策略將其放入對應站點。

Step3 DNS解析。在抓取之前需要進行DNS解析獲取IP地址。Larbin利用ADNS進行批量域名解析,以此提高效率,即對于一個站點只進行一次DNS解析。獲取該站點下的robots文件,查看該站點下的抓取限制。

Step4 網頁抓取。發起連接,檢查robots文件,確保該站點可以抓取;對服務器發起請求報文,服務器返回應答報文。

Step5 解析robots文件和HTML文件。獲取禁止抓取的URL列表;進行子鏈接提取。

表1 開源爬蟲框架對比

圖1 Larbin整體流程

Step6 對上一步獲取的URL進行深度判斷和排重處理。然后將合格的URL存入到URL庫中。

至此,一個URL的網頁獲取流程結束。

基于以上的介紹可以發現,Larbin符合主流網絡爬蟲的設計思路,采用單線程非阻塞模式,對于單一站點的爬取在速度上具有明顯的優勢。但是,Larbin在數據結構和程序流程方面也有其不足之處,包括:數據結構設計不合理,造成fifo隊列滿以及爬取速率下降等問題;程序流程設計不合理,造成由于網絡原因而導致的URL丟棄。另外,目前Larbin只能抓取網頁,不提供網頁解析、內容存儲及索引服務,在此提供一種思路:Larbin連接外部數據庫并建立索引。

3 Larbin結構和流程優化

本節針對Larbin的不足提出對應的改進方案,其中包括:修復站點隊列滿的問題;優化速度下降問題;鏈接抓取失敗后采用重試方案;提出實現網頁解析、內容存儲、索引服務的思路。

3.1 數據結構優化

Larbin的目標是對網頁上的URL進行擴展性的抓取,為搜索引擎提供廣泛的數據來源。但是隨著系統的運行,出現網頁獲取速度下降的現象。這是因為從一個網頁中抽取的子鏈接被批量放入內存或者硬盤隊列。Larbin批量讀取這些子鏈接再次進行網頁抓取時,它們之間的多樣性越來越差,造成速度下降。因此,提出如下解決方案。

Step1 解決速度下降問題最直接的方法是打亂URL庫中鏈接的排序,在這里修改對硬盤和內存隊列的調度時間間隔,達到間接打亂順序的需求。

Step2 根據系統運行內存大小,適當地增加maxUrlsBySite的值,即每個站點中可以存儲的URL最大數,本文修改為10 000。

Step3 waitDuration是同一個網站送出2次請求之間等待的時間,當對多個網站進行抓取時,適當減小其值,可以提高抓取速度,本文設置為30。

3.2 程序流程優化

流程優化1 優化站點隊列的操作流程Larbin可能提示隊列滿的錯誤,提示如下。Larbin: site.cc:97: void NamedSite::putInFifo(url*):Assertion`inFifo! =outFifo' failed。

出現這種錯誤是因為Larbin對限定值設定不當:Larbin源碼中limit設定為1,maxUrlsBySite設置為40。假設當前站點中鏈接數量nburls=39,由于nburls > maxUrlsBySite-limit不成立,當前URL放入fifo隊列,從而導致fifo隊列滿。

設置一個全局變量控制是否從庫中獲取URL。當站點中的鏈接數量達到限定值后,控制隊列暫時不獲取URL,避免取出后再進行回存,對系統性能產生影響。詳細方案如下。

Step1 首先改進限定值設定:limit設置為大于1的數字。

Step2 設置一個全局變量isGet_que,初始值默認設為true,表示所有站點URL數量均未達到限定值,可以繼續從庫中獲取一個URL。

Step3 當某個站點隊列中的URL數量達到限定值時,isGet_que置為false,表示不再從URL庫中取URL。

Step4 再次取URL時,首先判斷isGet_que的狀態,決定是否從庫中獲取URL。

優化后偽代碼如下。

/*初始化 isGet_que隊列*/

初始化為true,表示可以從URL庫中取URL;/*判斷 isGet_que隊列的狀態*/

static bool canGetUrl () {

判斷該站點下URL是否達到限定值

達到限定值,提示暫時不獲得URL;

未達到限定值,從URL庫中獲取URL并加入到namedSiteList;

/*將URL放入fifo隊列,更新isGet_que 狀態*/ void NamedSite::putGenericUrl(url *u) {

nburls++;

判斷該站點下URL是否達到限定值

如果達到限定值,isGet_que置為false;

如果沒有達到,isGet_que置為true;

/*從fifo中取出一個URL,更新 isGet_que*/

inline url *IPSite::getUrl () {

從fifo中獲取URL;

Nburls--;

判斷該站點下URL是否達到限定值

如果達到限定值,isGet_que置為false;

如果沒有達到,isGet_que置為true;

優化前后流程對比如圖2所示。

圖2 站點隊列操作流程對比

流程優化2 鏈接抓取失敗后采用重試方案

在Larbin中,當DNS解析失敗、無連接以及robots文件禁止時,則調用forgetUrl()進行URL忽略操作,即從隊列中直接刪除。但在正常的抓取過程中,可能由于網絡不穩定、帶寬有限、網站臨時關閉等原因造成socket連接不成功、DNS解析中斷或失敗(robots文件禁止抓取的鏈接在此不做優化)。當出現此問題時,不會直接將這條URL刪除,而是將其重新放回站點隊尾,等待下次抓取,改進方案設計如下。

Step1 當一個URL的DNS狀態為解析失敗或者無連接狀態時,將當前URL重新放入namedSiteList隊尾,并設置為等待DNS解析狀態,默認最多重試3次。

Step2 設置一個全局變量reconn為3,每次抓取失敗重試后,更新reconn的值。

優化后偽代碼大致如下。

int reconn =3;//每個URL增加一個屬性參數,表示可以重試的次數

void failure (url *u, FetchError reason) {

if(u->reconn>0){

DNS置為等待解析狀態

將u重新加入到namedSiteList;

//重試次數減1

優化前、后流程對比如圖3所示。

流程優化3 網頁解析、內容存儲、索引服務的基本思路

圖3 優化前后流程

Larbin只負責抓取網頁,從網頁中提取出子鏈接,加入到URL庫進行下一步的擴展性抓取。但是不負責網頁內容的解析、提取內容的存儲以及建立索引等操作[13]。在此提出實現以上功能的基本思路,設計結構如圖4所示。

圖4 功能實現基本流程

1) 網頁解析。Larbin將抓取的網頁保存到本地,可以對本地的網頁文件進行頁面內容解析,按相關規則提取符合要求的目標數據。這樣既保證網頁解析的速度,同時也不會影響Larbin繼續抓取網頁的速度。目前主流的網頁解析工具如表2所示。

表2 網頁解析工具

2) 信息存儲。將解析分類后的目標數據存入本地數據庫,目標數據包括標題、正文、時間、正文圖片、點擊率、評論數、文章摘要等內容。Larbin對接的外部數據庫可以是mysql傳統數據庫,也可以是redis等非關系型數據庫。

3) 索引服務。將獲得的目標數據傳送到非結構化信息搜索引擎,通過建立硬盤索引,實現對數據信息的快速索引。

4 性能測試與分析

通過搭建環境,在單機環境下對優化后的爬蟲系統進行測試,通過與原系統的抓取能力進行對比,驗證本文優化方案設計的高效性和合理性。本文基于CentOS6.5平臺對優化前和優化后的Larbin進行測試,限定到20個網站,運行12 h。

實驗結果1 工作效率對比

工作效率的對比是指優化代碼前后,抓取網頁數量和子鏈接數量的對比,由于Larbin自身并沒有提取內容的功能,所以在此不涉及抓取內容量對比。由圖5可知,優化后的系統在網頁抓取和子鏈接獲取方面更高效。12 h之內,優化前后抓取的網頁數量大約分別是80萬條和110萬條,效率平均提高約35%;從網頁中解析的子鏈接數量大約分別是950萬條和1 200萬條,效率平均提高約20%;另外,6 h以內的子鏈接數量優化前后基本相等,6 h后,本文方法的子鏈接數量相對優化前有了較大提升,從而速度下降問題得到緩解。

圖5 網頁和子鏈接獲取速度對比

實驗結果2 性能對比

進行網頁抓取的URL有3個狀態:成功、robots禁止、DNS解析失敗。通過對比優化前后URL狀態分布情況,驗證抓取失敗進行重試操作對成功率的影響。由于網絡狀態將對網絡爬蟲產生一定的影響,測試當前網絡的分組丟失率達到1%,優化前通過查看Webserver的統計結果,超時、DNS解析失敗等原因導致的子鏈接獲取失敗約占2.3%,如圖6(a)所示。采取失敗重試后,子鏈接失敗率降低到1.0%,如圖6(b)所示。

圖6 子鏈接狀態分布情況對比圖

5 結束語

Larbin作為一個開源的網絡爬蟲框架,給搜索引擎提供了豐富的數據來源。該框架適合進行二次開發,使用者可以根據自己的需求制定自己的Larbin爬蟲。本文對Larbin的體系結構進行了介紹,并針對其在數據結構和流程方面的不足提出了優化方案。實驗測試證明,該優化方案可行有效,使Larbin的程序邏輯更加合理并能夠更加高效地抓取網絡數據。

[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] 孫駿雄. 基于網絡爬蟲的網站信息采集技術研究[D]. 大連: 大連海事大學, 2014. SUN J X. The study on technology of website information collection based on Web crawler[D]. Dalian: Dalian Maritime University,2014.

[3] 呂陽. 分布式網絡爬蟲系統的設計與實現[D]. 成都: 電子科技大學, 2013. LV Y. Distributed Web crawler system design and implementation[D]. Chengdu: University of Electronic Science and Technology of China, 2013.

[4] 單月光. 基于微博的網絡輿情關鍵技術的研究與實現[D]. 成都:電子科技大學, 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的網絡爬蟲體系結構的研究與改進[J]. 計算機技術與發展, 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的企業搜索引擎的研究與實現[D].成都: 電子科技大學, 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] 杜一平. 主題搜索網絡爬蟲的設計與研究[D]. 合肥: 中國科學技術大學, 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平臺下移植[J]. 智能計算機與應用, 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限定爬蟲的設計與實現[J]. 計算機應用與軟件, 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數據爬蟲[J]. 電子技術與軟件工程, 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-),女,山東菏澤人,西安電子科技大學碩士生,主要研究方向為多核調度。

霍義霞(1991-),女,河北廊坊人,北京電子科技學院碩士生,主要研究方向為網絡安全。

慈云飛(1989-),男,安徽池州人,北京電子科技學院碩士生,主要研究方向為訪問控制和信息安全。

史國振(1974-),男,河南濟源人,博士,北京電子科技學院副教授、碩士生導師,主要研究方向為網絡與系統安全、嵌入式安全。

李莉(1974-),女,山東青島人,西安電子科技大學博士生,北京電子科技學院副教授、碩士生導師,主要研究方向為網絡與系統安全、嵌入式系統安全應用。

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

1 引言

隨著信息技術和網絡技術的高速發展,互聯網信息規模呈爆炸式增長,內容呈現雜亂無章,其中包括文本、視頻、音頻、圖片等非結構化數據。為了使用戶方便快捷地獲取各種各樣的目標信息,搜索引擎[1]應運而生。數據收集,即如何獲取互聯網數量龐大的信息是搜索引擎的技術基礎。目前網絡爬蟲是公認的完成網絡信息自動采集任務最有效的工具,其本質是一種按照特定的搜索策略和算法自動抓取互聯網信息的程序[2]。網絡爬蟲的性能將直接影響搜索引擎查找信息的及時性和準確性[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

國家重點研發計劃基金資助項目(No.2016YFB0800304);北京市自然科學基金資助項目(No.4152048);江蘇省自然科學基金資助項目(No.BK20150787);北京電子科技學院2016年春蕾計劃基金資助項目(No.2016CL04)

猜你喜歡
優化
超限高層建筑結構設計與優化思考
房地產導刊(2022年5期)2022-06-01 06:20:14
PEMFC流道的多目標優化
能源工程(2022年1期)2022-03-29 01:06:28
民用建筑防煙排煙設計優化探討
關于優化消防安全告知承諾的一些思考
一道優化題的幾何解法
由“形”啟“數”優化運算——以2021年解析幾何高考題為例
圍繞“地、業、人”優化產業扶貧
今日農業(2020年16期)2020-12-14 15:04:59
事業單位中固定資產會計處理的優化
消費導刊(2018年8期)2018-05-25 13:20:08
4K HDR性能大幅度優化 JVC DLA-X8 18 BC
幾種常見的負載均衡算法的優化
電子制作(2017年20期)2017-04-26 06:57:45
主站蜘蛛池模板: 怡红院美国分院一区二区| 久久黄色一级视频| 第九色区aⅴ天堂久久香| 国产熟睡乱子伦视频网站| 999精品免费视频| 久久综合干| 久久婷婷六月| 国产99热| 久久综合伊人77777| 天堂成人av| 福利国产在线| 人妻丰满熟妇AV无码区| 中国国产高清免费AV片| 手机精品福利在线观看| 亚洲中久无码永久在线观看软件| 国语少妇高潮| 欧美成人综合在线| 免费看美女毛片| 精品国产成人a在线观看| 国产高潮视频在线观看| 午夜视频免费试看| 午夜视频免费一区二区在线看| 亚洲人免费视频| 乱人伦99久久| 天天色天天综合| 一区二区三区四区精品视频| 欧美a在线看| 国产jizz| 国产青榴视频| 国产综合精品一区二区| 亚洲人成影视在线观看| 国产v欧美v日韩v综合精品| 日韩精品视频久久| 制服丝袜在线视频香蕉| 日韩精品专区免费无码aⅴ| 亚洲国产成人久久精品软件| 中文字幕永久在线观看| 亚洲日本中文字幕天堂网| 久久久久久久久久国产精品| 亚洲精品视频网| 一级福利视频| 小说区 亚洲 自拍 另类| 真实国产乱子伦视频| 欧美亚洲网| 福利一区在线| 免费观看无遮挡www的小视频| 日本黄色a视频| 日韩经典精品无码一区二区| 欧美日韩va| 国产精品一区二区不卡的视频| 91成人在线观看| 亚洲天堂2014| 亚洲第一国产综合| 免费毛片视频| 一级一级一片免费| 国产va欧美va在线观看| 精品久久香蕉国产线看观看gif| 亚洲第一黄色网| 日韩在线播放中文字幕| 国产成年女人特黄特色毛片免| 在线网站18禁| 亚洲欧美天堂网| a级毛片免费网站| 国产在线观看99| 丰满人妻一区二区三区视频| 亚洲天堂视频网站| 亚洲免费福利视频| 久久精品一卡日本电影| 亚洲欧洲日产国产无码AV| 日本人妻一区二区三区不卡影院| 波多野结衣第一页| 成人免费视频一区| 区国产精品搜索视频| 依依成人精品无v国产| aaa国产一级毛片| 亚洲国产成人久久精品软件| 日韩精品高清自在线| 欧美中文字幕在线二区| 国产精品成人观看视频国产 | 久久亚洲国产一区二区| 99re在线视频观看| 精品乱码久久久久久久|