2017-09-16 51 views
0

我正在尋找遞歸方式來查找任何給定網站上的所有鏈接。我知道如何在java中做到這一點,但我不知道如何使用JavaScript來完成。如何以遞歸方式獲取使用Javascript的網站中的所有鏈接?

Consider this image代表一個網站目錄,如果我們提供「www.abc.com」,那麼它應該返回下面的輸出。


www.abc.com\images 
www.abc.com\files 
www.abc.com\images\a.jpg 
www.abc.com\images\b.jpg 
www.abc.com\files\aa.txt 
www.abc.com\files\bb.txt 
+1

你想收集來自第一頁的所有鏈接,然後跟着他們,如果他們都指向同一個基地的網站地址,並繼續收集那裏等?或者你的意思是遞歸的。 – cars10m

+0

到底!我想收集該網站中具有相同基本網站地址的所有鏈接。依此類推。 – Naresh

+0

與nodeJs?還是直接從用戶的瀏覽器? – Salketer

回答

0

由於這個問題被標記的jQuery,我會使用它。只需定位a標籤即可。

var linksList = []; 
function addLink(url){ 
    if(url!= "" && linksList.indexOf(url) == -1){ 
     links.list.push(url); 
     scrapePage(url); 
    } 
} 
function scrapePage(url){ 
    $.get(url,function(html){ 
     var $iframe = $('body').append('iframe'); 
     $iframe.contents().find("body").html(html); 
     $iframe.contents().find("body a").each(function(index,link){ 
      addLink(link.href); 
     }); 
     $iframe.remove(); 
    }); 
} 
$("body a").each(function(index,link){ 
    addLink(link.href); 
}); 

很簡單,添加鏈接在我們列表中的功能,另外跟隨我們添加的鏈接。我決定把刮下頁面的內容的iframe內把一切都剋制......

你要添加的邏輯,以確保它只需是從域鏈接。您可能需要使用URL,因爲它不會是絕對的(但認爲它在我的代碼中)。等等。

+0

我說遞歸。這意味着我希望該網站上的所有鏈接包括其子頁面中的鏈接等等,直到發現所有鏈接。 「遞歸地」 – Naresh

+1

並不意味着......你應該花一些時間來澄清你的問題。 – Salketer

-1

我認爲你不能得到一個特定網站的所有鏈接。但你可以得到像下面這樣的特定頁面的所有鏈接: -

var allLinks = document.getElementsByTagName("a"); 

希望它有幫助。如果你更詳細地闡述你的問題,那將會很棒。

+0

我不確定,但您可以嘗試http://www.nightmarejs.org/獲取網站的所有鏈接。 –

相關問題