我正在尝试使用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]”)但感觉我在黑暗中挥舞着!
答案 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。