NEWS
Parser Aapter
-
Hallo,
ich bin auch völlig neu bei dem Thema parser: Habe den Adapter im iobroker installiert aber leider versteh ich trotz aller hilfen im Netz nicht was ich bei RegEx eintragen muss. Würde gerne mit Hilfe von RegEx mir den Wert hinter 17:00 ausgeben lassen. Das Ergebnis bräuchte ich vom Typ Zahl.
https://api.forecast.solar/estimate/watthours/48.288295/11.043492/36/-25/11,5
Der Quellcode sieht wie folgt aus.
<h2>Result</h2><table class="level-0"><tbody><tr><td class="key">2022-03-10 06:32:00</td><td class="value">0</td></tr><tr><td class="key">2022-03-10 06:46:00</td><td class="value">153</td></tr><tr><td class="key">2022-03-10 07:00:00</td><td class="value">919</td></tr><tr><td class="key">2022-03-10 08:00:00</td><td class="value">7363</td></tr><tr><td class="key">2022-03-10 09:00:00</td><td class="value">16218</td></tr><tr><td class="key">2022-03-10 10:00:00</td><td class="value">26070</td></tr><tr><td class="key">2022-03-10 11:00:00</td><td class="value">36358</td></tr><tr><td class="key">2022-03-10 12:00:00</td><td class="value">46200</td></tr><tr><td class="key">2022-03-10 13:00:00</td><td class="value">54378</td></tr><tr><td class="key">2022-03-10 14:00:00</td><td class="value">60742</td></tr><tr><td class="key">2022-03-10 15:00:00</td><td class="value">64838</td></tr><tr><td class="key">2022-03-10 16:00:00</td><td class="value">66617</td></tr><tr><td class="key">2022-03-10 17:00:00</td><td class="value">67139</td></tr><tr><td class="key">2022-03-10 18:00:00</td><td class="value">67208</td></tr><tr><td class="key">2022-03-10 18:10:00</td><td class="value">67210</td></tr><tr><td class="key">2022-03-10 18:19:00</td><td class="value">67210</td></tr><tr><td class="key">2022-03-11 06:30:00</td><td class="value">0</td></tr><tr><td class="key">2022-03-11 06:45:00</td><td class="value">153</td></tr><tr><td class="key">2022-03-11 07:00:00</td><td class="value">909</td></tr><tr><td class="key">2022-03-11 08:00:00</td><td class="value">6437</td></tr><tr><td class="key">2022-03-11 09:00:00</td><td class="value">13558</td></tr><tr><td class="key">2022-03-11 10:00:00</td><td class="value">21620</td></tr><tr><td class="key">2022-03-11 11:00:00</td><td class="value">30210</td></tr><tr><td class="key">2022-03-11 12:00:00</td><td class="value">38614</td></tr><tr><td class="key">2022-03-11 13:00:00</td><td class="value">46008</td></tr><tr><td class="key">2022-03-11 14:00:00</td><td class="value">51793</td></tr><tr><td class="key">2022-03-11 15:00:00</td><td class="value">55556</td></tr><tr><td class="key">2022-03-11 16:00:00</td><td class="value">57312</td></tr><tr><td class="key">2022-03-11 17:00:00</td><td class="value">57870</td></tr><tr><td class="key">2022-03-11 18:00:00</td><td class="value">57940</td></tr><tr><td class="key">2022-03-11 18:11:00</td><td class="value">57942</td></tr><tr><td class="key">2022-03-11 18:21:00</td><td class="value">57942</td></tr></tbody></table></body>
Kann mir jemand hierbei helfen?
Vielen Dank schon mal im voraus
-
@haihappen85 sagte in Parser Aapter:
Der Quellcode sieht wie folgt aus.
ist das der echte vollständige Quellcode und nicht die aufgearbeitete HTML-Seite?
@haihappen85 sagte in Parser Aapter:
Würde gerne mit Hilfe von RegEx mir den Wert hinter 17:00 ausgeben lassen.
da ist 2x 17:00:00 im Text.
Welchen Wert brauchst duist 17:00:00 statisch oder steht da immer was anderes?
@haihappen85 sagte in Parser Aapter:
Kann mir jemand hierbei helfen?
was hast du denn schon versucht?
-
also der Text wird mir schon im Parser angezeigt. Aber das ist ja auch nicht so schwer
Nein das ist nicht der vollständige Code. Sondern der Teil der unter body steht.
Versucht hab ich schon vieles was ich im Netz so gelesen hab. Aber nix davon hat funktioinert weil ich von programmieren leider nicht so viel verstehe. Ich brauch beide werte. Aber über Number kann ich ja dann zählen welchen ich brauche oder?
17:00:00 ist statisch. Eigentlich sollte das immer an der selben Stelle stehen
-
@haihappen85 sagte in Parser Aapter:
Nein das ist nicht der vollständige Code. Sondern der Teil der unter body steht.
das nutzt nichts, da im restlichen Teil ja noch weitere Treffer auf den RegEx sein könnten
@haihappen85 sagte in Parser Aapter:
17:00:00 ist statisch.
wie gesagt gibt es davon 2. Einen heute, einen Morgen
Hab mal den Heute genommen:
17:00[^e]+e">(\d+)
aber bitte den gesamten Quelltext posten
@haihappen85 sagte in Parser Aapter:
Aber nix davon hat funktioinert weil ich von programmieren leider nicht so viel verstehe
Um dir helfen zu können RegExe zu verstehen, wäre es schon interessant zu wissen was du verstanden hast oder was nicht/falsch
@haihappen85 sagte in Parser Aapter:
Aber über Number kann ich ja dann zählen welchen ich brauche oder?
korrekt
-
mir reicht erstmal der erste.
<html> <head> <title>Forecast.Solar - API</title> <meta charset="utf-8" /> <link rel="icon" href="//forecast.solar/favicon.ico" type="image/x-icon"> <link rel="shortcut icon" href="//forecast.solar/favicon.ico" type="image/x-icon"> <link rel="stylesheet" type="text/css" media="screen" href="//forecast.solar/css/normalize.min.css"> <link rel="stylesheet" type="text/css" media="screen" href="//forecast.solar/css/api.css"> </head> <body> <h2>Result</h2><table class="level-0"><tbody><tr><td class="key">2022-03-10 06:32:00</td><td class="value">0</td></tr><tr><td class="key">2022-03-10 06:46:00</td><td class="value">153</td></tr><tr><td class="key">2022-03-10 07:00:00</td><td class="value">919</td></tr><tr><td class="key">2022-03-10 08:00:00</td><td class="value">7363</td></tr><tr><td class="key">2022-03-10 09:00:00</td><td class="value">16218</td></tr><tr><td class="key">2022-03-10 10:00:00</td><td class="value">26070</td></tr><tr><td class="key">2022-03-10 11:00:00</td><td class="value">36358</td></tr><tr><td class="key">2022-03-10 12:00:00</td><td class="value">46200</td></tr><tr><td class="key">2022-03-10 13:00:00</td><td class="value">54378</td></tr><tr><td class="key">2022-03-10 14:00:00</td><td class="value">60742</td></tr><tr><td class="key">2022-03-10 15:00:00</td><td class="value">64838</td></tr><tr><td class="key">2022-03-10 16:00:00</td><td class="value">66617</td></tr><tr><td class="key">2022-03-10 17:00:00</td><td class="value">67139</td></tr><tr><td class="key">2022-03-10 18:00:00</td><td class="value">67208</td></tr><tr><td class="key">2022-03-10 18:10:00</td><td class="value">67210</td></tr><tr><td class="key">2022-03-10 18:19:00</td><td class="value">67210</td></tr><tr><td class="key">2022-03-11 06:30:00</td><td class="value">0</td></tr><tr><td class="key">2022-03-11 06:45:00</td><td class="value">153</td></tr><tr><td class="key">2022-03-11 07:00:00</td><td class="value">909</td></tr><tr><td class="key">2022-03-11 08:00:00</td><td class="value">6437</td></tr><tr><td class="key">2022-03-11 09:00:00</td><td class="value">13558</td></tr><tr><td class="key">2022-03-11 10:00:00</td><td class="value">21620</td></tr><tr><td class="key">2022-03-11 11:00:00</td><td class="value">30210</td></tr><tr><td class="key">2022-03-11 12:00:00</td><td class="value">38614</td></tr><tr><td class="key">2022-03-11 13:00:00</td><td class="value">46008</td></tr><tr><td class="key">2022-03-11 14:00:00</td><td class="value">51793</td></tr><tr><td class="key">2022-03-11 15:00:00</td><td class="value">55556</td></tr><tr><td class="key">2022-03-11 16:00:00</td><td class="value">57312</td></tr><tr><td class="key">2022-03-11 17:00:00</td><td class="value">57870</td></tr><tr><td class="key">2022-03-11 18:00:00</td><td class="value">57940</td></tr><tr><td class="key">2022-03-11 18:11:00</td><td class="value">57942</td></tr><tr><td class="key">2022-03-11 18:21:00</td><td class="value">57942</td></tr></tbody></table></body> </html>
-
OK - auch damit bleibt es bei dem RegEx
Jetzt muss ich nur noch wissen was du versucht hattest, damit ich es dir erklären kann
-
@homoran said in Parser Aapter:
17:00[^e]+e">(\d+)
https://www.machs-smart.de/daten-aus-webseiten-extrahieren-mit-parser-und-regex/
hab versucht was hier erklärt wird umzusetzen. Wie gesagt hab keine Ahnung vom programmieren
-
@haihappen85 sagte in Parser Aapter:
hab versucht was hier erklärt wird umzusetzen
das glaube ich. Aber was ist dabei herausgekommen.
Wie soll ich deinen Denkfehler (hat nix mit eigentlichem Programmieren zu tun!) erkennen und "heilen" wenn ich nicht weiß wie du gedacht hattest? -
@homoran
das Ergebnis bei dem Regex ist hier aktuell "false"Welchen Typ muss ich verwenden? Json? ich bräuchte es als Zahl
-
@haihappen85 sagte in Parser Aapter:
Welchen Typ muss ich verwenden? Json? ich bräuchte es als Zahl
und warum dann JSON?
-
@homoran
17:00[^e]+e">(\d+)
du suchst hier nach der Zahl 17:00. DAs hatte ich auch getestet. Aber wie er mir dann die Zahl danach raus gibt war mir nicht klar und da hat mir auch die seite nicht weiter geholfen. -
@haihappen85 sagte in Parser Aapter:
Aber wie er mir dann die Zahl danach raus gibt war mir nicht klar
die Zahl ist
\d+
+=mehrere \d= Digits und weil das dein Ergebnis sein soll muss das in eine Gruppe=runde Klammern ().Dann musst du dir noch einen Weg suchen um von 17:00 zu der Zahl zu kommen.
Die Langversion wäre17:00:00<\/td><td class="value">(\d+)
der Backslash vor dem / muss dahin, damit dieses als Zeichen und nicht als Befehl erkannt wird -
@homoran
weil ich alles andere durch probiert habe und das Ergebnis immer "false" istboolean gibt mir ja wahr oder falsch zurück
number hätte ich als zahl erwartet
String ein Text
json kenn ich nicht.Hab die Rolle auf Wert gestellt und den Typ auf Number(.)
in den Objekten wird mir aber "false" angezeigt.
-
@haihappen85 sagte in Parser Aapter:
number hätte ich als zahl erwartet
genau -wo ist das Problem?
@haihappen85 sagte in Parser Aapter:
in den Objekten wird mir aber "false" angezeigt.
und was steht im Editorfenster unter dem Quelltext?
nach Ändern des Typs kommt es manchmal zu Fehlern.
Dann die Regel bitte nochmal komplett löschen und neu anlegen -
@homoran
MOD-EDIT: private Daten entfernt!das er mir hier schon gar kein Ergebnis anzeigt.
somit steht dann unter Objekten "false" -
@haihappen85 sagte in Parser Aapter:
das er mir hier schon gar kein Ergebnis anzeigt.
was steht denn da im Quelltext?
das ist doch nicht, was du mir geschickt hattestdas war dann wohl doch
@homoran sagte in Parser Aapter:
ist das der echte vollständige Quellcode und nicht die aufgearbeitete HTML-Seite?
Schicke mir mal was in dem Fenster steht
-
@homoran
oh entschuldigung. ich dachte wenn ich im Firefox auf Seitenquelltext anzeigen klicke dass das dann der Quelltext ist.{"result":{"2022-03-10 06:32:00":0,"2022-03-10 06:46:00":153,"2022-03-10 07:00:00":919,"2022-03-10 08:00:00":7363,"2022-03-10 09:00:00":16218,"2022-03-10 10:00:00":26070,"2022-03-10 11:00:00":36358,"2022-03-10 12:00:00":46200,"2022-03-10 13:00:00":54378,"2022-03-10 14:00:00":60742,"2022-03-10 15:00:00":64838,"2022-03-10 16:00:00":66617,"2022-03-10 17:00:00":67139,"2022-03-10 18:00:00":67208,"2022-03-10 18:10:00":67210,"2022-03-10 18:19:00":67210,"2022-03-11 06:30:00":0,"2022-03-11 06:45:00":153,"2022-03-11 07:00:00":909,"2022-03-11 08:00:00":6437,"2022-03-11 09:00:00":13558,"2022-03-11 10:00:00":21620,"2022-03-11 11:00:00":30210,"2022-03-11 12:00:00":38614,"2022-03-11 13:00:00":46008,"2022-03-11 14:00:00":51793,"2022-03-11 15:00:00":55556,"2022-03-11 16:00:00":57312,"2022-03-11 17:00:00":57870,"2022-03-11 18:00:00":57940,"2022-03-11 18:11:00":57942,"2022-03-11 18:21:00":57942},"message":{"code":0,"type":"success","text":"","info":{..MOD-EDIT: private Daten entfernt!**, DE","timezone":"Europe/Berlin"},"ratelimit":{"period":3600,"limit":12,"remaining":6}}}
-
@haihappen85 sagte in Parser Aapter:
ich dachte wenn ich im Firefox auf Seitenquelltext anzeigen klicke dass das dann der Quelltext ist.
sollte auch.
Aber der Parser liest was anderes.
Wo kommt das denn her. sieht wie eine JSON-Abfrage ausPS nimm mal deine privaten Daten aus Screenshot und Code
-
@haihappen85
17:00:00":(\d+)
-
@homoran
hab den Parser Adapter installiert und dann kann ich so eine Regel hinzufügenin die Url trag ich die Webadresse ein und über bearbeiten rechts dann eben den RegEx.