2012-04-01 17 views
0

Ich bin auf der Suche nach Echtzeit-Raten von dieser Webseite: http://www.truefx.com/ in meine Java-Programme, dh ich möchte die Daten von der Webseite, die Sekunde für Sekunde aktualisiert wird ständig gestreamt werden in mein Programm.Parsing einer Webseite mit Java

Ich würde dies gerne mit den Standard-Java-Bibliotheken tun, wenn möglich. Ich kenne Plugins wie jsoup und möglicherweise auch andere, aber ich möchte die Plugins nicht herunterladen und installieren müssen, da der Computer, den ich benutze, in Kalifornien basiert und alles andere als ein paar Kernprogramme, Eclipse in Betrieb ist von ihnen, wird jede Nacht gelöscht, wenn das System neu startet.

Wenn also jemand von einem Paket im Standard-Eclipse-Download weiß, dass dies tun kann, lass es mich wissen! danke


ok so habe ich das funktioniert, aber es scheint sehr langsam. Zum Beispiel ändern sich die Daten Sekunde für Sekunde, und obwohl ich die Webseite, die ich gelesen habe, auch von Sekunde zu Sekunde aktualisiere (ich habe thread.sleep (1000) benutzt), und dann eine neue Instanz bekommen von der Webseite wird es nur einmal jede Minute aktualisiert. was gibt?

hier ist, was mein Code wie folgt aussieht (i verwendet, was Sie oben als meine url Leser geschrieben):

public String getPage(String urlString){ 
     String result = ""; 
     //Access the page 
     try { 
     // Create a URL for the desired page 
     URL url = new URL(urlString); 
     // Read all the text returned by the server 
     BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream())); 
     String str; 
     while ((str = in.readLine()) != null) { 
      // str is one line of text; readLine() strips the newline character(s) 
      result += str; 
     } 
     in.close();    
     } catch (MalformedURLException e) { 
     } catch (IOException e) { 
     }   
     return result; 
    } 

    public static void main(String[]args){ 
     int i =0; 
     Reading r = new Reading(); 

    while(true){ 
     try{Thread.sleep(1000);}catch(Exception e){} 
     String page = new String(r.getPage("http://www.fxstreet.com/rates-charts/forex-rates/")); 
     int index = page.indexOf("last_3212166"); 
     //System.out.println(i+page); 
     i++; 
     System.out.println(i+"GBP/USD: "+page.substring(index+14,index+20)); 
    } 
+0

Die Java-Standardbibliotheken verfügen über keine HTML-Analysefunktionen. Hast du dich überhaupt selbst in diese Sache hineinversetzt? Scheint so, als hätte ein schneller Google das auf den Kopf gestellt. Außerdem, wenn alles nachts gelöscht wird, wie behältst du deinen Quellcode? Edit: Eigentlich sieht es so aus, als hätte Java einige eingebaute Sachen: http://en.wikipedia.org/wiki/Java_API_for_XML_Processing – Corbin

+0

danke. Ich habe mich ein wenig umgeschaut, hätte aber wahrscheinlich ein wenig mehr suchen können, bevor ich gefragt habe. – russell88

+0

Nun, es ist nicht wirklich, dass die Dinge gelöscht werden, sondern mehr damit, dass der Klassenpfad zurückgesetzt wird, oder so. Ich verstehe nicht vollständig, wie das System eingerichtet ist, ich weiß nur, dass Sie den Klassenpfad nicht dauerhaft ändern können. – russell88

Antwort

1

Mit keine externe API Sie die Seite durch diese Funktion erhalten können nur mit dem Import java.net.URL

static public String getPage(String urlString){ 
    String result = ""; 
    //Access the page 
    try { 
    // Create a URL for the desired page 
    URL url = new URL(urlString); 
    // Read all the text returned by the server 
    BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream())); 
    String str; 
    while ((str = in.readLine()) != null) { 
     // str is one line of text; readLine() strips the newline character(s) 
     result += str; 
    } 
    in.close();    
    } catch (MalformedURLException e) { 
    } catch (IOException e) { 
    }   
    return result; 
} 

Dann nutzen Sie die java.util.regex die Daten übereinstimmen, die Sie von bekommen th die Seite. und analysiere es in deine Etiketten. Vergessen Sie nicht, all dies in einen Thread mit einem während (wahr) Schleife, und ein Schlaf (some_time) zu setzen, um Informationen von Sekunde zu Sekunde zu haben.

+0

genial, genau das, was ich wollte! Danke vielmals. – russell88