Advanced - Daten aus der Webseite holen

DaveX

Mitglied
Hallo Leute,

es gibt eine Seite : https://www.oddset.de/is_controller.php?action=historie_kombiwette&navid=204
von der ich alle Ergebnisse und Quoten speichern will.

Das problem ist: die Ergebnise aus den Tiefen des Archivs werden auf der Siete per Javascript geladen.
Wenn ich zB. Ergebnisse von der Kalendarwoche 25 aus dem Jahr 2005 haben will so muss ich entsprechende Dropdowns für Jahr und Kalendarwoche setzen die mittels Javascript getriggert werden und die entsprechende Daten liefern.

Wie kann ich das aus Java heraus realisieren, dass ich an alle Daten zB mittels iteration - über die OPTIONS die ja aus der Seite gelesen werden können, heraushole.

Ich habe bis jetzt nur paar Zeilen geschrieben die mir Ihnalt der Seite liefern und dann kam die Hürde.

Ich Danke im Voraus für jede Hilfe.

Grüße
DaveX
 
Ich war heute im IRC und habe nach meinem Problem gefragt. Dann fragte ich wo ich es am besten posten kann, wäre System.gc() richtig dafür ??? die Antwort war: AUF GAR KEINEM FALL !!! und sieh mal an was passiert ist.

Es geht hier nicht um JavaScript nur um Java Programm welches aus JavaScript basierten Seite Informationen rausholt.

Vielen Dank javimka, gut dass es Leute gibt die, die gestellten Fragen verstehen - da bleibt die Hofnung dass einem geholfen wird.
 
Zuletzt bearbeitet:
Am ende wird das ganze, wenn ich es jetzt richtig überflogen habe, mit einem POST rausgeschickt und dann anscheinend irgendwie mit PHP gebaut - wovon ich jetzt GAR keine Ahnung habe.
Für ein POST an sich hatte da kürzlich mal bei http://www.java-forum.org/netzwerkprogrammierung/90025-java-frame-yahoos-babelfish.html ein Beispiel geschrieben, aber ob man das irgendwie darauf übertragen kann? Es werden wohl die Parameter "year" und "no_gc" übergeben, aber eben auch noch die PHPSESSID und außerdem läuft das ganze ja über httpS... Also, hatte es eben auf die Schnelle nicht einfach so hingekriegt, aber kannst ja mal schauen...
 
Wenn die Daten JSON kodiert sind, kannst du die Datei (das JavaScript) direkt anfragen und dann durch einen JSON Konverter schieben, welcher Java-Objekte daraus erzeugt. Informationen dazu gibt es auf der JSON Seite und bei Google. Kommen die Daten per XML ist es ja noch einfacher.

Wenn die Daten direkt in das HTML als Script eingebettet sind musst du mit etwas wie NekoHtml (NekoHTML) die Seite erst parsen um dann die Scripts rauszuholen und dann entsprechend die JSON oder XML Daten zu erhalten.

Wie genau es gemacht werden muss, dazu müsste man die Seite genauer analysieren.
 
Mal sehen ob da wirklich noch was mit Java kommt 😉

Na dann hoffen wir mal, dass jetz mal was mit JAVA kommt

ALS ERSTES - Vielen Danke für alle Tipps,

ich habe die Seite wohl nicht gründlich genug untersucht, Marco13 hatte den wichtigsten Hinweis auf die POST Werte geliefert, die sich in den hidden Felder verborgen haben.

DIe Session sollte man am besten mitschleppen - ich hole sie mir bei der ersten Seite so, dass ich prüfe ob line in meinem Fall str. bestimten String enthält.
Java:
if(str.contains("var php_sessid ="))
	PHPSESSID = str.substring(str.indexOf("'")+1, str.lastIndexOf("'"));

und dann die danzen Jahresangaben aus den Option mitnehmen um später dadurch zu iterieren, und wenn ich die habe, dann kommen die Kalendarwochen.
Letztendlich muss man lediglich die richtigen POST Werte zusammenbasteln
Java:
    String data = URLEncoder.encode("PHPSESSID", "UTF-8") + "=" + URLEncoder.encode(PHPSESSID, "UTF-8");
    data += "&" + URLEncoder.encode("action", "UTF-8") + "=" + URLEncoder.encode("historie_kombiwette", "UTF-8");
    data += "&" + URLEncoder.encode("year", "UTF-8") + "=" + URLEncoder.encode("1999", "UTF-8"); // iYear
    data += "&" + URLEncoder.encode("gc_no", "UTF-8") + "=" + URLEncoder.encode("2", "UTF-8"); // iGC_NO

anschliessend gehen die Daten raus
Java:
// Send data
    URL url = new URL("https://www.......");
    URLConnection conn = url.openConnection();
    conn.setDoOutput(true);
    OutputStreamWriter wr = new OutputStreamWriter(conn.getOutputStream());
    wr.write(data);
    wr.flush();
	    
// Get the response
   BufferedReader rd = new BufferedReader(new InputStreamReader(conn.getInputStream()));

und dann readLine was das Zeug hält
so ungefähr.

@EDIT: https habe ich nicht sonderlich behandelt - das ging einfach so.

@maki: ich hoffe das war genug an JAVA odäää?

Grüße an alle die bereit waren zu Helfen
DaveX
 
Zuletzt bearbeitet:

Neue Themen


Zurück
Oben