我正在研究爬網程序,需要準確理解「鏈接深度」的含義。以Nutch的,例如:http://wiki.apache.org/nutch/NutchTutorialWeb Cralwer算法:深度?
深度表示從根頁面應該是 抓取的鏈接深度。
所以,說我有域www.domain.com
,並希望抓取的,比方說,3
深度 - 什麼,我需要做什麼?如果一個網站可以表示爲二叉樹,那麼我認爲這不會是一個問題。
我正在研究爬網程序,需要準確理解「鏈接深度」的含義。以Nutch的,例如:http://wiki.apache.org/nutch/NutchTutorialWeb Cralwer算法:深度?
深度表示從根頁面應該是 抓取的鏈接深度。
所以,說我有域www.domain.com
,並希望抓取的,比方說,3
深度 - 什麼,我需要做什麼?如果一個網站可以表示爲二叉樹,那麼我認爲這不會是一個問題。
鏈接深度意味着‘跳’的數量的頁面是遠離「跳躍」意味着跟隨頁面上的鏈接。Nutch有這種限制的原因是,距離主頁非常「遠」的鏈接不太可能掌握很多信息(主頁面會鏈接到最重要的信息,所以你會得到更遠的信息,更詳細的信息),雖然可能有很多,但它們會佔用大量存儲空間,計算排名時間和帶寬。
Nutch因此使用稱爲depth-limited search的算法方案來限制其運行時間和空間使用率。如果它沒有使用這種啓發式方法,那麼它將不得不抓取整個網站來對其中的所有頁面進行排名,並找到頂部的N。
要爬到深度3,請實現此算法並給它一個深度爲3的邊界。關於深度限制搜索的好處是,它是深度優先搜索(DFS)的一個變種,所以這是相當節省空間的:
function depth-limited-crawl(page p, int d)
if d == 0
return
/* do something with p, store it or so */
foreach (page l in links(p))
depth-limited-crawl(linked, d-1)
不,一個網站不能在一般表示爲二叉樹;這是一個有向圖。如果你以某種方式刪除反向鏈接,那麼它將成爲一個多路樹。無論哪種方式,許多網站都太大,無法存儲您的抓取工具。
我會嘗試深度限制搜索。在你的僞代碼中,3的邊界是如何執行的? – StackOverflowNewbie 2010-12-05 22:19:22
遞歸:你用第二個參數調用它。* d * = 0,基本大小寫,立即返回;在遞歸調用中,* d *被遞減。 – 2010-12-06 10:40:25
鏈接深度意味着您在到達給定鏈接之前必須遵循多少鏈接。
示例:example.com鏈接到example.com/foo.html,鏈接到google.com。因此,google.com的鏈接深度爲2,相對於example.com,您可以通過2個鏈接訪問它。
要將example.com抓取到3的深度,您需要遵循指向最大深度爲3的鏈接,然後停止關注鏈接。沒有這個限制,你可以輕鬆地繼續下去。
示例:example.com鏈接到example.com/foo.html和example.com/bar.html。你遵循這兩個鏈接,他們鏈接到的鏈接,並停在那裏。
注:根頁有0
深度Web站點的根是在深度0的文檔,你可以通過使用根鏈路到達處於深度1.文檔您可以依次地到達在深度爲1的文檔中的鏈接將在深度2處。依此類推。
根據您的履帶,這可能僅適用於文件在同一個站點/域(通常)或文檔在其他地方舉行。
大多數網站不能用二叉樹表示,因爲「根」可能有兩個以上的「節點」。
我猜「深度」是時代的履帶式「跟隨鏈接」的數量。
假設你從根頁面開始。你跟每個此頁面上的鏈接:這是深度1.對於每個目標頁面,你按照鏈接:這是深度2等
注意,有可能是「循環」,而下面的鏈接。結構不是一棵樹,而是一張圖。
www.domain.com, depth 0
到其關閉它你是指FIFO隊列嗎?這是深度限制搜索,因此可以使用堆棧更高效地完成搜索。 – 2010-12-05 00:08:14
那麼在Nutch的情況下,深度參數是一個相當混亂的東西,它只是意味着爬網程序正在經歷的循環次數。因此,你會到達距離你的種子網站3個鏈接的頁面......在一個給定的網站上,它可能在深度3 ......也就是說,如果他們提出的是在最高N限制內。
深度斜槓的URL路徑的數量
例如http://www.google.com/foo/bar/baz有3
def depth(self,link):
return len(urlparse.urlparse(url).path.split("/")) -1
你說一個網站可以表示爲一個二叉樹的深度,但我認爲它可能是以圖形表示,因爲鏈接可以彼此鏈接超過一次而彼此交叉。你甚至可能有死鏈接,從來沒有鏈接到任何其他頁面,但只有它自己。所以我們可以將網站或互聯網視爲我認爲的圖表。 – themis 2012-11-28 09:34:26