彭 軻 廖聞劍
[摘要]主要描述支持基于瀏覽器服務(wù)的爬蟲的大體實(shí)現(xiàn)方式,并進(jìn)行相關(guān)測試。
[關(guān)鍵詞]網(wǎng)絡(luò)爬蟲 Javascript Ajax 瀏覽器服務(wù)
中圖分類號:TP3文獻(xiàn)標(biāo)識碼:A文章編號:1671-7597(2009)0220050-01
一、引言
在這個信息爆炸的時代,從網(wǎng)絡(luò)上尋找自己所需要的信息越來越離不開搜索引擎,這種快捷而便利的方式已越來越受人青睞,而Baidu,Google,Yahoo等搜索引擎的成功標(biāo)志著搜索引擎已不再是IT人士才懂的專有名詞。搜索引擎帶給我們的龐大的信息量和便捷的操作使得復(fù)雜的互聯(lián)網(wǎng)高維網(wǎng)狀結(jié)構(gòu)簡化為平面,平面的中心是信息的使用者,各種信息觸手可及。
隨著時代的變遷,技術(shù)的進(jìn)步,現(xiàn)今的頁面展現(xiàn)技術(shù)已呈多種多樣的方向發(fā)展,最顯著的進(jìn)步AJAX技術(shù)的問世將傳統(tǒng)的同步式頁面,轉(zhuǎn)變?yōu)楫惒绞巾撁?。給用戶帶來了桌面式的網(wǎng)頁體驗(yàn)。
人們不再像過去只能面對整體刷新的同步頁面,使得網(wǎng)上遨游更輕松,隨意。但同時這一技術(shù)給搜索引擎帶來了巨大的挑戰(zhàn)。異步頁面,事件觸發(fā)的模式使得傳統(tǒng)的搜索引擎前端(即網(wǎng)絡(luò)爬蟲)無法獲取到全部的網(wǎng)頁信息。于是對JSCrawler或AjaxCrawler的研究逐漸熱門起來。
大多數(shù)的AjaxCrawler通過包含JS解析器來實(shí)現(xiàn)對Javascript代碼的解析,執(zhí)行等工作,邏輯復(fù)雜,代碼量大。且重復(fù)了許多前人的工作。
介于DOM解析,JS解析與執(zhí)行是瀏覽器工作的一部分,于是本文采用直接在后臺調(diào)用瀏覽器的方法完成相關(guān)的解析工作。
二、總體設(shè)計(jì)方案
一般的JSCrawler通過提取出Javascript代碼,運(yùn)用js解析模塊解析,執(zhí)行,實(shí)際上是對瀏覽器解析工作的裁減,而且在構(gòu)建DOM對象時不但工作量龐大而且還存在很多的隱患,適用范圍比較窄。與其提取或者重寫瀏覽器的某項(xiàng)功能,何不直接將瀏覽器作為網(wǎng)絡(luò)爬蟲的服務(wù)器,讓其解析出頁面中的URIs交付給爬蟲系統(tǒng)進(jìn)行相關(guān)提取工作。而本系統(tǒng)就是基于這個思想設(shè)計(jì)的。如圖1為該模型的總體設(shè)計(jì)方案。
通過將URL傳遞給BrowseServer獲取初始頁面,接著有BrowseServer
分析處理頁面準(zhǔn)中的代碼,找到頁面中各個鏈接對應(yīng)的位置,然后通過模擬點(diǎn)擊操作由BrowseServer生成Http post方法,獲取下層或異步傳遞的頁面。
三、網(wǎng)頁分析流程
由于有了瀏覽器這個強(qiáng)大的解析工具,網(wǎng)頁分析不再是難題。瀏覽器分析網(wǎng)頁,解析AJAX代碼。生成相應(yīng)的DOM對象及對應(yīng)的URL鏈接。我們從腳本輸出流中提取相應(yīng)鏈接,獲取頁面數(shù)據(jù)即可完成爬取工作。
模塊流程圖如圖2:
四、運(yùn)行測試
如圖2是使用IEServerCrawler爬取網(wǎng)頁某個js網(wǎng)站(www.qolin.com)的測試,為方便后面進(jìn)行對比,因此本系統(tǒng)采用單線程。系統(tǒng)環(huán)境為:
CPU:P4 3.02G
系統(tǒng)環(huán)境:WindowXE
運(yùn)行環(huán)境:Eclipse6.0
網(wǎng)絡(luò)環(huán)境:電信10M ADSL
對于普通網(wǎng)站即含有JS代碼較少的網(wǎng)站(www.baidu.com)測試結(jié)果如表1:
對于JS網(wǎng)站即含有JS代碼較多的網(wǎng)站(qolin.com)測試結(jié)果如表2:
對于BrowserServerCrawler我們可以看到不管是普通網(wǎng)站還是大型的JS網(wǎng)站,都有不錯的抓取性能。特別是在JS代碼較多的網(wǎng)站上表現(xiàn)出了超過普通爬蟲的優(yōu)勢。但抓取時間的劣勢上卻也同樣是顯著的。
五、結(jié)束語
使用IE作為服務(wù)器的設(shè)計(jì)具有強(qiáng)大的JS解析能力能解決單純的JS解析帶來的解析能力單一的問題,但由于啟動IE服務(wù)的耗時,IE解析中包含了太多頁面展示方面的解析問題,使得基于IE服務(wù)的網(wǎng)絡(luò)爬蟲在抓取速度上略有遜色。原因在于瀏覽器的啟動,解析與獲取鏈接無關(guān)的信息方面耗費(fèi)了大量的時間,同時處理普通頁面使用該系統(tǒng)存在極大的資源損耗,而普通頁面在網(wǎng)絡(luò)中依然占有較大的比例。如何設(shè)計(jì)一個在性能和效率上同時出色的AJAX爬蟲還有待我們繼續(xù)研究。
參考文獻(xiàn):
[1]Lawrence S,Giles C L.Searching the world wide web.Seience.1998,280:98-100.
[2]Lin S H,Ho M J.Discovering informative content blocks from Web documents. Proceedings of the Eight ACM SIGKDD International Conference on knowledge Discovery and DataMining.2002.
[3]Najork M,Heydon A..High-performance Web Crawling.Compaq Systems Researeh Center.2001.
[4]ChoJ.Crawling the Web:Discovery and maintenance of large-scale Web data.Stanford University, doctoral dissertation,2002.
[5]ChoJ,Garcia一Molina H.The Evolution of the Web and Implications for an Incremental Crawler Proceedings of 26th Intemational Conference on Very Large Database(VLDB).
[6]謝正茂,Web數(shù)據(jù)模型以及獲取、存儲方法研究,北京大學(xué),碩士論文.
[7]印鑒、陳憶群、張鋼,搜索引擎技術(shù)研究與發(fā)展,計(jì)算機(jī)工程,2005(7):54-56.
[8]賈紅英,網(wǎng)絡(luò)搜索引擎探析[J].情報資料工作,2002,3.
[9]李曉明、閏宏飛、王繼民,搜索引擎——原理、技術(shù)與系統(tǒng),北京:科學(xué)出版社,2005:30-54.
[10]張興華,搜索引擎技術(shù)與研究[J].現(xiàn)代情報,2004,(4):142-145.
[11]邱誠,搜索引擎及其發(fā)展淺析[J].圖書館研究與工作,2002,(2):8-10.
作者簡介:
彭軻,男,漢,湖北武漢,碩士研究生,主要研究方向?yàn)橥ㄐ跑浖?/p>