我对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();
}

07-28 02:21
查看更多