Frage von DeuShades, 81

Inhalt einer Website in Echtzeit auslesen?

Ich möchte auf folgender Website: - https://fsn1ztvlo1r.firebaseio-demo.com/ - den Wert "null" in Echtzeit auslesen (den Speichere ich dort und der ändert sich ab und zu). Kann ich das mit Java irgendwie machen? Ich hatte bis jetzt folgendes, um an den gesamten Quelltext der Seite heranzukommen, worin ich dann den Wert suchen wollte:

import java.net.*;
import java.io.*;

public class URLReader {
  public String main() throws Exception {
    
    URL u = new URL("<a href="https://fsn1ztvlo1r.firebaseio-demo.com/">https://fsn1ztvlo1r.firebaseio-demo.com/</a>");
    BufferedReader in = new BufferedReader(
    new InputStreamReader(u.openStream()));
    String inputLine;
    String text = "";
    while ((inputLine = in.readLine()) != null)
    text = text + inputLine;
    in.close();
    return text;
  }
}

Aber das liefert den Wert nicht, da der body der Seite leer ist und erst später mit JavaScript nachgeladen wird (hab ich mir sagen lassen).

Wie kann ich es anders machen? Vielen Dank im voraus schon mal!

Antwort
von Dereta, 49

Was sicherlich noch eine Idee wäre, wäre zu überprüfen was nachgeladen wird und dann direkt nur das auslesen. Aber auch ich würde dir raten einen Aktualisierungs Intervall von mindestens 1 Minute einzubauen. Sonst kannst du ziemlich schnell auf einer Black List landen und kannst gar nichts mehr auslesen :) ausgenommen es handelt sich um deinen Server bzw Website.

Grüße

Kommentar von androhecker ,

Das bringt überhaupt nichts, die Werte sind nicht in der HTML und werden erst später durch JS geladen und wahrscheinlich automatisch aktualisiert, deswegen braucht man eine WebEngine.

Kommentar von Dereta ,

eben weil seine über js (jquery) nachgeladen werden muss auch im Quellcode ersichtlich sein was nachgeladen wird. Also ist dies sehr wohl möglich.

Kommentar von Dereta ,

da er es ja selbst nachladen bzw direkt abrufen kann ohne dafür die Homepage auszulesen sondern direkt was er brauch. die verlinkte Seite aus jquery

Kommentar von androhecker ,

Es wird keine statische Seite geladen, sondern Daten direkt aus einer Datenbank geladen. Das ganze ist bei solchen fertigen Systemen etwas schwerer umzusetzen, weil dort auch mit HTTP Sessions etc gearbeitet wird.

Expertenantwort
von TeeTier, Community-Experte für programmieren, 53

Also wenn du das gleiche unter "Echtzeit" verstehst wie ich, dann geht das nicht. :)

Du kannst aber in einer Schleife immer und immer wieder die Seite aufrufen, und auf Veränderungen überprüfen. Wenn du allerdings keinen Ärger mit dem Serverbetreiber bekommen willst, würde ich eine Wartezeit von einigen Minuten zwischen den Requests einbauen ... alleine schon aus Höflichkeit.

Echte "Echtzeit" kannst du also vergessen. Dafür ist HTTP nun mal nicht gemacht. :)

Kommentar von DeuShades ,

Also die Seite ist extra dafür gemacht, Daten zu speichern, die ununterbrochen aufgerufen werden, das sollte keine Probleme bereiten. Und eine Schleife sollte für Echtzeit reichen, brauche nur ca. alle 2 Sekunden aktuelle Werte.

Aber wie kann ich die Seite denn auf Änderungen überprüfen?

Antwort
von silentwater79, 21

Was genau verstehst Du unter Echtzeit? Was Echtzeit ist, ist immer Deffinitionssache und hängt von Deinen zeitlichen Anforderungen ab.

Eine Bahnschranke an dem ein Bahnwärter noch manuel die Schranke schließt, ist auch Echtzeit, solange die Bedingung erfüllt ist, das die Bahnschranke zu ist bevor der Zug durchfährt.

Antwort
von maximilianus7, 25

da die website von dir ist, kannst du doch einfach ein php-script erstellen, dass nichts anderes tut als diesen wert (null oder anderes) zurückliefert. in java
rufst du dieses script auf mit einem html-request auf.

Antwort
von CrystalixXx, 4

Wenn du nicht selbst programmieren willst, dann nutz' die ClientLibrary für Java:

https://github.com/bane73/firebase4j

Antwort
von androhecker, 45

Mit der JavaFX WebEngine kannst du eine Seite laden und dann in Echtzeit die Daten auslesen, Tutorial dazu gibt es direkt von Oracle.

Kommentar von androhecker ,

Es ist immer nett eine Antwort ohne jegliche Begründung schlecht zu bewerten...

Kommentar von KnusperPudding ,

Muss man sich auf GuteFrage dran gewöhnen. Auch wenn es nicht schön ist.

Kommentar von androhecker ,

Wieso eigentlich der ganze Aufwand? Firebase hat eine Java API um auf die Daten zuzugreifen.

Keine passende Antwort gefunden?

Fragen Sie die Community