我对jsoup很陌生。几天来,即时通讯现在试图从一个范围内读出一个简单的数字,但没有成功。
我希望在这里寻求帮助。我的html:
<div class="navi">
<div class="tab mail">
<a href="/comm.php/indexNew/" accesskey="8" title="Messages">
<span class="tabCount">1 </span>
<img src="/b2/message.png" alt="Messages" class="moIcon i24" />
</a>
</div>
该类tabCount在整个文档中共存在3次,并且我对此类的第一个跨度感兴趣。
现在,我正在尝试在服务的onCreate()中创建具有以下内容的线程:
Thread downloadThread = new Thread() {
public void run() {
Document doc;
try {
doc = Jsoup.connect("https://www.bla.com").get();
String count = doc.select("div.navi").select("div.tab.mail").select("a[href]").first().select("tabCount").text();
Log.d("SOMETHING", "test"+(count));
} catch (IOException e) {
e.printStackTrace();
}
}
};
downloadThread.start();
这迫使我的应用崩溃。如果我将text()更改为ownText(),则相同。如果我删除text(),则该应用程序可以启动,但为我提供了null。
我究竟做错了什么?顺便说一句,除了服务之外,一个Webview正在加载相同的URL。可能是个问题吗?
最佳答案
您只需要选择感兴趣的元素,而无需先获取所有外部元素。在您的示例中,您可以尝试
String count = doc.select("span.tabCount").text();
在其中定义元素“ span”的类型和类名“ .tabcount”的位置
有关可能对您有帮助的示例,请查看this链接
编辑:
尝试使用此代码,它将获得第一个跨度的值。
Elements elements = doc.select("span.tabCount");
String count = elements.first().text();
如果要打印所有元素,可以这样做。
Elements elements = doc.select("span.tabCount");
for (Element e : elements) {
Log.d("Something", e.text();
}