2017-06-20 45 views
0

我试图解析使用JSoup下面的HTML:jsoup NullPointerException异常

<div class="small-6 columns"> 
    <span class="today" title="Today's weather summary for Moody">Today</span> 
    <div> 
     High 
     <strong class="high">27</strong> 
     <span class="split">|</span> 
     Low 
     <strong class="low">21</strong> 
     °C 
    </div> 

    ... 

我试图获取值27和21,但是当我尝试使用下面的方法,我得到的java.lang。空指针异常。

Element temperature = doc.select("div.row collapse > strong").first(); 

当我使用下面的方法时,值被替换为' - '。输出是:今天高 - |低 - °C - %可能性Precip。

Element temperature = doc.select("span.today"); 

为什么值被替换? 它们是否由脚本填充,' - '只是HTML占位符?

如果是的话还有另一种获得这些值的方法吗?

回答

0

以及假设这是您完整的HTML,你可以简单地去具体

String high = doc.select("strong.high").text() ; 
String low = doc.select("strong.low").text() ; 

,如果你需要更具体一些,你可以尝试使用外div

String high = doc.select("div[class=small-6 columns]").select("strong.high").text() ; 
String low = doc.select("div[class=small-6 columns]").select("strong.low").text() ; 
+0

这两种方法返回一个空字符串为了我。我试图解析的完整HTML是https://www.wunderground.com/cgi-bin/findweather/getForecast?query=33.593%2C-86.49&MR=1 – Ricardo

+0

@Ricardo它看起来像JavaScript更新队友,你在这里有两个选择:1-使用像selenium这样的java脚本下载程序2-检查代码并查看呼叫发生的地方和功能。 – nafas

+0

@Ricardo像这样: https://api.weather.com/v1/geocode/33.587719/-86.477615/forecast/daily/5day.json?language=en-US&units=e&apiKey=6532d6454b8aa370768e63d6ba5a832e – nafas