牛率仁
摘要:爬蟲策略是主題爬蟲的核心模塊,其策略的目的在于高效的抓取到更多與主題相關(guān)的頁面,同時又過濾與主題無關(guān)的頁面。該文主要對面向主題的爬蟲項目需求進行研究,提出了分層的系統(tǒng)框架,并詳細介紹了框架架構(gòu)以及各個模塊的設(shè)計,最后給出系統(tǒng)的運行結(jié)果截圖,初步達到了預(yù)期的效果。
關(guān)鍵詞:網(wǎng)絡(luò)爬蟲;功能模塊;設(shè)計
主題的相關(guān)性是非常核心的模塊,它決定了抓取到網(wǎng)頁是否與主題相關(guān),抓取到網(wǎng)頁質(zhì)量好壞等,可以說主題的相關(guān)性算法決定了面向主題網(wǎng)絡(luò)爬蟲的好壞,下面簡單介紹一下各個模塊的設(shè)計。
1頁面爬取模塊設(shè)計
當前的主題網(wǎng)絡(luò)爬蟲主要有基于內(nèi)容的Fish-Search,Shark-Search策略,以及基于鏈接分析的PageRank方法,HITS算法等。
在這些算法的核心思想中,它們總是傾向于抓取有較高相關(guān)度頁面下的鏈接頁面,然后直接丟掉相關(guān)度較低的頁面,這樣導(dǎo)致的一個問題就是爬蟲會在一個局部的范圍內(nèi)跳轉(zhuǎn),無法覆蓋多的頁面。抓取的深度的不夠,無法覆蓋更多的信息,而且其沒有考慮鏈接的權(quán)重的不同,導(dǎo)致爬蟲的效率比較低下。
1.1隧道問題
通過我們對以上的爬蟲搜索策略算法的分析指出,對于與主題相關(guān)的網(wǎng)頁主要的爬取頁面的來源,而對于與主題無關(guān)的網(wǎng)頁,一般會選擇丟棄。從總體來說,這種策略能夠迅速的抓取到與主題相關(guān)的頁面,但是其存在的一個風(fēng)險就是,可能會間接丟棄大量與主題相關(guān)的頁面。
隧道現(xiàn)象會導(dǎo)致召回(recall)不夠理想,無法滿足信息的覆蓋程度,對應(yīng)垂直搜索引擎來說,可能會導(dǎo)致信息沒法全面收集的問題,無法完全滿足用戶的需求。因此,如何在保證頁面相關(guān)度的情況下,高效的抓取到更多與主題相關(guān)的頁面是當前的研究重點。
1.2站點權(quán)重問題
基于鏈接分析的搜索策略中,根據(jù)考慮了各個鏈接的,該算法給所有的網(wǎng)頁的頁面設(shè)計了一個權(quán)值,作為該頁面的重要性的衡量。一般情況下都需要抓取足夠量的網(wǎng)頁以后,該權(quán)值才能客觀的反應(yīng)該頁面權(quán)重。
傳統(tǒng)的爬蟲策略中并沒有考慮站點或者子域名的級別特性,這樣有可能導(dǎo)致的問題,爬蟲程序沒法聚焦抓取相關(guān)主題的網(wǎng)頁。
2頁面搜索模塊設(shè)計
2.1算法思想改進
通過分析現(xiàn)在爬蟲策略算法的思想,以及存在覆蓋率不足的問題,結(jié)合內(nèi)容以及鏈接分析提出一種高效的算法,通過改善當前爬蟲策略中存在的覆蓋度不夠的問題,高效的抓取更多的與主題相關(guān)的頁面。下面講述我們改進后爬蟲搜索策略,在的算法主要解決兩個問題:1)隧道問題,2)如何抓取到更多與主題相關(guān)的頁面。
2.1.1隧道問題
我們以search-fish的算法思想作為基礎(chǔ),通過引進設(shè)定深度閾值D,給予主題低相關(guān)度或者沒相關(guān)的頁面的鏈接一定的深度訪問機會,來解決隧道問題。
我們給初始的節(jié)點設(shè)置一個初始的深度閾值D,同時設(shè)定一個相關(guān)度閾值T,如果頁面i相關(guān)度relate大于T,則該頁面的鏈接將會的深度閾值會提升,也就是說,后續(xù)從該頁面的鏈接出去的鏈接有更大的空間允許其鏈接到不相關(guān)的頁面;
相反如果如果頁面i相關(guān)度relate低于T,則該頁面的鏈接將會的深度閾值會降低,從該頁面的解析出去的鏈接有能夠鏈接到不相干的頁面深度則會降低,盡管如此,但是仍然有機會能夠穿越隧道,找到隱藏在后面的網(wǎng)頁信息。
2.1.2抓取引進站點的質(zhì)量評價指標
權(quán)重表本質(zhì)上就是衡量該站點(子站點)與主題相關(guān)程度,如果該站點與主題越相關(guān),下一次遇到該站點相關(guān)頁面,那么我們的算法會給該頁面有更優(yōu)先的爬取權(quán)重。同時我們借鑒了鏈接的分析方法,我們?nèi)哉J為一個站點的質(zhì)量同時也決定了該站點下的網(wǎng)頁的質(zhì)量,通過給了網(wǎng)站一定的置信值,確保不同站點有不同的衡量置信區(qū)間,因此可以保證在數(shù)據(jù)冷啟動的時候,爬取策略就有了一定的區(qū)分度。
在爬蟲搜索算法策略中,包括:①初始化設(shè)計URL列表種子;②設(shè)計站點列表權(quán)重;③設(shè)計改進搜索策略算法。
2.2初始化URL列表種子
URL種子搜集的目的在于給定主題的情況下,盡可能的爬取到高質(zhì)量的URL種子。URL種子是整個爬取過程的起始點,因此這些種子的質(zhì)量跟數(shù)量決定了接下來的整個爬蟲性能表現(xiàn)。在文獻認為,一個相關(guān)主題頁面所包含的鏈接比一般的鏈接更加呈現(xiàn)相關(guān)性。因此種子初始化對整個爬蟲效果有著極為重要的意義。
一般來說,初始化的種子集合就是主題爬蟲啟動時候使用抓取的頁面。
初始種子集是面向領(lǐng)域主題爬蟲爬取主題頁面開始遍歷鏈接的集合,好的初始化種子集合可以大大的提升總體爬蟲的準確率以及效率,因此一般情況下,都會選取比較知名的大型網(wǎng)站,這樣可以保證信息足夠豐富,更容易抓取到優(yōu)質(zhì)的資源。
目前常用的方法有采用人工方法,收集網(wǎng)絡(luò)上某個主題的鏈接,比如從門戶網(wǎng)站的各個網(wǎng)站,另外包括一些垂直的網(wǎng)站。
在則使用了半自動化的方式產(chǎn)生初始化列表種子,使用的方法如下:
1)使用與主題相關(guān)keyword發(fā)送到百度或者谷歌搜索引擎中,然后抓取topK的頁面,對這些頁面的鏈接進行解析,提取該頁面的站點,值得注意的是,在對這些站點保留到子域名。比如新浪網(wǎng)站下面有很多欄目,比如體育,新聞,女性等等,因此對于我們的主題爬蟲,是希望保留到至少二級目錄一下的,比如對于這樣的http://sports.sina.com.cn/g/premierleague/鏈接,我們保留的起始站點是sports.sina.com.cn,而不是sina.com.cn;
2)另外人工從導(dǎo)航站點中抓取一批質(zhì)量較好的垂直網(wǎng)站作為補充的一種重要方式,比如haol23.baidu.oom等導(dǎo)航站點。
2.3建立站點級別的權(quán)重表
站點權(quán)重表就是由一批主題相關(guān)的抓取站點所構(gòu)成的表,同時這張表要支持快速的查詢以及更新,因此在本算法中,使用哈希表存儲權(quán)重表。
權(quán)重表本質(zhì)上就是衡量該站點(子站點)與主題相關(guān)程度,如果該站點與主題越相關(guān),下一次遇到該站點相關(guān)頁面,那么我們的算法會給該頁面有更優(yōu)先的爬取權(quán)重。
同時我們借鑒了鏈接的分析方法,我們?nèi)哉J為一個站點的質(zhì)量同時也決定了該站點下的網(wǎng)頁的質(zhì)量,通過給了網(wǎng)站一定的置信值,確保不同站點有不同的衡量置信區(qū)間,因此可以保證在數(shù)據(jù)冷啟動的時候,爬取策略就有了一定的區(qū)分度。
哈希表也叫散列表,其將某個key值映射到哈希表中的存儲位置,實現(xiàn)數(shù)據(jù)快速查詢訪問。哈希表結(jié)合了鏈表及數(shù)組的優(yōu)點,在軟件設(shè)計領(lǐng)域有著極為重要的應(yīng)用。如果哈希表設(shè)計合理的話,可以在(1)的時間復(fù)雜度內(nèi)實現(xiàn)數(shù)據(jù)的快速查找。哈希表設(shè)計的關(guān)鍵在于找到一個好的散列函數(shù),使散射地址足夠分散,最大程度的避免碰撞的發(fā)生。
2.4鏈接的rank
在頁面的鏈接中,往往都包含了錨文本以及鏈接信息,其本質(zhì)用簡短的語言對該鏈接進行描述。
我們以圖1的新浪體育的頁面為例,其中每個文本下面都是鏈接信息,因此在中,我們針對錨文本計算了與主題的相關(guān)度,從而避免了在同個頁面下,無法區(qū)分出各個鏈接的權(quán)重的問題。
3主題相關(guān)性計算模塊設(shè)計
向量空間模型fVectorSpaceModels)雖然將網(wǎng)頁表示成key-word的空間向量,大大簡化了計算的復(fù)雜度,算法實現(xiàn)簡單,因此得到了大規(guī)模的應(yīng)用,在考慮實際的需求以后,沿用向量空間模型作為主題相關(guān)性算法,根據(jù)我們的研究發(fā)現(xiàn),該算法主要存在以下的問題:
1)向量空間模型只考慮了詞頻信息,它認為頁面的詞語對該文的主題的影響都是獨立的,而且其認為一個網(wǎng)頁中詞語的順序并不重要,而只與詞頻有關(guān)系。而向量空間模型的TF-IDF計算法方法只考慮了keyword的頻次信息,沒有考慮位置因素,因此在表征主題信息上是有一定的缺陷的。
2)詞性問題,根據(jù)我們的常識,在一篇文章中,我們會發(fā)現(xiàn)形容詞跟名詞更能表達文章的主題,比如“籃球”,“足球”,“踢球”對應(yīng)體育類,而形容副詞則對主題的意義不是很大,如“很多”,“好不好”,則很難表達什么主題,因此假如能夠知道每個keyword的詞性,那邊我們便可以通過給不同點詞性增加不同的權(quán)重,這樣讓主題識別更準確。
3)效率問題,在傳統(tǒng)的向量空間模型中,一個keyword就是一個維度,如果一篇文章有幾萬個詞,就有幾萬維,采用余弦定律計算頁面與主題的相關(guān)度,則在效率上存在較大的問題,因此可以通過剔除一些停留詞降低維度。