web-dev-qa-db-ja.com

Jsoup:画像の絶対URLを取得する方法?

リンクの絶対URLを取得できるように、画像の絶対URLを抽出する方法はjsoupにありますか?

http://www.example.com/にある次の画像要素を検討してください

<img src="images/chicken.jpg" width="60px" height="80px">

http://www.example.com/images/chicken.jpgを受け取ります。私は何をすべきか?

36
r0u1i

画像要素を取得したら、例えば:

Element image = document.select("img").first();
String url = image.absUrl("src");
// url = http://www.example.com/images/chicken.jpg

または:

String url = image.attr("abs:src");

Jsoupには、すべてのノードに組み込みの absUrl() メソッドがあり、ノードのベースURL(ドキュメントの取得元のURLとは異なる場合があります)を使用して、属性を絶対URLに解決します。

Working with URLs jsoupのドキュメントもご覧ください。

67
Jonathan Hedley
Document doc = Jsoup.connect("www.abc.com").get();
Elements img = doc.getElementsByTag("img");
for (Element el : img) {
String src = el.absUrl("src");
System.out.println("Image Found!");
System.out.println("src attribute is : "+src);
getImages(src);
}
10
Gaurab Pradhan

http://www.example.com/index.htmlを解析しているとしましょう。

Jsoupを使用して、次のようなimg srcを抽出します:images/chicken.jpg

次に、 [〜#〜] uri [〜#〜] クラスを使用して、これを絶対パスに解決します。

URL url  = new URL("http://www.example.com/index.html");
URI uri = url.toURI();
System.out.println(uri.resolve("images/chicken.jpg").toString());

プリント

http://www.example.com/images/chicken.jpg
2
dogbane

これはdivクラス内にある可能性があるため、コードは次のようになります(例としてのみ)

System.out.println(doc.select("div.ClassName image").attr(src));
0
PHPFan