Lesen einer Zeile aus Tabelle auf komplexer Webpage

Guten Morgen zusammen,

ich habe mal wieder eine (für mich) große Herausforderung. Es wäre deshalb klasse, wenn mir der Eine oder Andere von Euch auf die Sprünge helfen könnte. Ich möchte zunächst einmal abschätzen, ob ich das überhaupt angehen kann (aufgrund meiner eingeschränkten Programmierkenntnisse).
Es geht um folgende Anwendung: Ich möchte (mittels ESP32 oder 8266) auf folgende Webpage zugreifen:

https://www.smard.de/page/home/marktdaten/78?marketDataAttributes={"resolution":"quarterhour","region":"DE","from":1665784800000,"to":1666043999999,"moduleIds":[1000100,1000101,1000102,1000103,1000104,1000108,1000109,1000110,1000111,1000112,1000113,1000121,5000410,1001226,1001228,1001227,1001223,1001224,1001225,1004066,1004067,1004068,1004069,1004071,1004070],"selectedCategory":1,"activeChart":false,"style":"color","categoriesModuleOrder":{}}

Aus der dargestellten Tabelle möchte ich die letzte (volständige) Zeile einlesen und als Variable (Array) speichern um diese im Code verarbeiten zu können.

Es gibt einige Beispiele, zu einfach aufgebauten Webpages, aber keine mit derart komplexem (für mich zumindest) Inhalt. Ich habe auch Grundkenntnisse in HTML, und kann einfache Quelltexte interpretieren, aber wenn es um derart komplexe und dynamische Seiten geht, komme ich schnell an meine Grenzen. Die Herstellung der Verbindung mit der Seite (Server/Client) sollte ich auch hinbekommen. Es geht "nur" um die Suche nach der gewünchten Zeile auf der Webpage.

Deshalb nun die Frage: Meint Ihr, ich könnte mich "ranwagen"? Wie gesagt, die (deutschen und englischen) Beispiele die dafür im Netz zum Parsen von Webseiten verfügbar sind, sind meist für einfach aufgebaute Seiten.

Es wäre klasse, wenn Ihr mir ein bisschen auf die Sprünge helfen und mit mir in die Diskussion einsteigen könntet, damit ich einschätzen kann, ob ich das alternativ löse oder doch angehen kann.

Vielen Dank Euch und einen guten Start in die Woche!

Viele Grüße

Bire

Wenn Du auf der Seite bist, dann findest Du doch auf der rechten Seite "Daten herunterladen".
Da einfach zusammenstellen, was Du suchst.
Dann hast Du oben eine URL. Die kannst Du dann immer wieder verwenden.
(Die Zeitangabe ist in Unixtime - gefolgt von 999)
Datenformat CSV und das kannst ganz normal parsen.

hab mich auch grad durchgeklickt, die Seite bietet offenbar eh auch einen Datendownload an. Findest da nichts passendes?

Guten Morgen Ihr beiden,

danke für die schnellen Antworten! Ich hoffe, ich habe Euch richtig verstanden: Ihr schlagt vor, dass ich die mich interessierende Zeile herunterlade und dann diese Daten direkt verwende. Das wäre ja dann eine offline Lösung. Ich würde jedoch immer gerne die aktuelle Zeile (wird viertelstündlich aktualisiert) haben, oder habe ich Eure Antworten falsch interpretiert?

VIELEN DANK und viele Grüße, Bire

klickt dir da mal deine Daten zusammen:
https://www.smard.de/home/downloadcenter/download-marktdaten

das Ergebnis ist da ein schönes CSV oder XML. Das kannst du dann parsen.

Mit "Offline" hat das wenig zu tun. Dein ESP (oder besser dein Programm) kann ein CSV (od. XML) genauso (aber einfacher) lesen als ein HTML.

Hallo noiasca,

danke, prinzipiell ist es genau das was ich suche, denn eine csv-Datei einzulesen, würde selbst ich hinbekommen (hoffe ich zumindest). Allerdings merke ich gerade, dass ich vielleicht noch ein bisschen genauer erklären muss, was ich möchte:

Ein Sensor ermittelt die Stromaufnahme über die Zeit eines Gerätes (mittels ESP32/8266, etc.). Ich möchte nun die Zusammensetzung des Strommixes zu diesem Zeitpunkt haben, um daraus weitere Betrachtungen anstellen zu können. Mit einer statischen CSV-Datei, die ich im Programm hinterlege, bin ich zwar schon einen Schritt weiter, es sind aber nicht die aktuellsten Daten, das meine ich mit "online". Ich hoffe, wiederum, dass ich Dich richtig verstanden habe...

Sorry, wenn ich mich bisher falsch ausgedrückt habe.

Dein Hinweis zeigt mir aber eine Möglichkeit auf: Automatisiert über den ESP-Sketch ein CSV-File mit den gewünschten Daten erzeugen, auf dem ESP-speichern und dieses dann einlesen, wobei ich auch hier keinen Ansatz hätte, wie man die automatische Generierung (quasi als Emulation der Auswahl über die Maus) macht...

Vielen Dank nochmals und Grüße
Bire

es klingt danach du hast es noch nicht ganz.

Du brauchst die CSV Datei nicht "speichern". Du liest sie ein (wie eine HTML Seite), arbeitest sie zeilenweise durch bis zu leeren Zeilen, die Zeile vor den "Leerzeilen" ist die dich interisiert.

Hallo noiasca,

Du hast leider recht:

es klingt danach du hast es noch nicht ganz.

Ich versuche, nochmal wiederzugeben, was ich glaube verstanden zu haben (was Du meinst). Ich generiere (einmalig?!) eine CSV-Datei mit den Daten, die mich interessieren. Dann lese ich (immer wieder) diese Datei ein, gehe zur letzten Zeile und habe meine Werte, bin ich richtig? Wenn ja: Das wäre nicht ganz das, was ich brauche, da ich zu jedem Zeitpunkt eine aktuelle Datei benötige (mit aktuellen Daten, die sich viertelstündlich ändern).

Ich würde also einen Ansatz benötigen (wenn ich über die CSV-Files gehe), der mir programmgesteuert (über den ESP-Sketch) ein aktuelles File generiert, jeweils die letzte Zeile sucht und diese dann verarbeitet. Eventuell ist für Dich aber auch schon klar und so trivial, dass die Generierung der CSV-Datei immer wieder vonstatten gehen muss und deshab meine Verwirrung? In diesem Fall wäre es interessant, ob Du mir einen Impuls geben könntest, wie ich das im Sketch umsetzen könnte.

Dir in jedem Fall Danke für Deine Geduld mit mir

Viele Grüße, Bire

Ich sehe gerade der CSV Abruf ist auch schwierig zu generieren.

Nimm doch einfach mal mit denen Kontakt auf und frag ob es nicht auch ein API für die aktuellen Daten gibt. Weiters brauchst ja nicht einen ganzen Tag - sondern nur die aktuellen.

Hallo noiasca,

danke für Deinen erneuten Hinweis. Ich habe die Mail eben schon geschrieben. Mal schauen was kommt :slight_smile: Ich halte Dich / Euch auf dem Laufenden. Wobei ich jetzt schon sehe, dass das meine Fähigkeiten vermutlich leider übersteigen wird :worried:. Was ja meine Ausgangsfrage war.

Vielen Dank Dir, viele Grüße
Bire

Hallo noiasca,

ich habe zwar noch keine Antwort, aber das geht glaube ich in meine Richtung. Da hast Du mich durch Deinen Hinweis drauf gebracht!

Vielen Dank!

Bire

Also: Ich hab grad mal geschaut.
Eingestellt ist von / bis nur heute.
Es ist jetzt 13:00 Uhr.
Für 11:45 Uhr fehlte schon ein Wert. der ist vor 5 Minuten nachgemeldet.
Um 12:00 Uhr ist insgesamt aktuell nur ein Wert (Wind Offshore) auf der Website.

Du fährst definitiv besser, wenn Du mit dem Json / bzw. dem csv arbeitest.
Das csv gibt aus:

17.10.2022 11:45 1114 309 1088 2854 5606 29 949 3137 1463 1423 33 198
17.10.2022 12:00 - - 1122 - - - - - - - - -

Aktuellere Daten bekommst Du nicht.

Im Übrigen sehr nett, was zur Schnittstelle im Github steht:

:slight_smile:

Hallo my_xy_project,

auch Dir danke für Deine Hinweise. Ich nehme einfach, den letzten vollständigen Datensatz, das würde mir reichen :slight_smile:

Danke auch zu Deinem Hinweis zur Schnittstelle: So weit bin ich noch gar nicht vorgedrungen. Ich bin gerade am Überlegen, wie ich das mit einem ESP löse. Grundsätzlich ist das ja nur ein Aufruf der korrekten URL, wenn ich das recht verstehe.

Vielen Dank und viele Grüße
Bire

Da das ein HTTPS-Aufruf ist, brauchst Du einen SecureClient. Für den ESP8266 habe ich da ein Tutorial geschrieben. Einige Funktionen gehen auch mit dem ESP32.

Gruß Tommy

Hallo Tommy56,

vielen Dank auch für Deinen Input, das sieht sehr vielversprechend aus! Ich werde mich mal daran versuchen.

Viele Grüße und vielen Dank
Bire

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.