使用JSoup选择一组标签

时间:2013-02-13 12:08:10

标签: java jsoup ebay

我正在尝试使用JSoup从页面中抓取一些信息,这些信息可以按特定顺序由一组标签识别。它们的顺序如下:

 <span class="sold" >Sold</span></td>
    <td class='prc'>
        <div  class="g-b bidsold" itemprop="price">
                AU $1.00</div>              

我希望获取代替页面上AU $ 1.00字段的每个值,但它们只能通过span class =“sold选择器来识别,该选择器事先会出现几个标记。

我尝试了类似.... select(“span.sold:lt(4)+ [itemprop = price]”)但感觉我在黑暗中挥舞着!

2 个答案:

答案 0 :(得分:1)

下面的代码应该可以做到!

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

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

答案 1 :(得分:1)

你也可以这样做:

Elements soldPrices = doc.select("td:has(.sold) + td [itemprop=price]");

这将返回具有价格itemprops的元素(DIV),它们紧跟TD之前的元素(SPAN)并且class = sold。

有关详细信息,请参阅Selector syntax