Java 使用JSoup选择一组标记

Java 使用JSoup选择一组标记,java,jsoup,Java,Jsoup,我正试图使用JSoup从页面上刮取一些信息,这些信息可以由一组标记按特定顺序识别。其次序如下: <span class="sold" >Sold</span></td> <td class='prc'> <div class="g-b bidsold" itemprop="price"> AU $1.00</div> 已售出 澳元1.0

我正试图使用JSoup从页面上刮取一些信息,这些信息可以由一组标记按特定顺序识别。其次序如下:

 <span class="sold" >Sold</span></td>
    <td class='prc'>
        <div  class="g-b bidsold" itemprop="price">
                AU $1.00</div>              
已售出
澳元1.00
我希望抓取页面上取代AU$1.00字段的每个值,但它们只能通过预先出现几个标记的
span class=“sell”
选择器来识别


我尝试过类似于
select(“span.selled:lt(4)+[itemprop=price]”的东西
,但感觉自己好像在黑暗中挣扎

下面的代码应该可以做到这一点

Document doc = Jsoup.connect(/*URL of your HTML document*/").get();
Element part = doc.body();
Elements parts = part.getElementsByTag("div");
String attValue;
String requiredContent;
for(Element ent : parts)
{
    if(ent.hasAttr("class"))
    {
        attValue = ent.attr("class");
        if(attValue.equals("g-b bidsold"))
        {
            System.out.println("\n");
            requiredContent=ent.text();
            System.out.println(requiredContent);
        }
    }
}

只需确保迭代并获得数组中的输出。

您也可以这样做:

Elements-soldPrices=doc.select(“td:has(.sell)+td[itemprop=price]”

这将返回包含price itemprops的元素(div),这些元素的TDs前面紧跟着class=sell的元素(跨度)


有关更多详细信息,请参阅。

谢谢-效果与预期一样!我可以看到它将所有div标记作为元素取出,然后检查它们是否有一个等于g-b bidsell的类,但是它如何选择前面的部分(即class=sell)?只是试着把我的头绕在代码周围,这样我就可以在其他地方重复它,如果必要的话!不客气!我给出的代码没有检查前面的部分。它只是查找具有特定类的div中的内容。如果还需要检查span标记的类,则需要相应地重写此代码。