2011-02-02 3 views
31

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

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

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

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

ответ

60

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

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 Working with URLs.

+1

Я пробовал это, и он не работал (возвратил пустую строку) по какой-то причине (в отличие от link.attr («abs: href»), который работал) – r0u1i

+0

Это странно. Можете ли вы опубликовать (или отправить мне по электронной почте) образец, который не работает для вас? Я просто добавил прохождение тестового примера, чтобы подтвердить, что он работает: https://github.com/jhy/jsoup/commit/c659826cc45517535253fc59791fc53af95b5f9f –

+0

Извините, после большего расследования это была моя ошибка. Сейчас это работает, извините за недоразумение. – r0u1i

2

Предположим, вы разобрали http://www.example.com/index.html.

Использование jsoup для извлечения СРК IMG, который дает вам: 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 
+0

хорошо для меня. Благодарю. – r0u1i

+0

Очень полезно, спасибо – Ankur

6
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); 
} 
0

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

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

 Смежные вопросы

  • Нет связанных вопросов^_^