Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. ioBroker Allgemein
    4. [GELÖST] Hilfe beim Parsen mit RegEx

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    [GELÖST] Hilfe beim Parsen mit RegEx

    This topic has been deleted. Only users with topic management privileges can see it.
    • frank2604
      frank2604 last edited by frank2604

      Hallo zusammen,

      kann mir jemand mit einer Regular Expression helfen?

      Ich möchte von der Seite des Köln-Bonner Flughafens die Betriebsrichtung der Abflüge herauslesen, also die letze Bahn für Abflüge.

      https://www.koeln-bonn-airport.de/unternehmen/umwelt-und-laermschutz/betriebsrichtung-live.html

      Die kann sein 14L, 32R, 14R, 32L, 06 oder 24. Daraus kann ich ableiten ob die über uns hinweg starten oder eben nicht.

      Der Schnipsel im Quellcode sieht so aus:

      class=brtr1><td>letzte Bahn für Abflüge:</td><td>32R</td></tr>
      

      Ich habe versucht mich mit https://regex101.com der Sache zu nähern, aber ich bekomme in meinen Ausdrücken immer den '/' aus </td> moniert.

      PS: Komischerweise hat das hier schon mal für ein paar Stunden im Parser-Adpater funktioniert, jetzt aber nicht mehr:

      letzte Bahn für Abflüge:</td><td>(\w+)</td></tr>

      VG

      Frank

      liv-in-sky 1 Reply Last reply Reply Quote 0
      • liv-in-sky
        liv-in-sky @frank2604 last edited by

        @frank2604 sagte in Hilfe beim Parsen mit RegEx:

        </td><td>(\w+)</td></tr>

        <\/td><td>(\w+)<\/td><\/tr>
        
        frank2604 1 Reply Last reply Reply Quote 1
        • frank2604
          frank2604 @liv-in-sky last edited by

          @liv-in-sky

          Funktioniert! Vielen Dank!

          Grüße

          Frank

          liv-in-sky 1 Reply Last reply Reply Quote 0
          • liv-in-sky
            liv-in-sky @frank2604 last edited by

            @frank2604 gerne

            frank2604 1 Reply Last reply Reply Quote 0
            • frank2604
              frank2604 @liv-in-sky last edited by

              So, nachdem ich nun alles erfolgreich umgesetzt habe hier mal das Ergebnis. Vielleicht hilft es als kleines Übungsbeispiel anderen Anfängern wie mir beim Einstieg in den Parser-Adapter - man muss ja auch mal was ans Forum zurückgeben 😉

              Ziel war es, die Daten zur Betriebsrichtung des Flughafens KölnBonn zwecks Weiterverarbeitung in VIS auszulesen und zu historisieren. Je nach Startbahn, die meist von der Windrichtung vorgegeben ist, bekommen wir hier etwas Fluglärm von den Abflügen Richtung Nordwest ab.

              Der Flughafen stellt die Betriebsrichtung auf seiner Webseite dar, die sich leider nicht als iFrame in VIS einbinden lässt.

              https://www.koeln-bonn-airport.de/unternehmen/umwelt-und-laermschutz/betriebsrichtung-live.html

              Webseite.jpg

              im Browser lässt man sich den Quellcode der Webseite anzeigen und such nach der Stelle mit den gewünschten Informationen.

              Der Code mit der Tabelle unter der Kartendarstellung sieht so aus:

              <div id="c2102" class="frame frame-default frame-type-list frame-layout-0"><div class="tx-cgn-modules"><p style='margin:5px 0px 10px 0px;'>Auswertungszeitraum: 17.11.2020 07:49 - 08:49</p><h2>Ankunft</h2><table class="betriebsrichtungtab table table-condensed"><tr valign=top class=brtr0><td class='col-xs-6'>Ankünfte gesamt im Auswertungszeitraum:</td><td>4</td></tr><tr class=brtr1><td>letzte Bahn für Ankünfte:</td><td>24</td></tr><!--<tr><td>Anzahl:</td><td>4</td></tr>--><tr class=brtr0><td>letzter Flugzeugtyp:</td><td>unbekannt: DF20X (19,1t)</td></tr></table><h2>Abflug</h2><table class="betriebsrichtungtab table table-condensed"><tr valign=top class=brtr0><td class='col-xs-6'>Abflüge gesamt im Auswertungszeitraum:</td><td>2</td></tr><tr class=brtr1><td>letzte Bahn für Abflüge:</td><td>14L</td></tr><!--<tr><td>Anzahl:</td><td>2</td></tr>--><tr class=brtr0><td>letzter Flugzeugtyp:</td><td>Bombardier BD-700 Global Express   (45,1t)</td></tr></table><h2>Wetterdaten</h2><table class="betriebsrichtungtab table table-condensed"><tr class=brtr0><td class='col-xs-6'>Luftdruck (hPa):</td><td>1024</td></tr><tr class=brtr1><td>Lufttemperatur (°C):</td><td>11,0</td></tr><tr class=brtr0><td>Windgeschwindigkeit (m/s):</td><td> 4,1</td></tr><tr class=brtr1><td>Windrichtung (°):</td><td>200</td></tr><tr class=brtr0><td>Taupunkt (°C):</td><td>8,0</td></tr><tr class=brtr1><td>Relative Luftfeuchtigkeit (%):</td><td>81</td></tr></table><script language="javascript"><!--//
              

              Um nun eine Regular Expression zu erstellen und zu testen bietet sich ein Online-Tool an: https://regex101.com

              RegEx101.jpg

              In die untere große Box den Quellcode reinschmeißen, oben die RegEx

              Denkt an die eliminierenden \ vor eventuellen / im Quellcode. Siehe die Lösung des Problems oben von @liv-in-sky

              Hier die Ausdrücke, mit denen ich meine 7 Datenpunkte auslese:

              Abflüge gesamt im Auswertungszeitraum:</td><td>(\d+)</td>
              letzte Bahn für Abflüge:</td><td>(\w+)</td>
              letzter Flugzeugtyp:</td><td>(.?)<
              Ankünfte gesamt im Auswertungszeitraum:</td><td>(\d+)</td>
              letzte Bahn für Ankünfte:</td><td>(\w+)</td>
              letzter Flugzeugtyp:</td><td>(.
              ?)<
              Auswertungszeitraum: (.*?)<

              Im Adapter sieht das ganze dann so aus:

              Adapter.jpg

              Da der Teil 'letzter Flugzeugtyp' zweifach gefunden wird, muss man in der Spalte Num einmal 0 für den ersten Treffer und einmal 1 für den zweiten Treffer angeben.

              Ergebnis in der Objektansicht:

              ioBroker.jpg

              Grüße

              Frank

              frank2604 1 Reply Last reply Reply Quote 1
              • frank2604
                frank2604 @frank2604 last edited by

                Hallo @liv-in-sky

                Kannst Du mir vielleicht nochmal helfen?

                Was muss ich tun, wenn mein String, den ich zum finden der Stelle angebe, schon Klammern hat:

                Windgeschwindigkeit (m/s):<\/td><td> (\d+)<
                

                Danke

                Frank

                liv-in-sky 1 Reply Last reply Reply Quote 0
                • liv-in-sky
                  liv-in-sky @frank2604 last edited by liv-in-sky

                  @frank2604

                  wie beim letzten mal - einen backslash davor - so wird dem regex gesagt, dass die klammer eine zeichen ist und kein regex-befehl

                  \(..\)
                  
                  frank2604 1 Reply Last reply Reply Quote 1
                  • frank2604
                    frank2604 @liv-in-sky last edited by

                    @liv-in-sky

                    Oh man ... So einfach? Da hätte ich auch selber drauf kommen können.

                    Danke!

                    Frank

                    1 Reply Last reply Reply Quote 0
                    • M
                      mueller-esch last edited by mueller-esch

                      Hallo Zusammen, ich habe ein ähnliches Problem, aber noch nicht gelöst. Auf der folgenden WebSeite will ich einen speziellen Betrag auslesen:

                      <!DOCtype HTML PUBLIC "-//W3C//Dtd HTML 4.0 Transitional//EN">
                      <html>
                      <head>
                      <meta HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=ISO-8859-1">
                      <meta name="Generator" CONTENT="ChrisB">
                      <title>PV Webserver</title>
                      </head>
                      <body nof="(MB=(DefaultMasterborder, 65, 60, 150, 10), L=(HomeLayout, 700, 600))" bgcolor="#EAF7F7" text="#000000" link="#0033CC" vlink="#990099" alink="#FF0000" topmargin=0 leftmargin=0 marginwidth=0 marginheight=0>
                      <form method="post" action="">
                      
                      <table cellspacing="0" cellpadding="0" width="770" nof="ly">
                      <tr><td height="5"></td></tr>
                      <tr><td width="190" height="55"></td>
                      <td width="400">
                        <font face="Arial,Helvetica,Geneva,Sans-serif,sans-serif" size="+3">
                        PIKO 8.3
                      <br><font size="+1">                 
                        Sunny_Esch (1)
                      </font>
                      </font>
                      </td>
                      <td><img alt="Logo" height="42" width="130" src="KSE.gif"></td>
                      </tr>
                      </table>
                      
                      <font face="Arial,Helvetica,Geneva,Sans-serif,sans-serif">
                      <table Border="0" width="100%"><tr>
                      <td width="150"></td>
                      <td> <hr> </td>
                      </tr></table>
                      <table cellspacing="0" cellpadding="0" width="770">
                      <tr><td></td></tr>
                      <tr>
                      <td width="190"></td>
                      <td colspan="2">
                        <b>AC-Leistung</b></td>
                      <td>&nbsp</td>
                      <td>
                        <b>Energie</b></td></tr>
                      <tr><td height="10"></td></tr>
                      
                      <tr>
                      <td width="190"></td>
                      <td width="100">
                        aktuell</td>
                      <td width="70" align="right" bgcolor="#FFFFFF">
                        1465</td>
                      <td width="140">&nbsp W</td>
                      <td width="100">
                        Gesamtertrag</td>
                      <td width="70" align="right" bgcolor="#FFFFFF">
                        82833</td>
                      <td width="50">&nbsp kWh</td>
                      <td>&nbsp</td></tr>
                      <tr height="5"><td></td></tr>
                      <tr>
                      <td width="190"></td>
                      <td width="100">
                        Status</td>
                      <td colspan="4">
                        Einspeisen MPP</td>
                      <td>&nbsp</td></tr>
                      <tr height="8"><td></td></tr>
                      <tr><td colspan="7">
                      <table align="top" width="100%"><tr>
                      <td width="182"></td>
                      <td><hr size="1"></font></td>
                      </tr><tr><td height="5"></td></tr></table>
                      </td></tr>
                      
                      <tr>
                      <td width="190"></td>
                      <td colspan="2">
                        <b>PV-Generator</b></td>
                      <td width="140">&nbsp</td>
                      <td colspan="2">
                        <b>Ausgangsleistung</b></td>
                      <td width="30">&nbsp</td>
                      <td>&nbsp</td></tr>
                      <tr><td height="10"></td></tr>
                      <tr>
                      <td width="190"></td>
                      <td width="100">
                        <u>String 1</u></td>
                      <td width="70">&nbsp</td>
                      <td width="140">&nbsp</td>
                      <td width="95">
                        <u>L1</u></td>
                      <td width="70">&nbsp</td>
                      <td width="30">&nbsp</td>
                      <td>&nbsp</td></tr>
                      <tr>
                      <td width="190"></td>
                      <td width="100">
                        Spannung</td>
                      <td width="70" align="right" bgcolor="#FFFFFF">
                        421</td>
                      <td width="140">&nbsp V</td>
                      <td width="100">
                        Spannung</td>
                      <td width="70" align="right" bgcolor="#FFFFFF">
                        230</td>
                      <td width="30">&nbsp V</td>
                      <td>&nbsp</td></tr>
                      <tr height="2"><td></td></tr>
                      <tr valign="top" align="left">
                      <td width="190">&nbsp</td>
                      <td width="100">
                        Strom</td>
                      <td width="70" align="right" bgcolor="#FFFFFF">
                        2.08</td>
                      <td width="140">&nbsp A</td>
                      <td width="100">
                        Leistung</td>
                      <td width="70" align="right" bgcolor="#FFFFFF">
                        478</td>
                      <td width="30">&nbsp W</td>
                      <td>&nbsp</td></tr>
                      <tr height="22"><td></td></tr>
                      <tr>
                      <td width="190"></td>
                      <td width="100">
                        <u>String 2</u></td>
                      <td width="70">&nbsp</td>
                      <td width="140">&nbsp</td>
                      <td width="100">
                        <u>L2</u></td>
                      <td width="70">&nbsp</td>
                      <td width="30">&nbsp</td>
                      <td>&nbsp</td></tr>
                      <tr>
                      <td width="190"></td>
                      <td width="100">
                        Spannung</td>
                      <td width="70" align="right" bgcolor="#FFFFFF">
                        358</td>
                      <td width="140">&nbsp V</td>
                      <td width="100">
                        Spannung</td>
                      <td width="70" align="right" bgcolor="#FFFFFF">
                        231</td>
                      <td width="30">&nbsp V</td>
                      <td>&nbsp</td></tr>
                      <tr height="2"><td></td></tr>
                      <tr valign="top" align="left">
                      <td width="190">&nbsp</td>
                      <td width="100">
                        Strom</td>
                      <td width="70" align="right" bgcolor="#FFFFFF">
                        2.02</td>
                      <td width="140">&nbsp A</td>
                      <td width="100">
                        Leistung</td>
                      <td width="70" align="right" bgcolor="#FFFFFF">
                        486</td>
                      <td width="30">&nbsp W</td>
                      <td>&nbsp</td></tr>
                      <tr height="22"><td></td></tr>
                      <tr>
                      <td width="190"></td>
                      <td width="100">
                        <u> </u></td>
                      <td width="70">&nbsp</td>
                      <td width="140">&nbsp</td>
                      <td width="100">
                        <u>L3</u></td>
                      <td width="70">&nbsp</td>
                      <td width="30">&nbsp</td>
                      <td>&nbsp</td></tr>
                      <tr>
                      <td width="190"></td>
                      <td width="100">
                         </td>
                      <td width="70" align="right" bgcolor="#EAF7F7">
                         </td>
                      <td width="140">&nbsp
                         </td>
                      <td width="95">
                        Spannung</td>
                      <td width="70" align="right" bgcolor="#FFFFFF">
                        232</td>
                      <td width="30">&nbsp V</td>
                      <td>&nbsp</td></tr>
                      <tr height="2"><td></td></tr>
                      <tr valign="top" align="left">
                      <td width="190">&nbsp</td>
                      <td width="95">
                         </td>
                      <td width="70" align="right" bgcolor="#EAF7F7">
                         </td>
                      <td width="140">&nbsp
                       </td>
                      <td width="95">
                        Leistung</td>
                      <td width="70" align="right" bgcolor="#FFFFFF">
                        501</td>
                      <td width="30">&nbsp W</td>
                      <td>&nbsp</td></tr>
                      
                      <tr><td height="15"></td></tr>
                      <tr><td colspan="7">
                      <table align="top" width="100%">
                      <tr><td width="182"></td>
                      <td><hr size="1"></font></td>
                      </tr><tr><td height="5"></td></tr></table>
                      </td></tr></table>
                      <table cellspacing="0" cellpadding="0" width="770">
                      <tr><td width="190"></td>
                      <td><font face="Arial,Helvetica,Geneva,Sans-serif">
                      <b>RS485 Kommunikation</b></td></tr>
                      <tr><td height="8"></td></tr>
                      <tr><td width="190"></td>
                      <td><font face="Arial,Helvetica,Geneva,Sans-serif">
                      Wechselrichter&nbsp
                      <input type="Text" name="edWrNr" value="1" size="3" maxlength="3">
                      <input type="submit" value="Anzeigen/Aktualisieren">
                      </td></tr><tr><td height="10"></td></tr>
                      </table>
                      </td></tr></table></font>
                      
                      <hr>
                      <font face="Arial,Helvetica,Geneva,Sans-serif,sans-serif">
                      <table cellspacing="0" cellpadding="0" width="770">
                      <tr><td height="5"></td></tr>
                      <tr><td width="190"></td>
                      <td width="330">
                      <a href="LogDaten.dat">Historie</a>
                      &nbsp &nbsp &nbsp
                      <a href="Info.fhtml">Infoseite</a></td>
                      <td align="right">
                      <a href="Solar2.fhtml">Einstellungen</a></td>
                      <td width="50"></td>
                      </tr></table></font>
                      </form>
                      </body>
                      </html>
                      
                      

                      im regex101 bekomme ich mit folgendem RegEx-Code

                      Gesamtertrag<\/td>\n<td.*>\n\s*(\d*)<\/td>
                      

                      den richtigen Betrag zurück. Im Parser-Adapter aber nicht. Hat jemand eine Idee?

                      Was im Parser-Adapter unter der Spalte RegEx den Ausdruck "td" jeweils rot unterstrichen, so als wäre hier die Syntax nicht richtig.

                      Homoran 1 Reply Last reply Reply Quote 0
                      • Homoran
                        Homoran Global Moderator Administrators @mueller-esch last edited by

                        @mueller-esch sagte in [GELÖST] Hilfe beim Parsen mit RegEx:

                        Hat jemand eine Idee?

                        Ja!
                        \n klappt im parser Adapter nicht

                        versuch mal: tertrag<\/td>[^>]+>\s+(\d+)

                        M 1 Reply Last reply Reply Quote 0
                        • M
                          mueller-esch @Homoran last edited by

                          @homoran sagte in [GELÖST] Hilfe beim Parsen mit RegEx:

                          </td>[^>]+>\s+(\d+)

                          ....das ist ja Wahnsinn. Ich war ja noch nicht mal ganz fertig mit meinem "Sermon". das Ding klappt.
                          Super. Danke vielmals

                          Homoran 1 Reply Last reply Reply Quote 0
                          • Homoran
                            Homoran Global Moderator Administrators @mueller-esch last edited by

                            @mueller-esch schön, dass es klappt.

                            Ist das mal wieder ein alter Kostal?

                            M 1 Reply Last reply Reply Quote 0
                            • M
                              mueller-esch @Homoran last edited by

                              @homoran Genau. Der ist von 5/2008 und liefert immer noch ohne Mucken die kWh aus dem All.

                              1 Reply Last reply Reply Quote 0
                              • First post
                                Last post

                              Support us

                              ioBroker
                              Community Adapters
                              Donate
                              FAQ Cloud / IOT
                              HowTo: Node.js-Update
                              HowTo: Backup/Restore
                              Downloads
                              BLOG

                              778
                              Online

                              31.9k
                              Users

                              80.1k
                              Topics

                              1.3m
                              Posts

                              parser adapter regex
                              4
                              13
                              635
                              Loading More Posts
                              • Oldest to Newest
                              • Newest to Oldest
                              • Most Votes
                              Reply
                              • Reply as topic
                              Log in to reply
                              Community
                              Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                              The ioBroker Community 2014-2023
                              logo