Jsoup: как получить абсолютный URL-адрес изображения?

Есть ли способ в jsoup извлечь абсолютный URL-адрес изображения, как можно получить абсолютный URL-адрес ссылки?

Рассмотрим следующий элемент изображения, найденный в http://www.example.com/

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

Я хотел бы получить http://www.example.com/images/chicken.jpg. Что я должен делать?


person r0u1i    schedule 02.02.2011    source источник


Ответы (3)


Когда у вас есть элемент изображения, например:

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-адреса, с которого был получен документ).

См. также документацию jsoup Работа с URL-адресами.

person Jonathan Hedley    schedule 02.02.2011
comment
Я пробовал это, и это не сработало (вернуло пустую строку) по какой-то причине (в отличие от link.attr(abs:href) который работал) - person r0u1i; 03.02.2011
comment
Это странно. Можете ли вы опубликовать (или отправить мне по электронной почте) образец того, что он не работает для вас? Я только что добавил пройденный тестовый пример, чтобы убедиться, что он работает: - person Jonathan Hedley; 03.02.2011
comment
Извините, после дополнительного расследования это была моя вина. Теперь работает, извините за недоразумение. - person r0u1i; 17.02.2011
comment
@JonathanHedley Привет, у меня проблема с получением URL-адреса, не могли бы вы ответить на мой вопрос, если вы доверяете мне? Заранее спасибо. stackoverflow.com/ вопросы/36373775/ - person Farid; 02.04.2016
comment
При использовании документа jsoup с уже загруженным html мы должны сначала установить doc.setBaseUri(..), чтобы он работал. - person Gayan Weerakutti; 20.10.2016

Предположим, вы анализируете 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
person dogbane    schedule 02.02.2011

Это может быть внутри класса div, поэтому код будет таким (только в качестве примера)

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