2015-09-16 2 views
1

Я использую JSoup для поиска страниц. Мне обычно нужно получить все изображения url внутри страницы или части страницы и поместить затем в ArrayList<String>. Suposed последующих документов:Как получить все изображения на странице с помощью JSoup?

<!DOCTYPE html> 
<html> 
    <head> 
    <meta charset="utf-8"> 
    <title>News Page</title> 
    </head> 
    <body> 
    <div class="news"> 
     <div class="new"> 
     <div class="image"> 
      <img src="../images/img01.jpg" /> 
     </div> 
     <div class="info"> 
      <p class="title"> 
      Grumpy wizards make toxic brew for the evil Queen and Jack. 
      </p> 
     </div> 
     </div> 
     <div class="new"> 
     <div class="image"> 
      <img src="../images/img02.jpg" /> 
     </div> 
     <div class="info"> 
      <p class="title"> 
      The quick brown fox jumps over the lazy dog. 
      </p> 
     </div> 
     </div> 
     <div class="new"> 
     <div class="image"> 
      <img src="../images/img03.jpg" /> 
     </div> 
     <div class="info"> 
      <p class="title"> 
      Pack my box with five dozen liquor jugs. 
      </p> 
     </div> 
     </div> 
    </div> 
    </body> 
</html> 

я это делаю на этом пути:

Document document = Jsoup.parse(html); 
Elements images = document.select(img); 

ArrayList<String> binaryUrls = new ArrayList<String>(); 
for(Element image : images) { 
    binaryUrls.add(image.absUrl("src")); 
} 

И результат:

['http//www.newssite.com/images/img01.jpg', 'http//www.newssite.com/images/img02.jpg', 'http//www.newssite.com/images/img03.jpg'] 

Это работает, но я хочу знать, если существует короткий путь, просто с Jsoup, чтобы сделать это.

В производственной среде мы использовали Java 6. Если возможно, мне понравился режим Java 6 и режим Java 8 с лямбдой.

ответ

1

Нет предложений для Java6.

Использование Lambda в Java 8:

ArrayList<String> binaryUrls = Jsoup.parse(html).select("img") 
    .stream().map(p -> p.absUrl("src")) 
    .collect(Collectors.toCollection(ArrayList::new)); 

Или, если возвращаемый тип может быть только List<String>:

List<String> binaryUrls = Jsoup.parse(html).select("img") 
    .stream().map(p -> p.absUrl("src")) 
    .collect(Collectors.toList()); 
Смежные вопросы