Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. ioBroker Allgemein
    4. Parser Regex

    NEWS

    • Monatsrückblick - April 2025

    • Minor js-controller 7.0.7 Update in latest repo

    • Save The Date: ioBroker@Smart Living Forum Solingen, 14.06.

    Parser Regex

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

      Hallo, ich versuche gerade daten einer Website auszulesen, leider nicht besonders erfolgreich....
      vielleicht hat mir hier jemand den passenden Denkanstoß.
      Haben möchte ich einen Zahlenwert, dieser muss gesucht werden:
      Zuerst muss "Wort1" gesucht werden, gefolgt von "Wort2" und dann "Wort3", hinter welchem der gesuchte Wert steht.

      Beispiel: gesucht ist der Wert "85" in
      xxxxxxxxxx"Wort2"xxxxxxxxxxxxxxxxxxxxxxx"Wort3"xxxxxxxxxxxxxxxxxxxxxxxxx"Wort1"xxxxxxxxxxxxxxxxxxxxx"Wort2"xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"Wort3"85
      Wort1, Wort2, Wort3 kommen mehrmals vor, aber nur einmal in dieser Reihenfolge - dahinter ist der gewünschte Wert.

      Wie kann ich danach suchen?

      Vielen Dank!

      Homoran 1 Reply Last reply Reply Quote 0
      • Homoran
        Homoran Global Moderator Administrators @ssk215 last edited by

        @ssk215 sagte in Parser Regex:

        Wie kann ich danach suchen?

        so wird sas nix 😉
        bitte aktuellen quelltext der Seite in code-tags posten, dann kann ich anhand des realen Beisp7els helfen.

        S 1 Reply Last reply Reply Quote 0
        • S
          ssk215 @Homoran last edited by ssk215

          @homoran, wusste nicht so recht wie ich das erklären soll, gesucht wird hier der Wert Temperatur aktuell "7,3°C"(Zeile 48), wäre so dran gegangen das erst nach "Mindelheim | 604m"(Zeile2) gesucht wird, dann nach dem nächsten "Temperatur"(Zeile32) dann nach "aktuell"(Zeile33) und zum Schluss nach dem darauf folgenden Zahlenwert.

          <tr>
           <td height="20" bgcolor="#000033" class="weiss">&nbsp;&nbsp;wetterwarte s&uuml;d | Mindelheim | 604m &uuml;ber NN </td>
          </tr>
          <tr>
           <td height="50" bgcolor="#FFFFFF">Die dargestellten Werte repräsentieren die Daten der letzten 24 Stunden!<br>
          Der Luftdruck ist auf Meeresh&ouml;he bezogen!<br>
          Die Mond-/Sonnen-Daten beziehen sich auf die Standortkoordinaten von 48° 2' 35" Nord  -  10° 29' 27" Ost</td>
          </tr>
          <tr>
           <td bgcolor="#FFFFFF"><table width="100%"  border="0" cellspacing="0" cellpadding="0">
             <tr bgcolor="#000033">
               <td height="1" colspan="5"></td>
               </tr>
             <tr onMouseOver="this.style.backgroundColor='#9999CC';" onMouseOut="this.style.backgroundColor='#FFFFFF'" align="left">
               <td width="170" bgcolor="#CCCCCC">&nbsp;&nbsp;Datum | Zeit</td>
               <td colspan="4"><table width="100%" border="0" cellpadding="5">
                 <tr>
                   <td width="60%">
                     <div align="center">Samstag, 2. November 2024
          </div></td>
                   <td width="3%">
                     <div align="center">|</div></td>
                   <td width="37%">
                     <div align="center">21:50</div></td>
                 </tr>
               </table></td>
               </tr>
             <tr bgcolor="#000033">
               <td height="1" colspan="5"></td>
               </tr>
             <tr onMouseOver="this.style.backgroundColor='#9999CC';" onMouseOut="this.style.backgroundColor='#FFFFFF'" align="left">
               <td width="170" height="40" bgcolor="#CCCCCC">&nbsp;&nbsp;Temperatur </td>
               <td height="40"><div align="center">aktuell<br>
                     <nobr>7,3°C</nobr><font size="5"><nobr></nobr></font></div></td>
               <td height="40"><div align="center">Min.(02:20)<br>
                     <nobr>4,4°C</nobr><font size="4"><nobr></nobr></font></div></td>
               <td height="40"><div align="center">Max.(22:00)<br>
                     <nobr>8,1°C</nobr><font size="4"><nobr></nobr></font></div></td>
               <td height="40"><div align="center">Durchschnitt<br>
                     <nobr>7,1°C</nobr></div></td>
             </tr>
             <tr bgcolor="#000033">
               <td height="1" colspan="5"></td>
               </tr>
             <tr onMouseOver="this.style.backgroundColor='#9999CC';" onMouseOut="this.style.backgroundColor='#FFFFFF'" align="left">
               <td width="170" height="40" bgcolor="#CCCCCC">&nbsp;&nbsp;Windchill</td>
               <td height="40" colspan="1" align="center" bordercolor="#000066">aktuell<br>
                   <nobr>7,3°C</nobr><font size="5"><nobr></nobr></font></td>
               <td height="40" colspan="1" align="center" bordercolor="#000066">Min.(02:30)<br>
                   <nobr>4,4°C</nobr><font size="4"><nobr></nobr></font></td>
               <td height="40" colspan="1" align="center" bordercolor="#000066">Max.(12:50)<br>
                   <nobr>8,0°C</nobr><font size="4"><nobr></nobr></font></td>
               <td height="40" colspan="1" align="center" bordercolor="#000066">Durchschnitt<br>
                   <nobr>7,1°C</nobr><font size="4"><nobr></nobr></font></td>
             </tr>
          
             <tr bgcolor="#000033">
               <td height="1" colspan="5"></td>
               </tr>
             <tr onMouseOver="this.style.backgroundColor='#9999CC';" onMouseOut="this.style.backgroundColor='#FFFFFF'" align="left">
               <td width="170" height="40" bordercolor="#000066" bgcolor="#CCCCCC"><nobr>&nbsp;&nbsp;Luftfeuchtigkeit</nobr></td>
               <td height="40" colspan="1" align="center" bordercolor="#000066">aktuell<br>
                   <nobr>87%</nobr><font size="5"><nobr></nobr></font></td>
               <td height="40" colspan="1" align="center" bordercolor="#000066">Min.(19:00)<br>
                   <nobr>85%</nobr><font size="4"><nobr></nobr></font></td>
               <td height="40" colspan="1" align="center" bordercolor="#000066">Max.(05:00)<br>
                   <nobr>96%</nobr><font size="4"><nobr></nobr></font></td>
               <td height="40" colspan="1" align="center" bordercolor="#000066">Durchschnitt<br>
                   <nobr>91%</nobr><font size="4"><nobr></nobr></font></td>
             </tr>
          
          Homoran 1 Reply Last reply Reply Quote 0
          • Homoran
            Homoran Global Moderator Administrators @ssk215 last edited by Homoran

            @ssk215 sagte in Parser Regex:

            wusste nicht so recht wie ich das erklären soll,

            deswegen immer zeigen

            40\"\sc[^u]+uell<br>[^>]+>([\d,]+) müsste passen
            bei der kürzeren Variante ell<br>[^>]+>([\d,]+) muss Num auf 1 oder 2 gesetzt werden, da 7,4°C zweimal vorkommt

            edit:
            geht einfacher
            er">a[^\d]+([\d,]+) und wenn es der zweite Treffer sein soll 6">a[^\d]+([\d,]+)

            S 1 Reply Last reply Reply Quote 0
            • S
              ssk215 @Homoran last edited by

              @homoran Was soll ich sagen - es funktioniert 🙂 -Vielen Dank -hat mir extrem auf die Sprünge geholfen wie das ganze funktioniert.
              Nur leider hatte ich mir das einfacher vorgestellt, insbesondere wenn noch mehr Werte aus dem Quelltext abgefragt werden sollen(Luftfeuchtigkeit etc.), deswegen auch die Frage mit dem Aufbau mit Schlüsselwörtern(Mindelheim, Temperatur, aktuell...)
              Ich hatte mir nach dem Denkanstoß von dir noch das gebastelt:

              / Mindelheim \| 604m.+Temperatur.+aktuell<br>[^>]+>([+-]?(?=\.\d|\d)(?:\d+)?(?:\.?\d*))(?:[eE]([+-]?\d+))?/s
              

              in https://regex101.com/ funktioniert das ganze, leider aber nicht im Parser bzw. ich weiß nicht wie ich die Option /s angeben kann/ob das überhaupt möglich ist.

              Viele Grüße

              Homoran OliverIO 2 Replies Last reply Reply Quote 0
              • Homoran
                Homoran Global Moderator Administrators @ssk215 last edited by Homoran

                @ssk215 sagte in Parser Regex:

                deswegen auch die Frage mit dem Aufbau mit Schlüsselwörtern(Mindelheim, Temperatur, aktuell...)

                der Weg ist prinzipiell richtig, aber nicht ganz so einfach.
                So ganz lange Sprünge gehen nicht. Man muss sich immer über Haltepunkte hangeln.
                Man (ich) sucht sich so dicht wie möglich an dem gesuchten Wert eine möglichst eindeutige Stelle. von Dort aus dann nahtlos weiter bis zum Wert.
                Einfach mehrere Worte die hintereinander irgendwo im Text virkommen, helfen nicht.

                ich arbeite auch über regex 101.
                Was soll beim neuen rauskommen?
                dein Versuch sagt da bei mir "pattern error"

                Luftfeuchtigkeit: /igk[^u]+[^\d]+(\d+)

                1 Reply Last reply Reply Quote 0
                • OliverIO
                  OliverIO @ssk215 last edited by

                  @ssk215

                  du kannst es mal so probieren
                  die s option von regex101 brauchst du nicht, da der parseradapter alle zeilenumbrüche mit einem leerzeichen ersetzt. daher ist dort alles eine einzige zeile

                  Mindelheim.*Temperatur\s</td>\s+<td height="40"><div align="center">aktuell<br>\s+<nobr>(([\d,]+))°C</nobr><font size="5"><nobr></nobr></font></div></td>
                  

                  es würde aber auch das folgende schon reichen

                  "center">aktuell<br>\s+<nobr>([\d,]+)°C</nobr>
                  

                  den ersten vorschlag habe ich mal gepostet, da du wohl den ort und das wort temperatur mit drin haben wolltest.

                  ich habe mal vor einiger zeit eine anleitung geschrieben wie man am besten vorgeht
                  https://forum.iobroker.net/topic/8379/einlesen-von-aktienkursen/81

                  1 Reply Last reply Reply Quote 1
                  • werner2000x
                    werner2000x last edited by

                    Ich habe eine externe webseite mit https://...
                    womit ich einen Parse-Error erhalte. Kann man das beheben?

                    Homoran 1 Reply Last reply Reply Quote 0
                    • Homoran
                      Homoran Global Moderator Administrators @werner2000x last edited by

                      @werner2000x was genau willst du uns sagen?
                      Um helfen zu können braucht es mehr Informationen.

                      werner2000x 1 Reply Last reply Reply Quote 1
                      • werner2000x
                        werner2000x @Homoran last edited by werner2000x

                        @homoran Ich habe bisher im Parser nur IP adressen aus dem lokalen WLAN verwendet.
                        Das hat funktioniert.
                        Nun möchte ich aus einer gesicherten Webseite mit https: Werte auslesen und bekomme im Parser immer den Fehler " Parse Error"
                        Die gesicherte Webseite zeigt meinen Blutzucker den ich auch im Handy unter 127.0.0.1:17580 erhalte. Ich habe keinen Weg gefunden diesen Wert vom Handy in den Raspi lesen zu können. Das würde dann ohne https: gehen.
                        Ich habe also die lokale Webseite des Handy 127.0.0.1 über die App " localtonet" auf eine allgemeine gesicherte Webseite weitergeleitet um sie auf einen Parser im Raspi auszuwerten zu wollen.

                        Homoran 2 Replies Last reply Reply Quote 0
                        • Homoran
                          Homoran Global Moderator Administrators @werner2000x last edited by Homoran

                          @werner2000x sagte in Parser Regex:

                          Nun möchte ich aus einer gesicherten Webseite mit https: Werte auslesen und bekomme im Parser immer den Fehler " Parse Error"

                          ich wüsste nicht was das mit https:// zu tun haben soll.

                          Da scheint noch was anderes reinzuspielen.
                          Aber wie gesagt:
                          ohne Informationen kann man nicht helfen.

                          @werner2000x sagte in Parser Regex:

                          den ich auch im Handy unter 129.0.0.1:17580

                          oder eher 127.0.0.1??
                          das ist localhost.
                          Dazu müsstest du den iob Server auf dem Handy laufen haben 😉

                          werner2000x 1 Reply Last reply Reply Quote 0
                          • werner2000x
                            werner2000x @Homoran last edited by

                            @homoran ja, es ist 127.0.0.1
                            Das iob läuft aber nicht auf den Handy.

                            Homoran 1 Reply Last reply Reply Quote 0
                            • Homoran
                              Homoran Global Moderator Administrators @werner2000x last edited by

                              @werner2000x sagte in Parser Regex:

                              Das iob läuft aber nicht auf den Handy.

                              Natürlich nicht!
                              Deswegen geht das ja auch nicht.

                              Wenn du im Parser Adapter die 127.0.0.1 eingibst such der Parser auf dem RasPi oder was immer du hast, nach der Seite, die es dort natürlich nicht gibt

                              werner2000x 1 Reply Last reply Reply Quote 0
                              • werner2000x
                                werner2000x @Homoran last edited by werner2000x

                                @homoran das ist ja der Grund warum ich die Seite auf eine öffentliche Webseite übertragen habe. Leider geht das nur mit https:

                                Homoran 1 Reply Last reply Reply Quote 0
                                • Homoran
                                  Homoran Global Moderator Administrators @werner2000x last edited by Homoran

                                  @werner2000x sagte in Parser Regex:

                                  @homoran das ist ja der Grund warum ich die Seite auf eine öffentliche Webseite übertragen habe. Leider geht das nur mit https:

                                  ???

                                  ja und?
                                  die rufst du auch mit https://127.0.0.1 auf??

                                  welche Seite willst du jetzt aufrufen?
                                  und wie?
                                  wie sieht da der Quelltext aus?

                                  werner2000x Homoran 2 Replies Last reply Reply Quote 0
                                  • werner2000x
                                    werner2000x @Homoran last edited by werner2000x

                                    @homoran nein, diese Webseite kann ich überall aufrufen mit https://62jsxxxc.localto.net/
                                    P..S. den webseiten namen habe ich verändert
                                    damit nicht jeder meinen Blutzucker
                                    sehen kann

                                    Homoran 1 Reply Last reply Reply Quote 0
                                    • Homoran
                                      Homoran Global Moderator Administrators @werner2000x last edited by Homoran

                                      @werner2000x du solltest diese Seite hier nicht einstellen, hab den Link gelöscht!
                                      hast du im bisherigen Verlauf etwas geändert?
                                      Da stehen Dinge die vorher nicht da standen.
                                      So etwas geht gar nicht!

                                      werner2000x 1 Reply Last reply Reply Quote 0
                                      • Homoran
                                        Homoran Global Moderator Administrators @werner2000x last edited by

                                        @werner2000x sagte in Parser Regex:

                                        immer den Fehler " Parse Error"

                                        bitte genaue und vollständige Fehlermeldung

                                        @homoran sagte in Parser Regex:

                                        hast du im bisherigen Verlauf etwas geändert?
                                        Da stehen Dinge die vorher nicht da standen.
                                        So etwas geht gar nicht!

                                        schon wieder etwas nachträglich irgendwo hinzugefügt?

                                        was soll das?

                                        1 Reply Last reply Reply Quote 0
                                        • werner2000x
                                          werner2000x @Homoran last edited by

                                          @homoran ja, ich hatte selbst gemerkt das ich die 129 falsch eingetragen waren und habe es nach 127 korrigiert aber da zwischen hast du schon geantwortet gehabt.

                                          Homoran 1 Reply Last reply Reply Quote 0
                                          • Homoran
                                            Homoran Global Moderator Administrators @werner2000x last edited by

                                            @werner2000x sagte in Parser Regex:

                                            @homoran ja, ich hatte selbst gemerkt das ich die 129 falsch eingetragen waren und habe es nach 127 korrigiert aber da zwischen hast du schon geantwortet gehabt.

                                            das ist aber nicht alles!
                                            Du zerstörst damit den Sinnzusammenhang der nachfolgenden Antworten.
                                            Ein späterer Leser kommt dann gar nicht mehr klar!

                                            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

                                            948
                                            Online

                                            31.6k
                                            Users

                                            79.4k
                                            Topics

                                            1.3m
                                            Posts

                                            4
                                            58
                                            1572
                                            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