好的,所以我开始 Bing 搜索,然后检索几个结果 url,并使用它们作为起点来遍历其他页面,解析它们的链接并将它们添加到列表中。
我遇到的问题是,我不想访问同一个域两次。我可以阻止它访问相同的 URL,但如果一个页面链接到网站的另一部分(例如关于页面),我不能。目前,我有一个 LinkedList,每次使用 Jsoup 从文档中解析一个 URL 时,我都会在其中添加一个 URL。我有一个 HashMap 用于存储已经访问过的 URL。因此,我将其设置为这样的基本“如果”:
if(!urlsVisited.containsKey(url))
{
urlsToVisit.add(url);
urlsVisited.put(url, url);
}
这是在一个 for 循环中,我在其中检索每个页面上的链接(当前 4 个线程处理 4 个页面)。
这会阻止它两次添加“ http://www.stackoverflow.com ”之类的内容,但如果我遇到“ http://www.stackoverflow.com/questions/ask ”则不起作用。
我想从 StackOverflow 添加一个链接(例如),然后使用该域完成。有任何想法吗?
我在 Java 中使用 Jsoup api 来解析结果。