如何使用Javascript递归地获取网站中的所有链接?

如何使用Javascript递归地获取网站中的所有链接?,javascript,jquery,html,Javascript,Jquery,Html,我正在寻找一种方法,递归地查找任何给定网站上的所有链接。我知道如何在java中实现这一点,但我不知道如何使用javascript实现这一点 表示一个网站目录,如果我们提供“www.abc.com”,那么它应该返回以下输出 因为问题被标记为jQuery,所以我将使用它。只需将a标记作为目标 var linksList = []; function addLink(url){ if(url!= "" && linksList.indexOf(url) == -1){

我正在寻找一种方法,递归地查找任何给定网站上的所有链接。我知道如何在java中实现这一点,但我不知道如何使用javascript实现这一点

表示一个网站目录,如果我们提供“www.abc.com”,那么它应该返回以下输出



因为问题被标记为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,因为它不是绝对的(但考虑到它在我的代码中)。等等。

在js getElementsByTagName(“a”)中


在jquery$(“a”)

中,我认为您无法获得特定网站的所有链接。但您可以获得特定页面的所有链接,如下所示:-

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

希望能有帮助。如果您能更详细地阐述您的问题,那就太好了。

您想从第一页收集所有链接,然后跟踪它们,如果它们指向相同的基本网站地址并继续在那里收集,等等?或者你是什么意思,递归地,准确地说!我想收集该网站中存在的具有相同基本网站地址的所有链接。等等。是否使用nodeJs?或直接从用户浏览器?直接从用户浏览器。让我们把它看作是一个网页,你可以输入任何网站的URL,它将显示网站中所有的链接。如果链接是用JavaScript实现的,而不是用“代码> <代码>标签,或者它们是动态添加和异步添加的?”我递归地说。这意味着我希望所有的链接都出现在那个网站上,包括它的子页面中的链接,等等,直到所有的链接都被发现为止。“递归”并不意味着。。。你应该花些时间澄清你的问题。我不确定,但你可以尝试获取网站的所有链接。
var allLinks = document.getElementsByTagName("a");