我正在使用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效果很好。
答案 0 :(得分:1)
异常的主要原因可能是每个IDE向服务器发送不同的userAgent
字符串,因此您将获得两个不同的HTML。
您可以通过以下两种方式之一解决它:
doc
,查看您所需信息的查询内容。 将userAgent
字符串添加到get
请求 -
doc = Jsoup.connect(URL).userAgent("Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:59.0) Gecko/20100101")
.get();