JSOUP获取具有多个类的元素

时间:2014-02-23 11:09:41

标签: css-selectors jsoup

我正在尝试使用HTML页面中的class = <div>读取所有"listitem show-in-category"个。此外,我希望获得itempropitemprop="description"下的itemprop="image"字段。 <div>的示例如下:

<div class="listitem show-in-category">
    <img itemprop="image" alt="For the Trumpets Shall Sound" class="poster pull-left" src=
    "/images/shows/rectangle-poster/resized/188x282/4423-1390493634-forthetrumpets-rec.jpg"
    title="For the Trumpets Shall Sound">

    <h2 itemprop="name"><a href=
    "http://www.londonboxoffice.co.uk/for-the-trumpets-shall-sound-tickets">
    For the Trumpets Shall Sound</a></h2>

    <p itemprop="description"><p>Ruth is clearing out her Mother's attic, with the help of her son
    Jamie, when they make an interesting discovery.<br>
    <br></p>
</div>

JSOUP selector page上,声明我可以按类名访问所有div:

Elements mydesiredclass = doc.select("div.class")

1)但是,对于上面的类名,这不起作用,可能因为类名有空格?我应该使用什么语法来获取具有给定类名的所有div?

2)此外,一旦我设法获取所有div并循环浏览它们,我如何才能获得descriptionimg属性?

1 个答案:

答案 0 :(得分:2)

类名中的空格实际上是类名之间的分隔符。所以div是两个类的一部分,即listitem show-in-category

如果必须只选择与两个类匹配的元素,则可以执行以下操作:

Elements mydesiredElems = doc.select("div.listitem.show-in-category")

后跟类名的点是类的css选择器。它们可以连接在一起,这会导致添加此类作为匹配元素的要求。

关于你的第二个问题:Jsoup可以很容易地为你获取img元素。假设myDivEl是你的div之一

Element imgEl = myDivEl.select("img");
String altStr = imgEl.attr("alt");
String titleStr = imgEl.attr("title");

在编辑问题后更新以指出OP想要的内容:

Element itemPropPEl = myDivEl.select("p[itemprop=description]");
String descStr = itemPropPEl.text();