2017-07-03 1 views
-4

Ich möchte einige Daten von den folgenden URLs wie sunriseTime, outTemp, outsideHumidity und anderen erhalten. Wenn Sie wissen, wie ich das tun kann, bitte helfen Sie mir.Wie kann ich einige Daten von der folgenden URL abrufen?

URL enter link description here

+0

Haben Sie erforscht, wie Sie den Inhalt der Website hinter die URL bringen können? – f1sh

+0

Ja, natürlich, aber ich konnte die Daten nicht finden und deshalb habe ich es gewählt. Wenn Sie diese URL sehen und eine Lösung finden möchten, ist dies: (http://penteli.meteo.gr/stations/ioannina/) –

+0

[Warum kann "Kann mir jemand helfen?" Keine eigentliche Frage?] (Http: //meta.stackoverflow.com/q/284236) Weder ist * Hier ist ein Link zu woanders. Geh hinüber, sieh was ich machen will und dann komm zurück und sag mir wie es geht *. Bitte verbringe etwas Zeit mit der [Tour] und lese die [Hilfe] durch, insbesondere [frag], bevor du deine nächste Frage hier postest. Viel Glück. –

Antwort

1

Sie müssen folgendes tun:

  • Öffnen Sie die URL
  • Lesen Sie den Inhalt der Web-Seite
  • erstellen ein Muster, das Sie suchen möchten in den Daten
  • Verwenden Sie Regex (Regulärer Ausdruck), um die gewünschten Muster abzugleichen die Daten

Ich habe ein Java-Programm geschrieben, das das obige tut. Hoffe, es hilft :)

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); 
    } 
} 

Die Ausgabe des obigen Programms werden sein:

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

Sie können die Werte anderer Attribute erhalten Sie durch Angabe der Attributnamen in der keys Array wollen in das Programm.

+0

Ich habe Ihren Code benutzt und er zeigt keine Probleme, aber er gibt mir nichts zurück. –

+0

Das liegt daran, dass ich gerade das Ergebnis auf die Konsole gedruckt habe. Wenn Sie es ausführen, können Sie die Ausgabe auf der Konsole sehen. Können Sie mir sagen, wo Sie das Programm ausgeführt haben? – Sanjay

+0

Vom Android Studio aus starte ich auf meinem Handy –

Verwandte Themen