南京航空航天大學(xué) 周 萍
?
基于關(guān)鍵詞的主題網(wǎng)絡(luò)爬蟲
南京航空航天大學(xué) 周 萍
【摘要】通常來說,用戶從搜索引擎獲取的網(wǎng)頁中,大部分都是不符合特定需求的,只有一小部分才是想要的結(jié)果。網(wǎng)絡(luò)爬蟲在搜索引擎中扮演著重要的角色,起著關(guān)鍵性的作用。本文主要講述了基于關(guān)鍵詞的網(wǎng)絡(luò)爬蟲,通過使用相關(guān)性決策機制和本體的知識來設(shè)計出最合適的爬蟲抓取路徑。和傳統(tǒng)的網(wǎng)絡(luò)爬蟲相比較,本文設(shè)計的爬蟲具有最優(yōu)性,并通過高準(zhǔn)確性來提高搜索效率。
【關(guān)鍵詞】網(wǎng)絡(luò)爬蟲;基于特定主題的網(wǎng)絡(luò)爬蟲;本體;關(guān)鍵詞;知識路徑
網(wǎng)絡(luò)爬蟲主要下載主題相關(guān)的網(wǎng)頁或者滿足用戶需求的特定網(wǎng)頁,而不是像傳統(tǒng)的搜索引擎那樣下載整個Web網(wǎng)頁庫。因此,主題爬蟲的基本要求是選擇那些滿足用戶需求的網(wǎng)頁。鏈接分析算法和網(wǎng)頁排序算法一樣,通常根據(jù)URLs的相關(guān)性和搜索策略對URLs進行排序,然后優(yōu)先下載那些特定網(wǎng)頁。
本文提出了基于關(guān)鍵詞的主題網(wǎng)絡(luò)爬蟲算法,該算法是根據(jù)優(yōu)先級和領(lǐng)域本體找出網(wǎng)頁的URLs 。此外,知識路徑在尋找主題相關(guān)網(wǎng)頁中也發(fā)揮著重要的作用。
網(wǎng)絡(luò)爬蟲是搜索引擎的重要模塊。在傳統(tǒng)的網(wǎng)絡(luò)爬蟲中,將種子URL作為爬蟲工作的初始URL。在分析了種子URL的網(wǎng)頁內(nèi)容之后,爬蟲開始下載網(wǎng)頁,然后抽取出所有的超鏈接,并把這些鏈接存儲到URL隊列中,遞歸執(zhí)行上述過程,直到獲得了相關(guān)結(jié)果。
網(wǎng)絡(luò)爬蟲的關(guān)鍵問題就是從web中只下載重要的網(wǎng)頁,然后分析這些網(wǎng)頁中URL的優(yōu)先級,并根據(jù)優(yōu)先級放到URL隊列中的合適位置。網(wǎng)路爬蟲的兩大問題如下所示:(1)計算爬蟲抓取的網(wǎng)頁的優(yōu)先級;(2)設(shè)計爬蟲抓取網(wǎng)頁的爬行策略。
1.1背景
如今網(wǎng)絡(luò)的規(guī)模越來越大,信息的更新率變快。網(wǎng)絡(luò)擁有大量的數(shù)據(jù)信息,所以爬蟲需要根據(jù)URL的優(yōu)先級來下載滿足需求的網(wǎng)頁。
爬蟲根據(jù)領(lǐng)域知識下載一小部分網(wǎng)頁,這些網(wǎng)頁的大部分內(nèi)容是主題相關(guān)的,因此沒有必要從網(wǎng)上下載所有的網(wǎng)頁。網(wǎng)頁內(nèi)容的主題重要度主要取決于鏈接和被訪問量。因此,很有必要提出一個可靠的爬蟲算法。
1.2爬蟲算法的研究設(shè)計及具體步驟
爬蟲算法的基本步驟是將URLs種子隊列作為輸入,然后重復(fù)執(zhí)行分布式的步驟。從地址列表中取出某個地址,確認該地址的主機名,然后將網(wǎng)頁翻譯成對應(yīng)的文檔信息,接著抽取出其中的超鏈接。對于每一個被抽取的鏈接,檢查它們的絕對地址,并把它們添加到URLs的列表中,前提是它們之前沒有被訪問過。該算法規(guī)則需要一個組件來存儲下載的URLs隊列。
此外,還需要將主機地址解析成以下三部分:(1)一部分用來下載文檔;(2)一部分用來從超文本標(biāo)記語言中抽取超鏈接;(3)一部分用來判斷該地址之前是否被訪問過。
本文設(shè)計的爬蟲算法主要分六步,具體步驟如下所示:(1)選擇一個URL種子作為算法的輸入;(2)構(gòu)造本體知識樹,并找出知識路徑;(3)下載初始輸入URL對應(yīng)的網(wǎng)頁;(4)從下載的網(wǎng)頁中抽取出超鏈接內(nèi)容,并把它們插入到URL隊列中;(5)挖掘更多的主題相關(guān)的URL,下載該URL對應(yīng)的網(wǎng)頁,并從中抽取出超鏈接,最后把這些超鏈接插入到URL隊列中;(6)重復(fù)上述步驟,獲得更多的主題相關(guān)的結(jié)果。
2.1實驗結(jié)果
基于關(guān)鍵詞的主題網(wǎng)絡(luò)爬蟲和傳統(tǒng)的網(wǎng)絡(luò)爬蟲分別作了對比實驗。實驗中,軟件系統(tǒng)和硬件環(huán)境是不變的。分別比較網(wǎng)絡(luò)爬蟲的關(guān)鍵詞有本體和沒有本體這兩種情況。
實驗中用到的參數(shù)是:Depth for looking out=2;Number of thread=5;Initial seed=1;Seed universal resource locator is=http:// www.google.com;Concept in ontology=Java。
基于相同的軟件系統(tǒng)和硬件環(huán)境,實驗獲得的結(jié)果如表2.1所示:
表2.1 兩種爬蟲系統(tǒng)的比較
2.2本體和知識路徑
本體是結(jié)構(gòu)信息的其中一項技術(shù),它也叫樹或者圖。本體將信息系統(tǒng)進行分層設(shè)置,分層的結(jié)構(gòu)是一個有向無環(huán)圖(directed acyclic graph ,DAG)。參考本體根據(jù)不同的關(guān)聯(lián)關(guān)系設(shè)置了“is a”,“has a”,“part of”。本體被用來構(gòu)造信息和過濾信息。
假設(shè)本體結(jié)構(gòu)如圖2.1所示,其中包括不同的結(jié)點以及相互之間的聯(lián)系,這些聯(lián)系代表了結(jié)點之間的關(guān)系。
本體結(jié)構(gòu)類似于Google網(wǎng)頁目錄的分層目錄結(jié)構(gòu)。假如尋找“java”,知識路徑是:Branch->computer->programming-> java。爬蟲根據(jù)這條URL開始抓取網(wǎng)頁,初始的URL種子是:http://www. google.com。在下載網(wǎng)頁之后,從頁面內(nèi)容中尋找可用的鏈接(比如U1,U2……Un),然后把這些鏈接加入到URL隊列中。這些鏈接U1,U2……Un需要被檢查是否和關(guān)鍵詞相匹配,爬蟲的知識路徑就是由這些關(guān)鍵詞組成的。第二條URL是:http://www.google. com/references/computer.html,其中包含關(guān)鍵詞“computer”,和圖的第一層級的結(jié)點相匹配。第三條URL是:http://www.google.com/ references/computer/programming.html第四條URL是:http://www. google.com/references/computer/programming/java.html
上述算法不能通過“art”或者其他分支來找到目標(biāo)節(jié)點“java”,因為父母結(jié)點“Computer”和“java”相關(guān)。
相較于其他網(wǎng)絡(luò)爬蟲來說,使用基于關(guān)鍵詞的主題網(wǎng)絡(luò)爬蟲的優(yōu)點是智能性、高效性、不需要關(guān)聯(lián)性反饋。本文提出的爬蟲算法減少了爬蟲抓取網(wǎng)頁的數(shù)量,因此爬蟲抓取的時間變少,這是因為爬蟲只下載主題相關(guān)的網(wǎng)頁。 主題網(wǎng)絡(luò)爬蟲的目的就是獲取主題相關(guān)的網(wǎng)頁,舍棄主題無關(guān)的網(wǎng)頁。本文設(shè)計了基于最佳知識路徑的爬蟲的本體,本體通過關(guān)聯(lián)決策機制來獲取網(wǎng)頁。和傳統(tǒng)的爬蟲相比較,本文提出的爬蟲具有如下優(yōu)勢:(1)從下載的網(wǎng)頁中獲取URLs的數(shù)目變少;(2)爬蟲的抓取時間變少。
圖2.1 本體的結(jié)構(gòu)