吳 偉,陳建峽
(湖北工業(yè)大學(xué)計算機學(xué)院,湖北 武漢430068)
WEB結(jié)構(gòu)化信息抽取將網(wǎng)頁中的非結(jié)構(gòu)化數(shù)據(jù)按照一定的需求抽取成結(jié)構(gòu)化數(shù)據(jù),是垂直搜索引擎的核心技術(shù).由于Heritrix源碼是開放的、可擴展的,而且Heritrix適合所有網(wǎng)絡(luò)規(guī)模,能夠進行高質(zhì)量的web文檔信息抽取項目,因此成為目前用來實現(xiàn)web信息抽取的主要技術(shù)之一.
垂直搜索引擎是為某些特定的領(lǐng)域、某些特定的用戶、某些特定的要求抓取有價值的信息以及相關(guān)的服務(wù).具體表現(xiàn)為:按需要的主題抓取web當(dāng)中海量的非結(jié)構(gòu)化的URL,再將URL中的重要元素做出抽取并存入到數(shù)據(jù)庫.同一般的web搜索引擎相比,垂直搜索引擎檢索對象一對一、檢索結(jié)果更為準(zhǔn)確和深入.所以,用WEB結(jié)構(gòu)化信息抽取操作,可以將URL中的非結(jié)構(gòu)化的數(shù)據(jù)按用戶的需求變?yōu)榻Y(jié)構(gòu)化數(shù)據(jù),這是垂直搜索引擎與普通搜索引擎之間最大的區(qū)別,更是其核心技術(shù).
Web信息抽取,是將web作為信息源的信息抽取,就是從半結(jié)構(gòu)化web信息中抽取需要的數(shù)據(jù)資源[1].核心是把分散在互聯(lián)網(wǎng)當(dāng)中的半結(jié)構(gòu)化頁面當(dāng)中隱含的信息給抽取出來,變成更具有結(jié)構(gòu)化和語義更加清晰的形式,便于在web中對數(shù)據(jù)的查詢及程序直接利用 Web中的數(shù)據(jù).通??梢詫?Web信息源分為三類[2]:自由文本、結(jié)構(gòu)化文本、半結(jié)構(gòu)化文本.以半結(jié)構(gòu)化文本為主.目前用來實現(xiàn)web信息抽取的技術(shù)有 Heritrix、Nutch、JSpider、Crawler4j、Ex-Crawler等[3].由于 Heritrix源碼的特性,筆者選擇用其來完成本文所要提出的問題.
Heritrix是一個爬蟲框架(圖1)[4],從總體看,是一個平臺結(jié)構(gòu),內(nèi)部的全體部件都包含松耦合這一特點.每個組件都能夠拆卸及替換,為基于Heritrix的自定義開發(fā)提供了條件.
圖1 Heritrix架構(gòu)圖
Heritrix中組件的用途:1)Crawl Controller,Web信息抽取中的核心,這一組件用于控制 Web信息抽取的整個過程;2)Crawl Or der,是工作的開始,記錄了整個任務(wù)的全部屬性;3)Frontier,將爬過的URI標(biāo)記,同時將未處理過的鏈接放入等待處理隊列中;4)Toe Thread,處理 URL的線程;5)processor,表示單獨處理器,剩余的處理器全部為它的子類.
在Heritrix架構(gòu)中,Crawl Contr oller,決定了整個Web信息抽取任務(wù)的始末.用戶在Heritrix的控制臺設(shè)置抓Job后,Heritrix要先構(gòu)造出XMLSettings Handler,再來調(diào)用中央控制器的構(gòu)造函數(shù),構(gòu)造一個中央控制器實例并初始化,這樣中央控制器就可以開始運行Job[5].向線程池里工作狀態(tài)中的線程提供需要抓取的鏈接,則需要啟動線程池以開始Web信息抽取,
如若用戶不發(fā)出暫停或終止的指令,web信息抽取工作就會一直繼續(xù),直到無鏈接可抓,控制器才會認為這次的任務(wù)執(zhí)行完畢,線程被關(guān)閉.圖2為Heritrix抓取流程:
圖2 Heritrix工作流程圖
Heritrix在Web信息抽取時,當(dāng)線程從隊列中取得一個URL之后,被抓取成功的URL隊列便產(chǎn)生了阻塞狀態(tài),直到被取出的URL執(zhí)行完所有的處理,方可恢復(fù)這個阻塞狀態(tài).Heritrix實際上是單線程的工作狀態(tài).這是導(dǎo)致工作進度慢的主要原因,例如抓取湖北工業(yè)大學(xué)校園網(wǎng)就需要花費大約160 h以上,因此采取了ELFHash算法對其抓取工作進行優(yōu)化.
筆者對Heritrix進行了采用多線程的改進,以便更有效更快速地抓取網(wǎng)頁內(nèi)容.當(dāng)鏈接送到url處理器時就為其賦予一個Key值,之后再將前面賦予的Key值與相對應(yīng)的鏈接放在一起,便可以組成一個隊列.Heritrix中所有的鏈接用Queueassignmentpolicy計算Key值.鏈接的Key值,Heritrix默認用Hostname Queue Assign ment Policy計算.這種方法的缺點是:當(dāng)對同一個網(wǎng)站當(dāng)中的信息進行抓取時會產(chǎn)生很大的問題.
現(xiàn)將queueassign mentpolicy類進行相應(yīng)的改變,以提高web信息抽取的效率.通過研究、分析ELFHash算法就能實現(xiàn)此功能.ELFHash算法的基本思想如下:
根據(jù)ELFHash基本算法,利用ELFHash算法策略,多線程抓取首先要為org.archive.crawler.fr ontier添加一個繼承于Queue Assign ment Policy的ELFHash Queue Assign ment Policy類.這樣,當(dāng)使用Heritrix抓取網(wǎng)頁的時候,Heritrix就變成默認使用ELFHash Queue Assign ment Policy來分配連接隊列了.經(jīng)過驗證,抓取效率能得到很大的提高.本文實現(xiàn)的主要代碼如下:
本文以網(wǎng)易手機的網(wǎng)址建立job,運行優(yōu)化后的Heritrix,再看Heritrix抓取web信息的過程和抓取URL的結(jié)果.從圖3可知,優(yōu)化后的50個工作線程全是工作狀態(tài),無閑置線程.
圖3 ELFHash算法優(yōu)化結(jié)果圖
Heritrix在抓取信息的過程中將網(wǎng)站內(nèi)部所有URL及其包括的所有文件都抓取出來,這些不必要的文件占用了很多的硬盤空間,所以需要對URL進行適當(dāng)優(yōu)化,讓其更準(zhǔn)確地抓取用戶所需要的URL和文件信息.
本文的研究過程中,選擇了網(wǎng)易的手機網(wǎng)站來作垂直搜索的信息來源.web信息抽取包括兩種:一個是手機的參數(shù),另一個則是手機照片.產(chǎn)品在網(wǎng)站中的圖片格式則為“gif”、“j peg”、“j pg”等,通過對URL源碼的分析可知:網(wǎng)易手機以“pr oduct.tech.163.co m/mobile”起始.由 web信息抽取工作流程不難看出,擴展方法是擴展 Heritrix的Fr ontier-Scheduler中的Post Processor部件.
1)抓 取 所 有 以 “htt p://pr oduct.tech.163.com/mobile/”為前綴的 URL.在eclipse中實現(xiàn)的代碼見圖4.
圖4 URL設(shè)置代碼
2)遇到以“.zip”、“.rar”、“.exe”、“.pdf”、“.doc”、“.xls”等結(jié)束的 URL跳過不予以抓取,在eclipse中實現(xiàn)的代碼如圖5所示:
圖5 跳過的URL代碼圖
圖6 為不抓取以 “.zip”、“.rar”、“.exe”、“.pdf”、“.doc”、“.xls”等結(jié)束的 URL.
圖6 URL優(yōu)化結(jié)果圖
實驗平臺在window7操作系統(tǒng)下,Eclipse-sdk-3.4.2-win32,在基于Java JDK(Java Develop ment Kit)1.6.0_10的可擴展開發(fā)平臺中對 Heritrix1.14.3進行優(yōu)化工作.
筆者利用ELFHash算法優(yōu)化后分別對當(dāng)當(dāng)網(wǎng)、湖北工業(yè)大學(xué)校園網(wǎng)、網(wǎng)易手機網(wǎng)進行抓取工作,可以通過圖7(橫軸的當(dāng)當(dāng)網(wǎng)、湖工、網(wǎng)易手機表示為抓取的網(wǎng)站,縱軸的數(shù)字表示為線程數(shù)、抓取信息量大小及用時多少)看出線程數(shù)為1所需的時間遠遠大于線程為50所需的時間.
圖7 線程優(yōu)化對比圖
本文在Eclipse中運用ELFHash算法通過對Heritrix的queueassign ment policy進行改變,使得Heritrix在Web信息抽取過程由原來的單線程變成了多線程,提高了Web信息抽取的工作的效率,為Heritrix添加的當(dāng)當(dāng)網(wǎng)、湖工校園網(wǎng)站、網(wǎng)易手機網(wǎng)站等的工程節(jié)約了資源,節(jié)省了時間.但是在Web信息抽過程中依然還存在有少量的jpg、t xt等信息不能夠完整的抓取下來,有待進一步完善.
[1]火善棟.基于網(wǎng)頁結(jié)構(gòu)特征的網(wǎng)頁主要文本信息抽取策略[J].現(xiàn)代計算機(專業(yè)版),2008(4):2.
[2]蒲筱哥.基于Web的信息抽取技術(shù)研究綜述[J].現(xiàn)代情報,2007(10):215-219.
[3]邱 哲,符滔滔,王雪松.開發(fā)自己的搜索引擎lucene+Heritrix[M].北京:人民郵電出版社,2010.
[4]佚 名.Heritrix架構(gòu)簡述[EB/OL].(2011-08-21)http://blog.csdn.net/histor yasamirror/article/details/6705923.
[5] Heritrix-h(huán)ome page[EB/OL].(2011-06-09)http://www.webcrawler.co m.