我正在寻找递归查找任何给定网站上的所有链接的方法。我知道如何在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
答案 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");
希望它有所帮助。如果你更详细地阐述你的问题,那将会很棒。