NEWS
Daten mit Parser Adapter auslesen
-
Moin
Ich habe mal eine Frage und zwar möchte ich mit dem Parser Adapter diverse Werte aus einer HTML auslesen wie von Geschäften die Öffnungszeiten an den jeweiligen Tagen und ob der Laden gerade offen oder geschlossen ist. die stellen im Code habe ich auch schon gefunden nur scheitert es gerade am RegEx. Hat das schonmal jemand gemacht und kann dabei evtl helfen?
-
@Denkra
Dafür wären der HTML Code Teil hilfreicher als ein Screenshot der Seite. -
@padrino Beispiel öffnungszeiten für heute stehen so drin:
<tr><td><span class="e_bold">Thursday</span></td><td><div class="hrRangeGrp"><div class="hrRange"><span class="e_bold">07:00 - 20:00</span></div></div></td></tr>
Ob der Laden jetzt gerade geöffnet ist steht so:
<span class="e_green b_positive">Open</span>
Wenn 2 Öffnungszeiten angegeben sind steht es so drin:
<tr><td>Friday</td><td><div class="hrRangeGrp"><div class="hrRange">08:00 - 13:00</div><div class="hrRange">15:00 - 18:00</div></div></td></tr>
-
da google jederzeit das layout so ändern kann, das regex ins leere laufen kann, wäre der Ansatz
über die Google Places API besser. Bei NPM gibt es dafür sogar eine Bibliothek.
Die notwendige Datenstruktur nennt sich opening_hourshttps://developers.google.com/places/web-service/details?hl=de
https://www.npmjs.com/package/google-places-webAlternativ kannst du ja mal die ganzen Seitensource bei regex101.com reinstellen
und das entsprechende pattern zusammenstellen, die du dann in den parser übernehmen kannst.Da sich aber die Öffnungszeiten bei google nicht ständig ändern, wäre direkt abschreiben wahrscheinlich einfacher
-
@OliverIO Ja das Problem ist, das man die Google API nicht mehr kostenlos bekommt. Deswegen der Umweg über den Code und Bing als Suchmaschine
-
ja das kostet was. 1000 abfragen für 3 US-Dollar. (0,003 USD) pro Abfrage
Für privat kann man so etwas schon bezahlen.
Für business berechnest du das deinem Kunden weiter. -
Hallo zusammen,
ich suche Unterstützung für die RexEX Abfrage der Patronen meies HP Druckers.
(?s)Patrone Schwarz(.?)([0-9-])% gibt mir auch auf https://regex101.com/ das richtige Ergebnis (z.B. 20 oder --)
Bei Übernahme in den Adapter bekomme ich allerdings gesagt Syntax Error "invalid group"! Hoffe jemand kann mir helfen. -
@Mike-Hellracer sagte in Daten mit Parser Adapter auslesen:
Hoffe jemand kann mir helfen.
ohne Quelltext leider nicht
-
Nachdem ich erfolgreich eine Webseite über den Parser mit RegEx auslesen kann habe ich jetzt das Problem, dass der Parser sich nach Stunden korrekter Funktion aufhängt also keine neuen Werte liefert obwohl sich die Werte in der Website ändern. Erst ein Neustart des Parser hilft dann. Gibt es dazu eine Lösung?
-
@werner2000x said in Daten mit Parser Adapter auslesen:
Gibt es dazu eine Lösung?
wenn man das Problem kennen würde, vielleicht.
Steht etwas im log?
-
@homoran Ja im Log steht, dass die Webseite nicht gelesen werden kann was aber merkwürdig ist, da die Webseite im lokalen Netz liegt. Es handelt sich um einen IPswitch-S0m-WiFi (ESP 8266) der als Stromzähler arbeitet.
-
3 Abfragen im abstand von 2! Millisekunden.
Da allerdings der Fehler eher auf Routing hindeutet, vermute ich, das da
eine flood-protection des Routers zum Einsatz einkommt.Ich denke dein Skript hat noch ein Problem und fragt zu oft ab.
Setzt du Zeitintervalle zur Abfrage ein? Dann bauen sich über die Zeit wahrscheinlich zuviele davon auf, die dann alle das Gerät mit Abfragen befeuern und irgendwann sagt der Router/Firewall NEIN -
@oliverio Ja Danke. Ich teste es mal mit Faktor 10 mehr Zeit. Die alten Abfragezeiten waren 1000ms, jetzt 10000ms. Mal sehen ob es klappt...
-
@werner2000x
ne wird nicht anders, es dauert nur länger bis das Problem wieder auftritt.
Prüfe dein Skript, du kannst es auch hier posten -
@oliverio Hier mein RegEx Script: .\d*.\d*.\d*(?=Wh)
und der Testtext aus der html:<html><head><title>ISm</title></head><h2>IPswitch-S0m-WiFi: <hr><pre>S0 = 19.119.291Wh + 3W<FONT SIZE='-2'>, min= 3W, max. 174W</FONT><br>Limit Output = 1<br>MQTT connected= 1<FONT SIZE='-2'>, vor= 158s, connected= 5140, reconnected= 5208</FONT><br><hr><br><a href="http://192.168.198.38?ref=5">start refresh</a> <a href="http://192.168.198.38?inf=1">?</a> <a href="http://192.168.198.38?mmr=1">reset min/max</a><br><hr> <img src="/chart.cvg"/></FONT></pre><br>
und das Ergebnis: 19.119.291
-
@werner2000x said in Daten mit Parser Adapter auslesen:
und der Testtext aus der html:
ist das der Quelltext, oder ein bereits in HTML umgewandelter?
-
@werner2000x said in Daten mit Parser Adapter auslesen:
<img src="/chart.cvg"/>
lädt hier eigentlich der Parser auch das Bild?
-
@homoran Das ist der Inhalt der Webseite im html Format, so wie der Parser die daten sieht.
-
@werner2000x OK!
in deinem Regex ist u.a. die 'Wh' mit in der Group, was ich nicht machen würde. ich würde mit0 = ([\d.]+)
arbeiten, aber ob das die Ursache ist???? -
@werner2000x said in Daten mit Parser Adapter auslesen:
@oliverio Hier mein RegEx Script: .\d*.\d*.\d*(?=Wh)
und der Testtext aus der html:Nutzt du den parser-Adapter?
Dann frage ich mich, wie die Abfragen im 2ms-Abstand zu Stande kamen.
ich denke der kann auch nicht so schnell