Java Daten mit Java von Webseite ziehen

Bright0001

Commander
Registriert
Juli 2011
Beiträge
2.547
Moin Leute,

ich bastel momentan an einer Analysesoftware die Kurse auswertet und würde dafür gerne Daten von dieser Webseite ziehen. Um das zu bewerkstelligen wollte ich eigentlich die Webseite in den Puffer laden und dann über Stringmanipulation die einzelnen Werte extrahieren, was jedoch nicht so recht klappen will. Die gelieferte HTML-Seite unterscheidet sich von der angezeigten/von Hand gespeicherten und enthält keinerlei Werte.

Ich suche jetzt nach einer Möglichkeit entweder die volle Seite zu erhalten oder irgendwie direkt an den Wert zu kommen, wäre da für alle Lösungsansätze offen. :)

Grüße

Code:
package iqoption;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.URL;
import java.net.URLConnection;


public class FetchData {

    FetchData(){
        try {
            String baseUrl = "https://eu.iqoption.com/de/historical-financial-quotes?active_id=1&tz_offset=60&date=2017-2-16-";
            PrintWriter pw = new PrintWriter("iqoption_daten.txt", "UTF-8");

            for (int h=0; h<1; h++){
                for (int m=0; m<61; m++){
                    String fullURL = baseUrl + h + "-" + m;
                    
                    URL url = new URL(baseUrl);

                    URLConnection con = url.openConnection();
                    InputStream is = con.getInputStream();

                    BufferedReader br = new BufferedReader(new InputStreamReader(is));
                    
                    // Ignoring the first 540 lines
                    for (int i=1; i!=540; i++){
                        br.readLine();
                    }
                    String line = br.readLine();
                    String[] lineParts = line.split("val\">");

                    for (int i=1; i < 61; i++){
                        int pos = lineParts[i].indexOf('<');
                        String zahl = lineParts[i].substring(0, (pos-1));
                    }

                }
            }
            pw.close();
        } catch (Exception e){
            System.out.println(e.getMessage());
        }
    }
}
 
Da sollte jsoup das richtige für sein. Damit kannst du direkt die html Elemente ansprechen und die werte auslesen.

Dann musst du auch nicht mehr mit BufferedReader arbeiten.
 
// Ignoring the first 540 lines
for (int i=1; i!=540; i++){

Sollte das nicht i <= 540 heißen?
Oder es passt eh, hab noch nie for-Schleifen so benutzt :D
 
Zuletzt bearbeitet:
Auf der Seite wird scheinbar JavaScript verwendet, um die Seite mit den eigentlichen Werten zu befüllen.
Ich nehme also an, dass dir das Abfragen der reinen Html-Seite nichts bringen wird.

Dadurch, dass du die Seite bei dir im Browser geöffnet hast und JavaScript somit seinen Job machen konnte, hattest du in der "von Hand gespeicherten" Seite eben Werte gehabt.
 
Du könntest mal anfragen, ob die Seite eine offene (REST) API anbietet. Damit würdest du bessere Ergebnisse erzielen als die Seite zu parsen.
 
Zuletzt bearbeitet:
hier stand Müll:)
 
Zuletzt bearbeitet:
Ich wollte auch gerade die URL von Bagbag posten, die ich mit F12 und dann beim Menüpunkt "Netzwerkanalyse" rausgefunden habe. Da kommen die Daten bereits in schöner Form.
 
Also ich wollte sie auch posten, habe die URL mit dem Porgramm Fiddler herausbekommen.
Die Daten sind übrigens im JSON Format. Es sollte schon Libraries geben, um die Daten zu parsen.
 
Nur so als Hinweiß:

Wenn du regelmäßig, bzw. in konstanten kurzen Zeitabständen Daten von solchen Seiten abgreifst - egal nach welcher Art, dann wird sowas als Angriff gewertet. Im besten Fall wird deine Server/Seite/IP geblockt, im schlimmsten Fall bekommst du oder dein Seitenbetreiber vom Anwalt nen schreiben, dass man keinen Crawler auf deren Seiten anwenden darf, da dies die Sicherheit reduziert und den Traffic erhöht -> Selbst schon erlebt, daher aufpassen!

Besser ist eine Offiziele API von denen zu nehmen, bei der du zwar meist eingeschränkter aber rechtlich abgesichert bist.
 
Wenn er da alle paar Minuten drauf zugreift, wird das wohl nicht mal auffallen.
 
Hervorragende Antworten, danke!

Und wahli, wie oder wo genau hast du in der Netzwerkanalyse (bzw. in welchem Browser) gesehen wo die Daten drin sind? Hatte es da auch versucht aber nicht gefunden. :)

@Finalspace da mache ich mir keine Sorgen. Ich bin übers Uni-Netz mit dem Internet verbunden, also selbst wenn sie die Uni verklagen sollten müssten die sich schon ordentlich beeilen, denn die Logs halten bei uns 7 Tage. :evillol:
 
Unter Chrome:
F12->Network->XHR

Unter Firefox:
F12->Netzwerkanalyse->XHR
 
Zurück
Oben