2017-07-03 12 views
-4

sunriseTime、outTemp、outsideHumidityなどのURLからいくつかのデータを取得したいと思います。どうすればこのことができますか教えてください。次のURLからデータの一部を取得するにはどうすればよいですか?

URL enter link description here

+0

URLの後ろにウェブサイトの内容を取得する方法を調査しましたか? – f1sh

+0

はい、もちろんですが、そこからデータを見つけることができなかったので、それを選んだ理由です。あなたがそのURLを見て、何か解決策を挙げたいのなら、これは次のようなものです: –

+0

[なぜ誰かが私を助けることができますか?]実際の質問ではありませんか?](http://penteli.meteo.gr/stations/ioannina/) //meta.stackoverflow.com/q/284236)どちらもありません*ここに別の場所へのリンクがあります。そこに行って、私が何をしたいか見てから、ここに戻って来て、それをどうやって行うか教えてください。ここであなたの次の質問を投稿する前に[ツアー]を取って[ヘルプ]、特に[質問]を読んで時間をかけてください。がんばろう。 –

答えて

1

あなたは、次の操作を行う必要があります。

  • オープンURL
  • 検索したいパターンを作成し、Webページ
  • の内容を読みますデータ内で
  • 正規表現(正規表現)を使用して、必要なパターンと一致させますデータ

上記のことを行うJavaプログラムを作成しました。それが役に立てば幸い:)

import java.io.BufferedReader; 
import java.io.InputStreamReader; 
import java.net.URL; 
import java.net.URLConnection; 
import java.util.ArrayList; 
import java.util.Arrays; 
import java.util.List; 
import java.util.regex.Matcher; 
import java.util.regex.Pattern; 


class URLReader { 

    public static List<String> getAttributesFromURL(String urlString, 
                String [] keys) { 
     StringBuilder sb = new StringBuilder(); 
     try { 

      //Opening the URL 
      URL url = new URL(urlString); 
      URLConnection urlConnection = url.openConnection(); 
      BufferedReader bufferedReader = new BufferedReader(
        new InputStreamReader(urlConnection.getInputStream())); 

      // Reading the URL contents into a StringBuilder object 
      String line; 
      while ((line = bufferedReader.readLine()) != null) { 
       sb.append(line + "\n"); 
      } 
      bufferedReader.close(); 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 

     // Copying the StringBuilder contents into a string 
     String contents = sb.toString(); 


     List<String> keyList = Arrays.asList(keys); 
     List<String> result = new ArrayList<String>(); 
     for (String key : keyList) { 

      // Defining the pattern to be found in contents 
      String patternToFind = key + "=\"(.*)\""; 
      Pattern p = Pattern.compile(patternToFind); 
      Matcher m = p.matcher(contents); 
      if (m.find()) { 

       // If pattern found, store them in the result list 
       result.add(key + ": " + m.group(1).trim()); 
      } 
     } 
     // Returning the result 
     return result; 
    } 
    public static void main(String[] args) throws java.lang.Exception { 
     String urlString ="http://www.metar.gr/ws/alexan/ZWNTANA.htm"; 

     // List all the keys whose values need to be extracted 
     String[] keys = {"sunriseTime", "outsideTemp", "outsideHumidity"}; 

     // Getting the result 
     List<String> attributeValuePairs = getAttributesFromURL(urlString, keys); 
     System.out.println(attributeValuePairs); 
    } 
} 

上記のプログラムの出力は次のようになります。

[sunriseTime: 6:14, outsideTemp: 21.7, outsideHumidity: 57]

あなたがでkeys配列内の属性名を指定することによって、あなたがしたい他の属性の値を取得することができますプログラム。

+0

私はあなたのコードを使用しましたが、問題はありませんが、私に何も返されません。 –

+0

これは、結果をコンソールに出力したばかりなのでです。実行すると、コンソールに出力が表示されます。あなたはどこからプログラムを実行したか教えていただけますか? – Sanjay

+0

Androidスタジオから私の携帯電話で実行しました –

関連する問題