2

このhtmlからjsoupを使用して画像タグを抽出する必要があります

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

この img タグの src を抽出する必要があります ... このコードを使用しています null 値を取得しています

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

3 に答える 3

6

イメージ ソース属性を取得する例を次に示します。

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)メソッドを押して選別します。

于 2010-08-04T10:19:33.240 に答える
1

次のコードを使用すると、画像を正しく抽出できます。

    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を使用しています。

img のような空のタグの内側の html を出力しようとしているのかもしれません。

ドキュメントから:「html() - 要素の内部 HTML を取得します」。

html の 2 番目の部分では、次を使用できます。

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

「ジェイ、シャザーン・パダムシー」を印刷します。

于 2010-08-02T21:25:51.723 に答える
1
<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();
于 2010-08-03T00:09:37.647 に答える