2

我需要使用 jsoup 从此 html 中提取图像标签

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

我需要提取这个 img 标签的 src ...我正在使用这个代码我得到空值

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(), 获取元素的文本内容(例如 in <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 的第二部分,您可以使用:

    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”。

于 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 回答