陳浩 關(guān)巍
摘要:垂直搜索引擎作為一種新型的搜索引擎服務(wù)模式,它的出現(xiàn)徹底解決了通用搜索引擎中一直存在的信息量大、查詢不準(zhǔn)確、深度不夠等一系列問題。該文通過對Heritrix體系結(jié)構(gòu)的深入分析,詳細(xì)闡述了Heritrix在垂直搜索引擎中實(shí)現(xiàn)數(shù)據(jù)搜集的整個過程。
關(guān)鍵詞:垂直搜索引擎;網(wǎng)絡(luò)蜘蛛;Heritrix;體系結(jié)構(gòu)
中圖分類號:TP311文獻(xiàn)標(biāo)識碼:A文章編號:1009-3044(2012)15-3662-03
Heritrix Architecture-based Vertical Search Engine
CHEN Hao, GUAN Wei
(Guangdong Technical College of Water Resources and Electric Engineering, Guangzhou 510635, China)
Abstract: The vertical search engine as a new search engine service model, It completely solved the large amount of information has always existed in the general search engine query is not accurate, not deep enough, a series of questions. In this paper, in-depth analysis of the Her itrix architecture, Described in detail the whole process Heritrix data collected in the vertical search engine.
Key words: vertical search engine; web spiders; Heritrix; architecture
搜索引擎是指根據(jù)一定的策略、運(yùn)用特定的計(jì)算機(jī)程序從互聯(lián)網(wǎng)上搜集信息,在對信息進(jìn)行組織和處理后,為用戶提供檢索服務(wù),將用戶檢索相關(guān)的信息展示給用戶的系統(tǒng)。
垂直搜索引擎是針對某一個行業(yè)的專業(yè)搜索引擎,是對搜索引擎的細(xì)化和延伸,是對網(wǎng)頁庫中某類專業(yè)信息進(jìn)行的一次整合,通過定向分詞字段抽取出需要的數(shù)據(jù),經(jīng)處理后再以特定的數(shù)據(jù)庫格式返回給用戶。
i J2vm7Gji;z0垂直搜索引擎相比通用搜索引擎最大的區(qū)別在于對網(wǎng)頁信息的結(jié)構(gòu)化信息抽取,通過將網(wǎng)頁中的非結(jié)構(gòu)化數(shù)據(jù)抽取成特定的結(jié)構(gòu)化信息數(shù)據(jù)。通用搜索引擎是基于視覺的網(wǎng)頁塊分析,以網(wǎng)頁塊作為最小單位;而垂直搜索是以結(jié)構(gòu)化數(shù)據(jù)作為最小單位,將這些結(jié)構(gòu)化數(shù)據(jù)存儲到數(shù)據(jù)庫中,經(jīng)深度加工即去重、分類、分詞、索引等一系列處理后,再以檢索的形式滿足用戶的需求。中國經(jīng)濟(jì)網(wǎng)經(jīng)濟(jì)博客*cvwjq8zT)X
垂直搜索引擎的應(yīng)用領(lǐng)域廣泛,比如企業(yè)庫搜索、供求信息搜索引擎、購物搜索、房產(chǎn)搜索、人才搜索、地圖搜索、mp3搜索、圖片搜索等等,幾乎各行各業(yè)各類信息都可以進(jìn)一步細(xì)化成各類的垂直搜索引擎。
1垂直搜索引擎的數(shù)據(jù)采集技術(shù)
垂直搜索引擎由抓取模塊、索引模塊、搜索模塊和信息數(shù)據(jù)庫組成。抓取模塊通過網(wǎng)絡(luò)蜘蛛負(fù)責(zé)在信息源中抓取數(shù)據(jù)并存入信息數(shù)據(jù)庫;索引模塊對信息數(shù)據(jù)庫中的數(shù)據(jù)建立索引庫為用戶提供快速的檢索服務(wù);搜索模塊一般以B/S形式出現(xiàn),根據(jù)用戶的檢索詞為用戶提供有效的檢索信息;信息數(shù)據(jù)庫中則存儲了抓取模塊抓取回來的信息。
垂直搜索引擎抓取模塊中的網(wǎng)絡(luò)蜘蛛和通用搜索引擎網(wǎng)絡(luò)蜘蛛相比更加專業(yè),定制化范圍針對性更強(qiáng)??啥ㄏ蛐缘牟杉痛怪彼阉鞣秶嚓P(guān)的網(wǎng)頁忽略不相關(guān)的網(wǎng)頁和不必要的網(wǎng)頁,選擇內(nèi)容相關(guān)的以及適合做進(jìn)一步處理的網(wǎng)頁,通過深度優(yōu)先采集策略,對頁面更新頻率有選擇的進(jìn)行調(diào)整。根據(jù)垂直搜索引擎對信息要求的特點(diǎn),數(shù)據(jù)采集須由以下幾個方面進(jìn)行考慮:
1)信息源的穩(wěn)定性,不能讓信息源網(wǎng)站感覺到來自網(wǎng)絡(luò)蜘蛛的壓力。
2)抓取成本的控制問題。
3)用戶檢索方式的改善程度。
根據(jù)以上三點(diǎn)制定一種較好的爬取策略,要做到恰到好處。策略上可以對網(wǎng)站中網(wǎng)頁更新的系數(shù)、網(wǎng)頁的重要系數(shù)、用戶點(diǎn)擊系數(shù)(或曝光系數(shù))、網(wǎng)站穩(wěn)定系數(shù)先行做評估,根據(jù)這些系數(shù)來確定這些網(wǎng)站中網(wǎng)頁更新的頻率。再由此更新頻率對網(wǎng)頁進(jìn)行分級判定,以此降低成本又很好的解決了更新網(wǎng)頁的抓取問題,系數(shù)比較低的網(wǎng)頁一月抓取一次,稍微高點(diǎn)的一周抓取一次、中等的幾天到一天抓取一次、高的幾小時(shí)到幾分鐘抓取一次。
2 Heritrix的特點(diǎn)
基于系統(tǒng)可移植性和可擴(kuò)展性的方面考慮,垂直搜索引擎的網(wǎng)頁搜集部分使用開源的Heritrix作為爬蟲(或網(wǎng)絡(luò)蜘蛛)。Heri trix作為Java開源項(xiàng)目,是SourceForge上的開源產(chǎn)品。其實(shí)現(xiàn)原理是根據(jù)給定URL地址向網(wǎng)站提交HTTP請求,抓取網(wǎng)絡(luò)資源,獲取完整、及時(shí)的站點(diǎn)內(nèi)容。通過分析已下載網(wǎng)頁內(nèi)的有效鏈接URL地址,進(jìn)一步獲取更多的網(wǎng)絡(luò)資源。Heritrix可以通過Web用戶界面方便地啟動和管理下載進(jìn)程,控制策略靈活。也可以獲取圖像以及其他非文本內(nèi)容。儲存的頁面內(nèi)容不會被修改,完成相應(yīng)網(wǎng)頁庫結(jié)果,并生成本地文件及相應(yīng)的日志信息。
Heritrix作為網(wǎng)絡(luò)蜘蛛,具有以下特點(diǎn):
1)專注的網(wǎng)絡(luò)信息下載功能。
2)適用于各種類型網(wǎng)頁信息并嚴(yán)格保持網(wǎng)頁原貌。
3)在保留歷史的下載網(wǎng)頁庫內(nèi)容基礎(chǔ)上不斷地添加新的下載內(nèi)容。
4)以任務(wù)形式管理并提供命令行和友好的Web控制界面。
5)可配置參數(shù)眾多可更為靈活地管理下載任務(wù)。
3 Heritrix體系結(jié)構(gòu)分析
Heritrix的體系結(jié)構(gòu)是采用了多線程和鏈接隊(duì)列的形式組織。整個系統(tǒng)的工作部分可以分成對配置文件管理部分、下載任務(wù)管理部分、下載控制部分和下載工作單元。附帶的工作隊(duì)列、緩沖區(qū)等的引入則為網(wǎng)絡(luò)蜘蛛提供了良好的性能。
整個體系圍繞下載控制器組織,從外部配置文件獲取運(yùn)行參數(shù)和下載任務(wù)配置。生成下載任務(wù)管理器和待下載的網(wǎng)絡(luò)資源列表。
1)整個系統(tǒng)結(jié)構(gòu)中以多線程隊(duì)列作為工作的基本機(jī)制,不斷地從任務(wù)管理其獲取新的下載列表。
2)下載列表經(jīng)過抓取范圍控制器進(jìn)行過濾,提交給下載地址管理器。
3)下載管理器中的網(wǎng)頁URL,根據(jù)控制器要求,形成等待下載隊(duì)列。
4)處理器鏈接根據(jù)下載隊(duì)列的內(nèi)容,根據(jù)處理器和線程池等其他資源的空閑情況,不斷形成內(nèi)部的工作鏈。
5)最終調(diào)用負(fù)責(zé)網(wǎng)絡(luò)訪問的CrawlURL對象進(jìn)行處理,得到的下載頁面經(jīng)過分析提供新的下載鏈接,填充到下載任務(wù)隊(duì)列中。
上述的基本過程不斷循環(huán),完成新資源的發(fā)現(xiàn)和已下載資源的不斷更新,最終形成一個自動運(yùn)行的網(wǎng)絡(luò)蜘蛛。Heritrix網(wǎng)絡(luò)蜘蛛工作的體系結(jié)構(gòu)如圖1所示:
4 Heritrix的功能和作用
下載控制器是整個體系的總體框架,控制器組合網(wǎng)絡(luò)蜘蛛的各種工作部件。其中每一部分的功能和作用描述如下:
1)下載控制器CrawlController
下載控制器CrawlController是整個下載過程的總控和指揮者??刂破渌δ懿考膮f(xié)調(diào)工作,組合了在網(wǎng)絡(luò)抓取過程中所有需要協(xié)同工作的功能類。以主線程的形式運(yùn)行,為網(wǎng)絡(luò)蜘蛛的運(yùn)行提供了高層的訪問接口,避免使用者的復(fù)雜操作。通過調(diào)度,最終把下載地址管理器Frontier中地址列表傳遞給線程池中的ToeThreads,完成下載任務(wù)。下載控制器中的不同組件不必互相調(diào)用,通過控制器就可以完成聯(lián)系,形成了整體的運(yùn)行環(huán)境。
2)下載管理器CrawlOrder
下載管理器CrawlOrder根據(jù)配置信息生成下載的任務(wù)對象,任務(wù)配置信息通常讀取Order.xml和seed.txt的內(nèi)容形成。讀取的結(jié)果會形成一系列的下載任務(wù)內(nèi)容屬性。Order.xml用來配置爬取過程中的功能類組合,可以用于功能擴(kuò)展。Seeds.txt文件時(shí)用來存放希望抓取的網(wǎng)站入口地址。
3)范圍控制器CrawlScope
CrawlScope是按照規(guī)則對下載內(nèi)容進(jìn)行過濾,主要控制將哪個URL入隊(duì)。使用范圍控制器可以避免下載內(nèi)容的無限膨脹。
4)邊界控制器Frontier
邊界控制器Frontier主要用來確定下一個將被抓取的網(wǎng)頁。實(shí)現(xiàn)對網(wǎng)站訪問的均衡處理,避免過多線程同時(shí)訪問同一網(wǎng)站造成網(wǎng)站的壓力。下載后的結(jié)果也被返回Frontier中,利用分析得到的新的URI進(jìn)行后續(xù)訪問。Frontier內(nèi)至少要包括最新發(fā)現(xiàn)的URL資源列表、正在處理的URL列表、已經(jīng)下載的URL列表。Frontier工作中需要依賴PreconditionEnforcer、LinksScoper和Frontier Scheduler對象。PreconditionEnforcer對象用來在抓取前檢查DNS和robots,避免非法抓取;LinksScoper用來判斷正在處理的地址是否屬于下載范圍內(nèi),下載優(yōu)先級如何控制等;The FrontierScheduler用來把新發(fā)現(xiàn)的地址URLs添加到Frontier中安排下載。
5)服務(wù)器緩存Servercache
服務(wù)器緩存Servercache實(shí)現(xiàn)搜索引擎匯中的DNS緩存功能。Servercache中存放服務(wù)器的持久信息,包括IP地址、歷史下載記錄、機(jī)器人策略等。緩存中的信息能夠被爬行部件隨時(shí)查到,用來加快網(wǎng)絡(luò)爬蟲的下載速度。
6)Web管理控制臺
Web管理控制臺依賴于Heritrix服務(wù)已經(jīng)啟動,為用戶提供更方便的訪問方式。管理控制臺提供了密碼保護(hù),相關(guān)的內(nèi)容在Heritrix的配置參數(shù)里使用。
7)Crawler命令處理部件
操作者可以通過選擇Crawler命令來操作控制臺。通過命令行參數(shù)也可以方便地操作網(wǎng)絡(luò)蜘蛛,其中包含了足夠的信息表明要爬的URL和操作控制參數(shù)。
8)處理鏈ProcessorChainList
處理鏈保存了當(dāng)前網(wǎng)絡(luò)爬蟲的任務(wù)鏈表,儲存當(dāng)前的工作狀態(tài)和控制下載流程。處理鏈中主要包含了五個重要的鏈表,包括:預(yù)取處理鏈(Pre-fetch processing chain)、抓取處理鏈(Fetch processing chain)、抽取處理鏈(Extractor processing chain)、寫處理鏈(Write/index processing chain)、提交處理鏈(Post-processing chain)。
1)預(yù)處理鏈(Pre-fetch processing chain):主要根據(jù)robot協(xié)議、DNS以及下載范圍控制信息判斷網(wǎng)絡(luò)地址是否當(dāng)前下載,另外完成一些準(zhǔn)備工作,如對處理進(jìn)行延遲和重新處理。內(nèi)部依賴于Preselector和PreconditionEnforcer類對象完成相應(yīng)的功能。
2)抓取處理鏈(Fetch processing chain):主要是下載獲得需要的各種網(wǎng)絡(luò)資源,利用FetchHTTP等功能類,完成DNS轉(zhuǎn)換、填寫HTTP資源請求和響應(yīng)表單,接收獲得的信息。
3)抽取處理鏈(Extractor processing chain):當(dāng)提取完成時(shí),分析網(wǎng)頁內(nèi)的HTML和JavaScript,提取新的資源URL,保持到相應(yīng)的隊(duì)列。
4)寫處理鏈(Write/Index processing chain):存儲爬行結(jié)果,返回內(nèi)容和抽取頁面特征,完成信息過濾并儲存。采用默認(rèn)的ARC? WriterProcessor進(jìn)行處理,通過擴(kuò)展的處理,可以直接完成分析和索引并存儲操作。
5)提交處理鏈(Post-processing chain):完成最后的日志和資源維護(hù),所有隊(duì)列資源都會最終進(jìn)入提交處理鏈,即使被拒絕下載的資源地址也會進(jìn)行邊界測試等操作。內(nèi)部依賴于CrawlStateUpdater、LinksScoper、FrontierScheduler等操作。
5 Heritrix工作流程
Heritrix整個處理鏈協(xié)調(diào)工作前后銜接,形成網(wǎng)絡(luò)蜘蛛的流水式下載流程,最大程度地發(fā)揮系統(tǒng)工作效率。其工作流程結(jié)果如圖2所示:
6結(jié)論
Heritrix豐富的體系結(jié)構(gòu)和多元化的定制功能,為垂直搜索引擎更加專注、具體和深入的信息化服務(wù)模式提供了必要的數(shù)據(jù)支持,為滿足某一特定領(lǐng)域或某一特定人群對于某一特定信息需求提供了有效保證。
參考文獻(xiàn):
[1]黃瑋夏.分類搜索引擎的體系構(gòu)建及其使用方法探析[J].情報(bào)科學(xué),2010(4).
[2] Sriram Raghavan,Hector Garcia-Molina.Crawling the hidden Web[C].Proc. of the International Conference on Vary I arge Data Bas es(VLDB), Rome, Italy,2010,9.
[3]陳振宇,趙繼海.搜索引擎的工作機(jī)制與web信息檢索技術(shù)[J].情報(bào)檢索,2009(11).
[4] Almpanidis G,Kotropoulos C,Pitas.I Combining Text and Link Analysis for Focused Crawling - an Application for Vertical Search Engines[J].Information System,2007,32(6)886-908.
[5] Kapetanios E,Sugumaran V,Spiliopoulou M.An Ontology-Based Focused Crawler.LNCS 5039,2008,376-379.