孫海濤
(中移全通系統(tǒng)集成有限公司,河北 石家莊 050000)
網(wǎng)頁抓取中爬蟲控制器的研究分析
孫海濤
(中移全通系統(tǒng)集成有限公司,河北 石家莊 050000)
隨著互聯(lián)網(wǎng)的日益壯大,網(wǎng)頁抓取技術飛速發(fā)展。網(wǎng)頁抓取已成為人們在浩瀚的網(wǎng)絡世界中獲取信息必不可少的工具,如何有效進行網(wǎng)頁抓取成為專業(yè)搜索引擎中網(wǎng)絡爬蟲研究的主要問題。文章介紹了爬蟲控制器和工作原理,并討論了爬蟲控制器的URL隊列管理、頁面抓取線程、索引隊列管理等的抓取策略,并對其未來發(fā)展趨勢進行了展望。
爬蟲控制器;隊列管理;線程;索引
爬蟲控制器是把網(wǎng)頁抓取和網(wǎng)頁分析用多線程的方式執(zhí)行,并管理多線程之間的數(shù)據(jù)共享和通信;加上索引相關模塊,爬蟲控制器大致可以分為4個部分:(1)統(tǒng)一資源定位符(Uniform Resource Locator,URL)隊列管理;(2)頁面抓取線程;(3)索引隊列管理;(4)索引線程。
其中兩個隊列管理需要處理資源共享問題,線程部分需要處理線程間通信問題。
因URL隊列須保證URL的唯一性,以保證每個鏈接指向的頁面只抓取一次;而抓取頁面的工作是由多個線程同時進行,所以URL隊列需要保證線程操作安全。所以該隊列還必須包含唯一性判斷和線程安全。URL隊列管理如圖1所示。
在向隊列中追加URL時,把數(shù)據(jù)寫到URL尾部,而讀取URL時,從隊列頭部開始以保證先進先出隊列(First Input First Output,F(xiàn)IFO)規(guī)則,追加數(shù)據(jù)完成后需要通過所有的頁面抓取線程,使沒有工作的線程可以啟動抓取數(shù)據(jù)。若URL的值為空時,讀取線程進入等待狀態(tài)。
頁面抓取涉及http下載、GZip解壓縮和編碼轉(zhuǎn)換的問題,單個線程的主要功能如圖2所示。
圖1 URL隊列管理示意圖
圖2 HTTP抓取線程流程圖
因URL隊列可能提供的數(shù)據(jù)為空,此時頁面抓取線程就必須等待通知,此通知由URL隊列模塊發(fā)出,以被告知URL已經(jīng)有數(shù)據(jù)可用,則線程繼續(xù)執(zhí)行下一步操作。
索引隊列作為Http抓取線程與索引線程交換數(shù)據(jù)的媒介存在,是典型的生產(chǎn)者—倉庫—消費者模型的倉庫模塊部分。該隊列涉及多線程互斥、線程間通信等內(nèi)容,如圖3所示。
索引隊列為索引線程和抓取線程提供數(shù)據(jù)交換媒介,抓取線程在往隊列中追加數(shù)據(jù)的同時會通知索引線程。索引線程在等待狀態(tài)時,收到通知則繼續(xù)工作;若索引線程正在工作中,則通知被拋棄。
在如今信息爆炸的社會中,網(wǎng)絡成為人們生活中不可或缺的工具,而搜索引擎又在其中扮演著至關重要的角色。網(wǎng)頁抓取是一個實用性很強的研究領域,無論是網(wǎng)絡爬蟲、數(shù)據(jù)庫管理、中文分詞還是索引的建立方法,都值得深入了解。但近年來,隨著良莠不齊的各類爬蟲頻繁出沒,一些網(wǎng)站也承受著由爬蟲帶來的困擾,這些都是今后有待解決的問題。
Analysis on Web crawler controller
Sun Haitao
(China Mobile Quantong System Integration Co., Ltd., Shijiazhuang 050000, China)
With the growing of the Internet, the Web crawler technology develops rapidly. Web crawling has become an indispensable tool for people to obtain information in the vast network world. How to effectively make web crawler become the main problem in the research of Web crawler in professional search engine. Crawler controller and the principle of work is introduced in this paper, and it discusses the crawler controller URL queue management, page thread crawl, index queue management crawling strategy, and looks forward to its future development trend.
crawler controller; queue management; thread; index
圖3 索引隊列工作示意圖
孫海濤(1978— ),男,河北石家莊。