簡體   English   中英

如何使用 JSoup 獲取頁面中的所有 url 圖片?

[英]How get all url images in a page with JSoup?

我正在使用 JSoup 來抓取頁面。 我通常需要在頁面或頁面中獲取所有 url 的圖像,然后放入ArrayList<String> 假設如下文件:

<!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。 如果可能的話,我喜歡使用 lambda 了解 Java 6 模式和 Java 8 模式。

沒有對 Java6 的建議。

在 Java 8 中使用 Lambda:

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());

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM