Jsoup HTML解析java上的工作,但不能在android studio上工作

时间:2018-04-09 15:28:46

标签: java android android-studio jsoup

我正在使用Jsoup处理html解析项目,我能够正确解析标题和图像,但是当我尝试解析一个计时器(与此帖this link相关)时,我在android studio上失败但是使用了代码通过@Shn_Android_Dev This Code给了我java,  这是我的代码..

public void EbayTimerTest() {
    new Thread(new Runnable() {
        @Override
        public void run() {
            Document doc;
            try {
                doc = Jsoup.connect(WEBSITE_URL).get();
                String remaining = doc.select("#vi-cdown_timeLeft").first().text();
                remainingMs = getUnixFromString(remaining);

            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            runOnUiThread(new Runnable() {
                @Override
                public void run() {
                    timer.setText(String.valueOf(remainingMs));
                }
            });
        }
    }).start();
    }
}

我仍然得到的错误是

java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String org.jsoup.nodes.Element.text()' on a null object reference

非常确定

String remaining = doc.select("#vi-cdown_timeLeft").first().text();

无法在android studio上解析但在Java Eclipse上工作..

p.s如果我尝试解析其他元素这样的标题和图像,Jsoup效果很好。

1 个答案:

答案 0 :(得分:1)

异常的主要原因可能是每个IDE向服务器发送不同的userAgent字符串,因此您将获得两个不同的HTML。
您可以通过以下两种方式之一解决它:

  1. 阅读您使用AS获得的doc,查看您所需信息的查询内容。
  2. userAgent字符串添加到get请求 -

    doc = Jsoup.connect(URL).userAgent("Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:59.0) Gecko/20100101")
    .get();