2017-06-20 5 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> 

    ... 

私は私がするjava.langを取得し、以下の方法を使用しようとすると、しかし、値27と21を取得しようとしています。 NullPointerException。

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

以下の方法を使用すると、値は ' - 'に置き換えられます。出力は:今日の高 - |低 - °C - 降水確率。

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

なぜ値が置き換えられますか? これらはスクリプトで作成されていますが、 ' - 'はHTMLプレースホルダだけですか?

これらの値を取得する別の方法がある場合は、

答えて

0

はよく外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

どちらの方法は、空の文字列を返すことは、あなたが単に具体的

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

あなたが使用して試すことができ、より具体的にする必要がある場合

のために行くことができ、あなたの完全なHTMLだと仮定すると私のために。私が解析しようとしている完全なHTMLはhttps://www.wunderground.com/cgi-bin/findweather/getForecast?query=33.593%2C-86.49&MR=1 – Ricardo

+0

です@RicardoはJavaScriptの更新メイトのようですここでは2つのオプションがあります:1 - セレニウム2のようなJavaスクリプトダウンローダを使用してコードを実行し、呼び出しがどこでどのように機能するかを確認します。 – nafas

+0

次のようなもの@Ricardo:openweathermap APIを使用して終了 https://api.weather.com/v1/geocode/33.587719/-86.477615/forecast/daily/5day.json?language=en-US&units=e&apiKey=6532d6454b8aa370768e63d6ba5a832e – nafas