20

Jsoupを使用して Web ページの URL を抽出しています。hrefこれらの URL の属性は、次のように相対的です。

<a href="/text">example</a>

これが私の試みです:

Document document = Jsoup.connect(url).get();
Elements results = document.select("div.results");
Elements dls = results.select("dl");
for (Element dl : dls) {
    String url = dl.select("a").attr("href");
}

これは正常に動作しますが、使用すると

String url = dl.select("a").attr("abs:href");

のような絶対URLを取得するのhttp://example.com/textはうまくいきません。絶対URLを取得するにはどうすればよいですか?

4

2 に答える 2

19

が必要Element#absUrl()です。

String url = dl.select("a").absUrl("href");

ちなみに、選択を短くすることができます:

Document document = Jsoup.connect(url).get();
Elements links = document.select("div.results dl a");
for (Element link : links) {
    String url = link.absUrl("href");
}
于 2010-11-10T15:37:50.917 に答える
9

String url = dl.select("a").absUrl("href");

は不正解ですdl.select("a")。単一のアイテムではなくコレクションを返します。インデックスで要素を取得する必要があります

例:

Elements elems = dl.select("a");
Element a1 = elems.get(0); //0 is the index first element increasing to (elems.size()-1)
now you can do
a1.absUrl("href");

上記の選択の結果が 1 つの項目のみであることが確実な場合、または必要な項目が最初になることが確実な場合は、次のことができます。

String url = dl.select("a").get(0).absUrl("href"); 

これも同じです

String url = dl.select("a").first().absUrl("href");

とにかく最初の要素である必要はありません。いつでも 0 を String url = dl.select("a").get(0).absUrl("href");要素のインデックスに置き換えることができます。または、1 つの要素のみになる、より具体的な選択を使用します。

于 2012-03-22T22:11:14.500 に答える