FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: NE555 am 18 Juni 2022, 21:19:13

Titel: suche nach Regular Expression für HTTPMOD
Beitrag von: NE555 am 18 Juni 2022, 21:19:13
Einen guten Tag allerseits, bitte freundlichst um Unterstützung.

Ich möchte mit HTTPMOD aus der Webseite:
https://www.agrarwetter.net/Agrarwetter-Aktuell/Hamburg.Ist.html

Zeile 1594 - 1616
<td valign='top' align='left' bgcolor='#E0F0C1' class='MITTEFORMULARSPALTE_WETTER' width='142'><span class='SCHRIFT_FORMULARFELDBESCHRIFTUNG_MITTE_WETTER'>Temperatur</span></td>
<td class='FARBE_FORMULAR_MITTE'><img src='/Wetter_image/Wetter-Agrarwetter.gif' class=imageleer alt='Wetter-Agrarwetter' title='Wetter-Agrarwetter' width='2' height='1' vspace='0' hspace='0' class='FARBE_FORMULAR_MITTE'></td> <td valign='top' align='left' bgcolor='#ffffff' class='MITTEFORMULARSPALTE_WETTER' width='20%' ><span class='SCHRIFT_FORMULAR_WERTE_MITTE'>21,2 &deg;C</span></td>
</tr>
<tr><td><img src='/Wetter_image/Wetter-Agrarwetter.gif' class=imageleer alt='Wetter-Agrarwetter' title='Wetter-Agrarwetter' width='142' height='1' hspace='0' vspace='0' border='0' ></td><td colspan='2' class='FARBE_FORMULAR_MITTE'><img src='/Wetter_image/Wetter-Agrarwetter.gif' class=imageleer alt='Wetter-Agrarwetter' title='Wetter-Agrarwetter' height='2' width='1' vspace='0' hspace='0'></td></tr>
<tr>
<td valign='top' align='left' bgcolor='#E0F0C1' class='MITTEFORMULARSPALTE_WETTER' width='142'><span class='SCHRIFT_FORMULARFELDBESCHRIFTUNG_MITTE_WETTER'>Luftdruck</span></td>
<td class='FARBE_FORMULAR_MITTE'><img src='/Wetter_image/Wetter-Agrarwetter.gif' class=imageleer alt='Wetter-Agrarwetter' title='Wetter-Agrarwetter' width='2' height='1' vspace='0' hspace='0' class='FARBE_FORMULAR_MITTE'></td> <td valign='top' align='left' bgcolor='#ffffff' class='MITTEFORMULARSPALTE_WETTER' width='20%' ><span class='SCHRIFT_FORMULAR_WERTE_MITTE'>1015,9 hPa</span></td>
</tr>
<tr><td><img src='/Wetter_image/Wetter-Agrarwetter.gif' class=imageleer alt='Wetter-Agrarwetter' title='Wetter-Agrarwetter' width='142' height='1' hspace='0' vspace='0' border='0' ></td><td colspan='2' class='FARBE_FORMULAR_MITTE'><img src='/Wetter_image/Wetter-Agrarwetter.gif' class=imageleer alt='Wetter-Agrarwetter' title='Wetter-Agrarwetter' height='2' width='1' vspace='0' hspace='0'></td></tr>
<tr>
<td valign='top' align='left' bgcolor='#E0F0C1' class='MITTEFORMULARSPALTE_WETTER' width='142'><span class='SCHRIFT_FORMULARFELDBESCHRIFTUNG_MITTE_WETTER'>Wetterzustand</span></td>
<td class='FARBE_FORMULAR_MITTE'><img src='/Wetter_image/Wetter-Agrarwetter.gif' class=imageleer alt='Wetter-Agrarwetter' title='Wetter-Agrarwetter' width='2' height='1' vspace='0' hspace='0' class='FARBE_FORMULAR_MITTE'></td> <td valign='top' align='left' bgcolor='#ffffff' class='MITTEFORMULARSPALTE_WETTER' width='20%' ><span class='SCHRIFT_FORMULAR_WERTE_MITTE'><nobr><img src='https://www.proplanta.de/wetterdaten/images/symbole/n4.gif' class=imageleer alt='Wetterzustand: stark bewölkt' title='Wetterzustand: stark bewölkt' ></nobr></span></td>
</tr>
<tr><td><img src='/Wetter_image/Wetter-Agrarwetter.gif' class=imageleer alt='Wetter-Agrarwetter' title='Wetter-Agrarwetter' width='142' height='1' hspace='0' vspace='0' border='0' ></td><td colspan='2' class='FARBE_FORMULAR_MITTE'><img src='/Wetter_image/Wetter-Agrarwetter.gif' class=imageleer alt='Wetter-Agrarwetter' title='Wetter-Agrarwetter' height='2' width='1' vspace='0' hspace='0'></td></tr>
<tr>
<td valign='top' align='left' bgcolor='#E0F0C1' class='MITTEFORMULARSPALTE_WETTER' width='142'><span class='SCHRIFT_FORMULARFELDBESCHRIFTUNG_MITTE_WETTER'>relative Feuchte</span></td>
<td class='FARBE_FORMULAR_MITTE'><img src='/Wetter_image/Wetter-Agrarwetter.gif' class=imageleer alt='Wetter-Agrarwetter' title='Wetter-Agrarwetter' width='2' height='1' vspace='0' hspace='0' class='FARBE_FORMULAR_MITTE'></td> <td valign='top' align='left' bgcolor='#ffffff' class='MITTEFORMULARSPALTE_WETTER' width='20%' ><span class='SCHRIFT_FORMULAR_WERTE_MITTE'>60 %</span></td>
</tr>
<tr><td><img src='/Wetter_image/Wetter-Agrarwetter.gif' class=imageleer alt='Wetter-Agrarwetter' title='Wetter-Agrarwetter' width='142' height='1' hspace='0' vspace='0' border='0' ></td><td colspan='2' class='FARBE_FORMULAR_MITTE'><img src='/Wetter_image/Wetter-Agrarwetter.gif' class=imageleer alt='Wetter-Agrarwetter' title='Wetter-Agrarwetter' height='2' width='1' vspace='0' hspace='0'></td></tr>
<tr>
<td valign='top' align='left' bgcolor='#E0F0C1' class='MITTEFORMULARSPALTE_WETTER' width='142'><span class='SCHRIFT_FORMULARFELDBESCHRIFTUNG_MITTE_WETTER'>Taupunkt</span></td>
<td class='FARBE_FORMULAR_MITTE'><img src='/Wetter_image/Wetter-Agrarwetter.gif' class=imageleer alt='Wetter-Agrarwetter' title='Wetter-Agrarwetter' width='2' height='1' vspace='0' hspace='0' class='FARBE_FORMULAR_MITTE'></td> <td valign='top' align='left' bgcolor='#ffffff' class='MITTEFORMULARSPALTE_WETTER' width='20%' ><span class='SCHRIFT_FORMULAR_WERTE_MITTE'>12,8 &deg;C</span></td>
</tr>


mit reading01Regex das Wort "Temperatur" und die, nach ca. 380 Zeichen folgende "21,2 &deg;C" auslesen, sowie im weiteren reading02Regex das Wort "Taupunkt" mit dem, nach ca. 380 Zeichen später folgenden "12,8 &deg;C" auslesen.

Dazu teste ich die Regular Expression auf der Seite:
https://regex101.com/

Mit
([Temperatur])(.{200,400}>)([-]?[0-5]?[0-9][,][0-9])(\D&deg;C)
wird nicht das Wort "Temperatur" und die "21,2 &deg;C" gleichzeitig erfasst,
([-]?[0-5]?[0-9][,][0-9])(\D&deg;C)
klappt für die erste Temperaturangabe. Um sicher zu gehen, möchte ich "Temperatur" und "21,2 &deg;C" auslesen.
Selbst, wenn ich Testweise den kompletten Abschnitt der Webseite in den Regular Expression nehme, klappt es nicht.
Gibt es eine Beschränkung für (.{200,400}>)?
Oder eine Möglichkeit?
Hat jemand eine Idee?
Titel: Antw:suche nach Regular Expression für HTTPMOD
Beitrag von: DetlefR am 19 Juni 2022, 00:11:58
Hallo,

sicher ist das Auslesen nicht, da es keinen wirklich eindeutigen Bezug gibt.
Versuch es mal mit Abzählen. Im Beispiel die ">"(Temperatur)(?:[^>]+>){7}(\d+,\d+)
Bei Taupunkt sind es auch sieben ">"
Titel: Antw:suche nach Regular Expression für HTTPMOD
Beitrag von: betateilchen am 19 Juni 2022, 11:28:59
Zitat von: DetlefR am 19 Juni 2022, 00:11:58
sicher ist das Auslesen nicht, da es keinen wirklich eindeutigen Bezug gibt.

Wieso nicht?

Versuchen wir doch mal, das Vorhaben auf das Wesentliche zu abstrahieren.


Mit diesen Vorgaben sollte sich die Aufgabe problemlos lösen lassen.
Die Reihenfolge der Zeilen spielt dann auch keine Rolle mehr.

(ich würde dafür übrigens nicht HTTPMOD, sondern eine eigene Funktion zur HTML-Tabellenextraktion verwenden)