一種網(wǎng)絡(luò)爬蟲(chóng)的帶緩存非阻塞異步
第8卷第11期軟件導(dǎo)刊2009年11月Software GuideVol.8No.11Nov. 2009一種網(wǎng)絡(luò)爬蟲(chóng)的帶緩存非阻塞異步域名解析器模型及其性能分析陳言1,顏晨陽(yáng)1(寧波大學(xué)職教學(xué)院,浙江
第8卷第11期
軟件導(dǎo)刊
2009年11月Software Guide
Vol.8No.11Nov. 2009
一種網(wǎng)絡(luò)爬蟲(chóng)的帶緩存非阻塞異步域名解析器模型及其性能分析
陳
言1,顏晨陽(yáng)1
(寧波大學(xué)職教學(xué)院,浙江寧波315100)
摘
要:網(wǎng)絡(luò)爬蟲(chóng)是搜索引擎的一個(gè)基本組件,網(wǎng)絡(luò)爬蟲(chóng)抓取頁(yè)面的效率直接影響搜索引擎提供的服務(wù)質(zhì)量。除了
可以通過(guò)改進(jìn)網(wǎng)絡(luò)爬蟲(chóng)的爬行策略來(lái)提高網(wǎng)絡(luò)爬蟲(chóng)效率之外,也可以通過(guò)優(yōu)化網(wǎng)絡(luò)爬蟲(chóng)程序某方面的設(shè)計(jì)來(lái)消除特定的效率瓶頸。通過(guò)對(duì)網(wǎng)絡(luò)爬蟲(chóng)結(jié)構(gòu)和實(shí)際運(yùn)行數(shù)據(jù)的分析,針對(duì)爬蟲(chóng)的DNS 解析瓶頸,設(shè)計(jì)了一種帶緩存異步域名解析器模型,并通過(guò)實(shí)驗(yàn)和一般DNS 解析器模型進(jìn)行了比較,實(shí)驗(yàn)結(jié)果證明這種模型對(duì)于減少程序等待解析域名的這一操作時(shí)間十分有效,顯然也能夠提高爬蟲(chóng)的整體效率。關(guān)鍵詞:網(wǎng)絡(luò)爬蟲(chóng);域名解析;散列緩存;異步事件處理中圖分類(lèi)號(hào):TP393.01
文獻(xiàn)標(biāo)識(shí)碼:A
文章編號(hào):1672-7800(2009)11-0143-04
網(wǎng)絡(luò)爬蟲(chóng)的目標(biāo)就是盡可能多地采集有效信息,并且消耗盡可能少的的系統(tǒng)資源和網(wǎng)絡(luò)帶寬。所以,網(wǎng)絡(luò)爬蟲(chóng)的效率瓶頸主要和兩方面爬蟲(chóng)程序設(shè)計(jì)相關(guān):一方面是采集信息的價(jià)值,也即網(wǎng)絡(luò)爬蟲(chóng)要盡可能地提高對(duì)包含有價(jià)值并且不重復(fù)的信息頁(yè)面采集覆蓋率;另一方面是爬行的效率,也即網(wǎng)絡(luò)爬蟲(chóng)要使得采集一個(gè)頁(yè)面的平均時(shí)間盡可能地短并且消耗盡可能少的網(wǎng)絡(luò)資源和本地資源。所以,對(duì)于網(wǎng)絡(luò)爬蟲(chóng)的性能的改進(jìn)可以從兩方面著手:一方面是提高爬蟲(chóng)的采集信息價(jià)值。這可以通過(guò)制定各種高效的爬行策略和相關(guān)算法來(lái)實(shí)現(xiàn)。簡(jiǎn)單爬蟲(chóng)往往采用廣度優(yōu)先或者深度優(yōu)先爬行策略,無(wú)論是廣度優(yōu)先還是深度優(yōu)先策略,其時(shí)間漸近復(fù)雜度都為O (e+v),其中v ,e 分別為網(wǎng)絡(luò)中的網(wǎng)頁(yè)頁(yè)面與鏈接的數(shù)量,這些爬行策略對(duì)各個(gè)頁(yè)面的價(jià)值回報(bào)并不評(píng)估篩選,爬行速度快,但針對(duì)性較差,不能提高搜索的查準(zhǔn)率。為了準(zhǔn)確抓取與主題相關(guān)的網(wǎng)絡(luò)資源,研究者提出了許多主題定制爬行策略和相關(guān)評(píng)價(jià)網(wǎng)頁(yè)的方法,使得網(wǎng)絡(luò)爬蟲(chóng)盡可能多地爬行價(jià)值高網(wǎng)頁(yè),盡可能少地爬行價(jià)值低網(wǎng)頁(yè)。這些爬行策略包括:①基于文字內(nèi)容的啟發(fā)式方法,利
圖1
0引言
網(wǎng)絡(luò)爬蟲(chóng)是搜索引擎的重要組成部分。我們總是希望爬蟲(chóng)
對(duì)服務(wù)器不造成沖擊的前提下,爬行速度盡可能快,信息覆蓋高而且準(zhǔn)確。通用網(wǎng)絡(luò)爬蟲(chóng)爬行的基本策略是將Internet 視為一幅復(fù)雜的有向圖。利用這樣的模型,網(wǎng)絡(luò)爬蟲(chóng)可以采用圖的廣度優(yōu)先搜索算法或圖的深度優(yōu)先搜索算法爬行Internet 并下載數(shù)據(jù)。一個(gè)網(wǎng)頁(yè)即為一個(gè)節(jié)點(diǎn),網(wǎng)頁(yè)中指向其他頁(yè)面的URL 為該節(jié)點(diǎn)到其他節(jié)點(diǎn)的路徑,整個(gè)Internet 由大量這樣的節(jié)點(diǎn)構(gòu)成一幅龐大的有向圖G (E ,A ),如圖1所示。其中矩形代表頁(yè)面,箭頭線為URL ,該圖顯示了網(wǎng)頁(yè)間相互鏈接的關(guān)系
。
Internet 的有向圖模型示意圖
用了Web 網(wǎng)頁(yè)文本內(nèi)容、URL 字符串、錨文字等文字內(nèi)容信上市。
參考文獻(xiàn):[1]
郭華. 基于ARM 的ZigBee 無(wú)線網(wǎng)絡(luò)通信系統(tǒng)的研究與設(shè)計(jì)[D ]. 濟(jì)南:山東科技大學(xué)碩士學(xué)位論文,2006.
(責(zé)任編輯:杜能鋼)
開(kāi)始讀寫(xiě),這樣就可以有效地利用緩沖區(qū)。
4結(jié)束語(yǔ)
FS8610具有高性能的網(wǎng)絡(luò)協(xié)議處理能力以及可編程控制
的GPIO 接口,搭配UZ2400這款ZigBee 網(wǎng)絡(luò)芯片,可以輕松地實(shí)現(xiàn)ZigBee 到以太網(wǎng)的轉(zhuǎn)換,有效縮短開(kāi)發(fā)時(shí)間,加速產(chǎn)品
基金項(xiàng)目:寧波市自然科學(xué)基金資助項(xiàng)目(2008A610030);浙江省大學(xué)生科技創(chuàng)新項(xiàng)目基金資助項(xiàng)目
作者簡(jiǎn)介:陳言(1985-),男,浙江寧波人,寧波大學(xué)職教學(xué)院本科生,研究方向?yàn)橹悄苡?jì)算;顏晨陽(yáng)(1982-),男,浙江常興人,碩士,寧波大學(xué)職教
學(xué)院講師,研究方向?yàn)橹悄苡?jì)算。
,·144·軟件導(dǎo)刊2009年
息。主要包括Best first search 方法、Fish search 方法、Shark Search 方法等;②基于Web 超鏈圖評(píng)價(jià)的方法,基于Web 圖的
啟發(fā)策略的基本思想來(lái)自于文獻(xiàn)計(jì)量學(xué)的引文分析理論。主要包括了BackLink 、PageRank 等方法;③基于分類(lèi)器預(yù)測(cè)的方法,將文本分類(lèi)技術(shù)應(yīng)用于信息采集中。主要包括基于樸素貝葉斯分類(lèi)模型引導(dǎo)主題Web 爬蟲(chóng)、基SVM 分類(lèi)模型的爬蟲(chóng)等等。另一方面就是必須要消除制約爬蟲(chóng)自身爬行效率的瓶頸,使爬蟲(chóng)達(dá)到高效。這可以通過(guò)改進(jìn)爬蟲(chóng)程序的設(shè)計(jì)結(jié)構(gòu)來(lái)實(shí)現(xiàn)。為了高速地抓取盡量多的網(wǎng)頁(yè),許多爬蟲(chóng)程序都采用了一些程序設(shè)計(jì)方法和技巧,使得爬蟲(chóng)提高網(wǎng)絡(luò)資源和本地資源利用效率,這些方法和技巧包括:①采用并發(fā)結(jié)構(gòu),主要是多進(jìn)程/線程架構(gòu);②采用流水線結(jié)構(gòu),主要是采用異步事件處理技術(shù);③采用緩存機(jī)制等等
。
圖2
網(wǎng)絡(luò)爬蟲(chóng)的瓶頸
1爬蟲(chóng)的DNS 查詢瓶頸
通用爬蟲(chóng)能在指定應(yīng)用層協(xié)議(一般為HTTP )上通過(guò)指
定的端口與服務(wù)器進(jìn)行通信。在爬行過(guò)程中,網(wǎng)絡(luò)爬蟲(chóng)一般需要使用域名解析服務(wù)來(lái)解析域名,然后通過(guò)解析得到的IP 地址來(lái)抓取網(wǎng)頁(yè)。在實(shí)際測(cè)試中,(Linux kernel version2. 6. 4,
gcc2. 7. 2)采用gethostbyname 系統(tǒng)調(diào)用,對(duì)3000個(gè)主機(jī)名進(jìn)行
解析,花費(fèi)9. 93×105ms,大部分域名的查詢時(shí)間在10-100ms左右,少數(shù)域名的解析時(shí)間甚至達(dá)到數(shù)秒乃至數(shù)十秒。顯然解析域名是造成爬蟲(chóng)爬行效率的重大瓶頸之一,事實(shí)上這個(gè)瓶頸是由于crawler 程序架構(gòu)和網(wǎng)絡(luò)資源本身造成的,和造成頁(yè)面數(shù)據(jù)傳輸速率瓶頸的原因相同。但究其詳細(xì),主要有如下原因:
①一般操作系統(tǒng)(例如大部分Unix 、Linux 和Windows )提供的DNS client 沒(méi)有考慮cralwer 的需求,統(tǒng)提供DNS client 是阻塞
的,這帶來(lái)兩個(gè)問(wèn)題:DNS 解析不能并發(fā)和DNS 解析不能在多個(gè)DNS server 之間均衡負(fù)載;②crawler 避免同時(shí)從一個(gè)服務(wù)器抓許多網(wǎng)頁(yè)也使域名服務(wù)器cache 能力發(fā)揮不出來(lái)。
爬蟲(chóng)程序一般都采用多線程架構(gòu)來(lái)提高網(wǎng)絡(luò)資源利用率,這當(dāng)然是可行而且有效的方法,但是由于上面提到的兩個(gè)原因,僅僅采用多線程架構(gòu)是不可能解決上面提到的DNS 解析瓶頸的。
在本文的下面一節(jié)中,針對(duì)爬蟲(chóng)程序需要頻繁請(qǐng)求域名解析服務(wù)的DNS 瓶頸,架構(gòu)了一種帶緩存的異步非阻塞DNS 解析器模型。
2帶緩存非阻塞異步域名解析器模型
本文中構(gòu)造的域名解析器主要分為兩個(gè)模塊:①域名解析
結(jié)果散列緩存;②基于非阻塞socket 和事件處理異步DNS 客
戶端。下面就詳細(xì)給出這兩個(gè)模塊的構(gòu)建方法:
2.1域名解析結(jié)果散列緩存
URL 中重復(fù)的域名使用頻繁,DNS 本地緩存能大量減少
因重復(fù)的域名解析造成的網(wǎng)絡(luò)占用及等待時(shí)間。為提高域名緩存模塊的效率,本文設(shè)計(jì)了一個(gè)使用哈希表為表頭、以雙向鏈表保存域名-IP映射,用一個(gè)緩沖節(jié)點(diǎn)雙向鏈表來(lái)存儲(chǔ)可用緩沖節(jié)點(diǎn),我們將這個(gè)DNS 緩存命名為“域名散列緩存(name
cache )”,能夠比較有效地寫(xiě)入域名、檢索域名以及高效地按需
求替換域名。圖3展示了域名緩沖的構(gòu)造與關(guān)鍵環(huán)節(jié),其中緩沖節(jié)點(diǎn)的數(shù)據(jù)結(jié)構(gòu)如下所示:
struct nc_node{
char*host_name;//主機(jī)名int host_addr;//IP地址
struct nc_node*next;//哈希表拉鏈后繼節(jié)點(diǎn)指針sturct nc_node*prev;
//哈希表拉鏈前驅(qū)節(jié)點(diǎn)指針
struct nc_node*next_node;//可用鏈表后繼節(jié)點(diǎn)指針sturct nc_node*prev_node;
//可用鏈表前驅(qū)節(jié)點(diǎn)指針
char in_use;//使用標(biāo)志
time_tc_time;
//緩沖結(jié)點(diǎn)創(chuàng)建時(shí)間
}
圖3域名緩沖的構(gòu)造
本文中哈希表使采用如下散列函數(shù)進(jìn)行散列,其中hot-
sname 為主機(jī)名字符串,hlen 為哈希表長(zhǎng)。
表1
哈希函數(shù)
Pseudo-code of Hash function :
unsigned long getHIndex (const char *hostname,int hlen ){unsigned long nHash=0;while (*hostname)
nHash=(nHash<<5) nHash *hostname ;return (nHashhlen);}
域名緩存過(guò)程大致如下:使用域名首字符ASCII 碼值與域名長(zhǎng)度散列域名到哈希頭表。依照線性指針序列的下標(biāo)索引,通過(guò)遍歷雙向鏈表檢索已存在域名-IP映射緩沖結(jié)點(diǎn),若域名-IP地址映射結(jié)點(diǎn)存在于該表中,則命中,并根據(jù)LRU 策略更新該節(jié)點(diǎn)在“可用緩沖節(jié)點(diǎn)雙向鏈表”的位置,更新策略如下:如果前驅(qū)結(jié)點(diǎn)不是空閑節(jié)點(diǎn),則當(dāng)前結(jié)點(diǎn)和前驅(qū)節(jié)點(diǎn)交換位置。
若該域名-IP地址映射還未在表中,則將域名解析請(qǐng)求置入Send Queue ,請(qǐng)求DNS 客戶端解析,解析失敗則返回錯(cuò)誤代碼通知調(diào)用者,解析成功則向緩存的“可用緩沖節(jié)點(diǎn)雙向鏈表”申請(qǐng)一個(gè)空緩沖節(jié)點(diǎn),將域名域名-IP地址映射寫(xiě)入這個(gè)緩沖節(jié)點(diǎn),并將節(jié)點(diǎn)鏈接到哈希頭表相應(yīng)的節(jié)點(diǎn)所指向的雙鏈中。
如果緩存中沒(méi)有空閑節(jié)點(diǎn)了,那么將“可用緩沖節(jié)點(diǎn)雙向鏈表”中最后一個(gè)結(jié)點(diǎn)從緩沖中摘出,作為一個(gè)空閑節(jié)點(diǎn)使用,
,第11期陳言,顏晨陽(yáng):一種網(wǎng)絡(luò)爬蟲(chóng)的帶緩存非阻塞異步域名解析器模型及其性能分析
·145·
并將這個(gè)節(jié)點(diǎn)鏈接在“可用緩沖節(jié)點(diǎn)雙向鏈表”頭結(jié)點(diǎn)后面作為首結(jié)點(diǎn)。
特別要注意到,Internet 的DNS 系統(tǒng)會(huì)定期刷新,交換更新的域名和IP 的信息。普通的DNS cache 一般應(yīng)該尊重上級(jí)
DNS 服務(wù)器帶來(lái)的域名“過(guò)期”的信息,但用于爬取網(wǎng)頁(yè)的DNS cache 不一定如此,以減小開(kāi)銷(xiāo)。在我們的模型中采用這樣的策略:用定時(shí)器進(jìn)行控制,在一定的周期內(nèi)(TTL )忽略緩存中域名的過(guò)期信息,一旦一個(gè)緩沖節(jié)點(diǎn)的TTL<當(dāng)前時(shí)間-c_time,則在下次命中這個(gè)緩沖節(jié)點(diǎn)的時(shí)候,將或略這個(gè)緩沖結(jié)點(diǎn)的域名-IP映射信息,而將域名解析請(qǐng)求置入Send Queue ,解析結(jié)果成功返回時(shí),刷新這個(gè)結(jié)點(diǎn)上的域名-IP映射信息,并根據(jù)LRU 策略更新該節(jié)點(diǎn)在“可用緩沖節(jié)點(diǎn)雙向鏈
表”的位置。
2.2基于非阻塞socket 和事件處理異步DNS 客戶端
在大多數(shù)操作系統(tǒng)中,系統(tǒng)提供的DNS 客戶端均是阻塞的系統(tǒng)調(diào)用,也即不能夠做到并發(fā)DNS 解析,也就是說(shuō)不管你的爬蟲(chóng)的DNS 解析是不是多線程架構(gòu)的,在同一時(shí)間只能夠有一個(gè)線程,比如說(shuō)線程A 的DNS 解析請(qǐng)求可以執(zhí)行,其余線程的請(qǐng)求均被阻塞直到線程A 的DNS 解析請(qǐng)求得到了結(jié)果。這個(gè)特性是由于操作系統(tǒng)/語(yǔ)言本身造成的,因?yàn)樵谔峁〥NS 客戶端的時(shí)候,根本就沒(méi)有考慮到像cralwer 這樣的,需要在很短時(shí)間里解析大量域名的應(yīng)用,所以如果要?jiǎng)?chuàng)建一個(gè)有效實(shí)用的cralwer ,而非一個(gè)玩具,自己定制一個(gè)DNS 客戶端是必需的,在本文中,我們構(gòu)建了一個(gè)基于非阻塞socket 和事件處理異步DNS 客戶端。這個(gè)客戶端的構(gòu)建大體如下:為了減少等待查找涉及新主機(jī)的地址的時(shí)間,也即盡早將主機(jī)名投給DNS 系統(tǒng),cralwer 分析剛得到的網(wǎng)頁(yè),從提取主機(jī)名,向域名散列緩存服務(wù)器(name cache )提交這些主機(jī)名的DNS 解析請(qǐng)求,如果域名散列緩存服務(wù)器無(wú)法回答,那么這些解析請(qǐng)求將被置入Send Queue ,如果這個(gè)Send Queue 非空,那么“發(fā)送請(qǐng)求”線程將一直從Send Queue 中取出解析請(qǐng)求,根據(jù)RFC 1035獲取的DNS 協(xié)議的標(biāo)準(zhǔn)請(qǐng)求和回應(yīng)數(shù)據(jù)格式,構(gòu)建DNS 解析請(qǐng)求數(shù)據(jù)包,用UDP 協(xié)議,以異步非阻塞socket 向指定的DNS
Server 提出解析請(qǐng)求,線程不著等待解析的完成,發(fā)送解析請(qǐng)求后立刻返回(因此可以連續(xù)給出多個(gè)DNS 請(qǐng)求),隨后DNS 客戶端通過(guò)“輪詢/接收”線程調(diào)用select 系統(tǒng)調(diào)用來(lái)檢查完成的狀態(tài),select 可以同時(shí)監(jiān)管多個(gè)socket 的狀態(tài),調(diào)用select 的“輪詢/接收”線程將在select 調(diào)用上阻塞,直到數(shù)據(jù)可以通過(guò)socket 讀,也即DNS Server 返回了至少一個(gè)主機(jī)名解析結(jié)果或者select 等待超時(shí),如果DNS Server 返回了至少一個(gè)主機(jī)名解析結(jié)果。那么“輪詢/接收”線程將讀出結(jié)果,并根據(jù)RFC 1035獲取的DNS 協(xié)議的回應(yīng)數(shù)據(jù)格式解析數(shù)據(jù),獲取這個(gè)主機(jī)名對(duì)應(yīng)的IP 地址
。
圖4基于非阻塞Socket 和事件處理異步DNS 客戶端
特別注意到,本文中構(gòu)建的DNS 客戶端是單線程結(jié)構(gòu),但是這樣的架構(gòu)足以應(yīng)付一般中小型的crawler 的需求了,而且這樣的架構(gòu)避免了對(duì)發(fā)送隊(duì)列和準(zhǔn)備好的sockets 集合的并非訪問(wèn),而用程序的方式協(xié)調(diào)這種并發(fā)訪問(wèn)的開(kāi)銷(xiāo)可能將會(huì)非常大(線程互斥,或者進(jìn)程通信,都很復(fù)雜),可能會(huì)造成得不償失的后果。
3性能測(cè)試與對(duì)比結(jié)果
綜合以上論述,本文的在Linux 平臺(tái)下用C 語(yǔ)言開(kāi)發(fā)了一
個(gè)采用廣度優(yōu)先策略的通用爬蟲(chóng),主要目的在于測(cè)試在選定爬行策略的前提下,爬蟲(chóng)DNS 客戶端改進(jìn)以及主要瓶頸的消除所帶來(lái)的爬行效率提升。測(cè)試環(huán)境如下:Intel Core Dual (E2200),DDR4002GB (內(nèi)存),7200rpm SCSI 硬盤(pán),F(xiàn)edora
Core 8(操作系統(tǒng)),校園網(wǎng)電信(帶寬10Mbit /s )。該帶緩存非
阻塞異步域名解析器模型結(jié)構(gòu)如圖5所示
。
圖5帶緩存的異步非阻塞DNS 客戶端架構(gòu)
程序采用主機(jī)名測(cè)試集合是用爬蟲(chóng)程序獲取的隨機(jī)主機(jī)名(顯然,集合中必定有大量重復(fù)主機(jī)名),測(cè)試集合中共有
100萬(wàn)條主機(jī)名記錄。程序運(yùn)行設(shè)置如表2所示。
表2
程序運(yùn)行主要參數(shù)設(shè)置
運(yùn)行設(shè)置
緩存大小50000哈希表桶個(gè)數(shù)21911緩存策略LRU 緩存刷新周期1800s 發(fā)送隊(duì)列大小
1024
圖6顯示了2對(duì)DNS 解析效率的影響,圖7顯示了DNS 緩存的引入對(duì)DNS 解析的效率的影響,圖8顯示了同時(shí)引入異步事件處理和緩存對(duì)DNS 解析效率的影響,其中橫坐標(biāo)表示DNS 客戶端的運(yùn)行時(shí)間,以小時(shí)為單位間隔,縱坐標(biāo)為DNS
圖6緩存對(duì)DNS
客戶端性能的影響
,·146·軟件導(dǎo)刊2009年
圖7異步非阻塞架構(gòu)對(duì)DNS 客戶端性能的影響
圖8異步非阻塞架構(gòu)和緩存對(duì)DNS 客戶端的影響
客戶端的主機(jī)名解析量,以萬(wàn)次為單位??梢钥吹?,引入DNS 緩存使DNS 解析效率提升了近2-3倍,而引入異步非阻塞程序架構(gòu)也使DNS 解析效率提升了近1. 5倍左右,而帶緩存的異步非阻塞組合更是大大提升了DNS 解析效率(3-5倍),顯然,本文中提出帶緩存非阻塞異步域名解析器模型達(dá)到了原本的設(shè)計(jì)初衷。
4結(jié)束語(yǔ)
網(wǎng)絡(luò)爬蟲(chóng)自身結(jié)構(gòu)設(shè)計(jì)不良,尤其是爬蟲(chóng)的DNS 解析和網(wǎng)頁(yè)攝取的設(shè)計(jì)不良,會(huì)給爬蟲(chóng)工作效率造成極大影響。通過(guò)改進(jìn)這些模塊本身設(shè)計(jì),可以消除爬蟲(chóng)部分系統(tǒng)工作效率的瓶頸,提高爬蟲(chóng)系統(tǒng)的爬行效率。本文提出的帶緩存非阻塞異步域名解析器模型就是針對(duì)網(wǎng)絡(luò)爬蟲(chóng)DNS 解析瓶頸的兩個(gè)特性,引入了域名散列緩存(name cache )和基于非阻塞socket 和事件處理異步架構(gòu)這兩種技術(shù),并且用爬蟲(chóng)獲取的大量主機(jī)名測(cè)試集合對(duì)這個(gè)模型進(jìn)程了測(cè)試,測(cè)試表明本文提出的帶緩存非阻塞異步域名解析器模型從一定程度上提高了DNS 域名解析的效率,也顯然能夠提高爬蟲(chóng)的整體效率。參考文獻(xiàn):[1]J.CHO ,H.GARCIA -MOLINA ,L.PAGE.Efficient crawling through URL ordering [J ].Computer Ne tworks and ISDN Systems ,1998,30(17):161-172. [2]P.DE BRA ,G -J.HOUBEN ,Y.KORNATZKY ,R.Post ,Informat ion retrieval in distributed hypertexts ,in :Proceedings of RIAO'94,In -telligent Multimedia ,Information Retrieval Systems and Manage -ment ,New York ,NY ,1994. [3]M.HERSCOVICI ,M.JACOVI ,Y.S.MAAREK ,ET AL.The shark -search algorithm :an application :tailored Web site mapping [J ]. Computer Networks ,1998,30(17):317-326. [4]S.BRIN AND L.PAGE.The anatomy of a large-scale hypertextual W eb search engine [J ].Computer Networks and ISDN Systems. 1998,30(1-7):107-117. [5]S.CHAKRABARTI ,B.DOM ,AND P.INDYK.Enhanced hypertext ca tegorization using hyperlinks [C ].The ACM SIGMOD International Conference onManagement of Data.Seattle ,1998:3072318. [6]J.JOHNSON ,K.TSIOUTSIOULIKLIS.Evolving strategies for focused Web crawling [C ].Int'l Conf Machine Learning.2003. [7]A.HEYDON ,M.NAJORK.Mercator :a scalable ,extensible web crawler [J ].World Wide Web ,2:219-229,1999. [8]R.STEVENS ,S.A.RAGO.Advanced programming in the UNIX envir onment [M ].Addison Wesley ,1992. [9]D.BOVET ,M.CESATI.Understanding the linux kernel [M ].O'Reilly ,2005. (責(zé)任編輯:杜能鋼
)