Java 使用JSoup选择一组标记
我正试图使用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
<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标记的类,则需要相应地重写此代码。