gpt4 book ai didi

java - Java中递归地从网页中检索链接

转载 作者:行者123 更新时间:2023-12-02 07:33:36 25 4
gpt4 key购买 nike

我正在开发一个简化的网站下载器(编程作业),我必须递归地浏览给定 URL 中的链接并将各个页面下载到我的本地目录。

我已经有一个函数可以从单个页面检索所有超链接(href 属性),Set<String> retrieveLinksOnPage(URL url) 。该函数返回一个超链接 vector 。我被告知要下载最高级别 4 的页面。(级别 0 是主页)因此我基本上想检索站点中的所有链接,但我很难想出递归算法。最后,我打算这样调用我的函数:

retrieveAllLinksFromSite("http://www.example.com/ldsjf.html",0)

Set<String> Links=new Set<String>();
Set<String> retrieveAllLinksFromSite (URL url, int Level,Set<String> Links)
{
if(Level==4)
return;
else{

//retrieveLinksOnPage(url,0);
//I'm pretty Lost Actually!
}

}

谢谢!

最佳答案

这是伪代码:

Set<String> retrieveAllLinksFromSite(int Level, Set<String> Links) {
if (Level < 5) {
Set<String> local_links = new HashSet<String>();
for (String link : Links) {
// do download link
Set<String> new_links = ;// do parsing the downloaded html of link;
local_links.addAll(retrieveAllLinksFromSite(Level+1, new_links));
}
return local_links;
} else {
return Links;
}

}

您需要自己实现评论中的内容。要从给定的单个链接运行该函数,您需要创建一组初始链接,其中仅包含一个初始链接。但是,如果您有多个初始链接,它也适用。

Set<String> initial_link_set = new HashSet();
initial_link_set.add("http://abc.com/");
Set<String> final_link_set = retrieveAllLinksFromSite(1, initial_link_set);

关于java - Java中递归地从网页中检索链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12593686/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com