Jsoup извлечение тега изображения - PullRequest
2 голосов
/ 03 августа 2010

Мне нужно извлечь тег изображения с помощью jsoup из этого HTML

<div class="picture"> 
    <img src="http://asdasd/aacb.jpgs" title="picture" alt="picture" />
</div>

Мне нужно извлечь SRC этого тега IMG ... Я использую этот код, я получаю нулевое значение

Element masthead2 = doc.select("div.picture").first();
String linkText = masthead2.outerHtml();
Document doc1 = Jsoup.parse(linkText);
Element masthead3 = doc1.select("img[src]").first();
String linkText1 = masthead3.html();

Ответы [ 3 ]

6 голосов
/ 04 августа 2010

Вот пример получения атрибута источника изображения:

public static void main(String... args) {
    Document doc = Jsoup.parse("<div class=\"picture\"><img src=\"http://asdasd/aacb.jpgs\" title=\"picture\" alt=\"picture\" /></div>");
    Element img = doc.select("div.picture img").first();
    String imgSrc = img.attr("src");
    System.out.println("Img source: " + imgSrc);
}

Селектор div.picture img находит элемент изображения в div.

Основные методы извлечения элемента:

  • attr(name), который получает значение атрибута элемента,
  • text(), который получает текстовое содержимое элемента (например, в <p>Hello</p>, text () - "Hello"),
  • html(), который получает внутренний HTML-код элемента (<div><img></div> html () = <img>) и
  • outerHtml(), который получает элементы полного HTML (<div><img></div> html () = <div><img></div>)

Вам не нужно повторно анализировать HTML, как в вашем текущем примере, либо выберите правильный элемент в первую очередь, используя более конкретный селектор, либо нажмите метод element.select(string), чтобы отключить его.

1 голос
/ 03 августа 2010
<tr>  <td class="blackNoLine" nowrap="nowrap" valign="top" width="25" align="left"><b>CAST: </b></td>  <td class="blackNoLine" valign="top" width="416">Jay, Shazahn Padamsee&nbsp;</td>  </tr>

Вы можете использовать:

Document doc = Jsoup.parse(...);
Elements els = doc.select("td[class=blackNoLine]");
Element el= els.get(1);
String castName = el.text();
1 голос
/ 03 августа 2010

С помощью следующего кода я могу правильно извлечь изображение:

    Document doc = Jsoup.parse("<div class=\"picture\"> <img src=\"http://asdasd/aacb.jpgs\" title=\"picture\" alt=\"picture\" /> </div>");

    Element elem = doc.select("div.picture img").first();

    System.out.println("elem: " + elem.attr("src"));

Я использую версию jsoup 1.2.2 , последнюю версию.

Возможно, вы пытаетесь напечатать внутренний HTML-код пустого тега, например img.

Из документации: «html () - извлекает внутренний HTML-код элемента».

Для второй части HTML вы можете использовать:

    Document doc2 = Jsoup.parse("<tr>  <td class=\"blackNoLine\" nowrap=\"nowrap\" valign=\"top\" width=\"25\" align=\"left\"><b>CAST: </b></td>  <td class=\"blackNoLine\" valign=\"top\" width=\"416\">Jay, Shazahn Padamsee&nbsp;</td>  </tr>");
    Elements trElems = doc2.select("tr");
    if (trElems != null) {
        for (Element element : trElems) {
            Element secondTd = element.select("td").get(1);

            System.out.println("name: " + secondTd.text());
        }
    }

с надписью "Jay, Shazahn Padamsee".

...