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

时间:2017-09-16 08:37:19

标签: javascript jquery html

我正在寻找递归查找任何给定网站上的所有链接的方法。我知道如何在java中执行此操作,但我不知道如何使用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

3 个答案:

答案 0 :(得分: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,因为它不是绝对的(但我认为它在我的代码中)。等等。

答案 1 :(得分:-1)

在js getElementsByTagName(“a”)

https://developer.mozilla.org/en-US/docs/Web/API/Element/getElementsByTagName

在jquery $(“a”)

答案 2 :(得分:-1)

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

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

希望它有所帮助。如果你更详细地阐述你的问题,那将会很棒。