我正在尝试使用jsoup打印“10 - 50”文本,但我似乎无法正确拉动它。这是HTML代码:
<dd>
<time itemprop="datePublished">21 October 2012</time>
</dd>
<dt>
Current Version:
</dt>
<dd itemprop="softwareVersion">
1.0
</dd>
<dt itemprop="operatingSystems" content="Android">
Requires Android:
</dt>
<dd>
2.3.3 and up
</dd>
<dt>
Category:
</dt>
<dd>
<a href="xxx">Entertainment</a>
</dd>
<dt>
Installs:
</dt>
<dd itemprop="numDownloads">
10 - 50
<div class="normalized-daily-installs-chart" style="width: 105px;">
<img src="xxx" />
<p>last 30 days</p>
</div>
</dd>
<dt>
Size:
</dt>
<dd itemprop="fileSize">
12M
</dd>
我已经尝试过这段代码,但它会打印出“1.0 10 - 50最近30天12M€0.69每个人”
import java.io.IOException;
import java.io.InputStream;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
public class googletest {
public static void main(String[] args) throws IOException {
Document doc = Jsoup
.connect("private url"
)
.get();
Elements spans = doc.select("dd[itemprop]");
System.out.println(spans.text());
}
}
我只是想打印字符串10 - 50本身没有其他值,谢谢。
答案 0 :(得分:1)
我看到两个问题。首先,你需要加强你的select表达式,这样它只返回itemprop等于numDownloads ex [itemprop=numDownloads]
的元素。现在你的spans
变量应该有一个只有一个Element的Elements集合。您可以使用spans.first()
访问此元素。一旦有了单个元素,就可以使用ownText()
方法返回作为元素直接子元素的文本(避免使用任何其他子元素的文本)。
public class googletest {
public static void main(String[] args) throws IOException {
Document doc = Jsoup
.connect("private url"
)
.get();
Elements spans = doc.select("dd[itemprop=numDownloads]");
System.out.println(spans.first().ownText());
}
}
答案 1 :(得分:0)
请尝试
Element dts = doc.select("dd[itemprop]").get(0);
System.out.println(dts.text());