0

Bing 検索を開始し、結果の URL をいくつか取得し、それらを開始点として使用して他のページを走査し、それらからリンクを解析してリストに追加します。

私が抱えている問題は、同じドメインに 2 回アクセスしたくないということです。同じ URL にアクセスしないようにすることはできますが、ページに Web サイトの別の部分 (About ページなど) へのリンクがある場合はできません。現在、Jsoup を使用してドキュメントから URL を解析するたびに URL を追加する LinkedList があります。また、既にアクセスした URL を格納するための HashMap があります。したがって、次のような基本的な「if」で設定しました。

if(!urlsVisited.containsKey(url))
{
    urlsToVisit.add(url);
    urlsVisited.put(url, url); 
}

これは、各ページのリンクを取得する for ループにあります (現在、4 つのページを処理する 4 つのスレッド)。

これにより、「 http://www.stackoverflow.com 」のようなものが 2 回追加されなくなりますが、「 http://www.stackoverflow.com/questions/ask 」に遭遇した場合は機能しません。

StackOverflow (たとえば) から 1 つのリンクを追加して、そのドメインで作業を完了したいと考えています。何か案は?

結果を解析するために Java で Jsoup API を使用しています。

4

2 に答える 2

2

クラスを使用URIして URL を解析できます。Set<String>訪問したドメインを保存するために使用することもお勧めします。

Set<String> urlsVisited = new HashSet<String>();
...

String domain = new URI(url).getHost();
if(!urlsVisited.contains(domain))
{
    urlsToVisit.add(url);
    urlsVisited.add(domain); 
}
于 2013-04-04T17:38:47.970 に答える