Ankündigung

Einklappen
Keine Ankündigung bisher.

- √ - Webabfrage: regulrärer Ausdruck

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    HS/FS - √ - Webabfrage: regulrärer Ausdruck

    Hallo Forum,

    im Experten kann man ja einfache und komplexe Webabfragen erstellen. Mit den einfachen Abfragen tue ich mir ein bisschen schwer, denn wenn der Provider das Layout ändert, dann kommt die Abfrage sofort durcheinander...

    Daher "spiele" ich gerade mit regulären Audrücken und das scheint auch gnaz gut zu funktionieren.

    Meine Frage: Weiß jemand von Euch welche Spezifikation hier umgesetzt wurde (POSIX, Perl/PCRE, etc.)? Gibt es irgendwo eine (Syntax-)Beschreibung der Audrücke, Quantoren, Zeichenklassen, etc. die der HS versteht?

    Die Gira Dokumentation schweigt hierzu leider mal wieder

    Viele Grüße,
    Markus
    Viele Grüße,
    Markus
    _________________________________________
    HS3, Gira TS2+, ABB DG/S 1.1, ... Reel Avantgarde II + NetClient

    #2
    ...ich habe mal ein Screenshot angehängt. Vielleicht wird dann klarer, was ich meine.

    Das Beispiel zeigt die (funktionierenden) Abfrage der letzten aktuellen Temperatur von wetter.net...

    Neben den "normalen" Sachen, funtionieren:

    ? - greedy
    \w - Wort
    \d - dezimal
    ^ - Anchor Zeilenanfang
    $ - Anchor Zeilenende
    Angehängte Dateien
    Viele Grüße,
    Markus
    _________________________________________
    HS3, Gira TS2+, ABB DG/S 1.1, ... Reel Avantgarde II + NetClient

    Kommentar


      #3
      Also ich poste hier mal meine weiteren Ergenisse, vielleicht ist es ja für jemaden von Interesse...

      | - (Alternativen) funktioniert nicht, da alles nach dem pipe Symbol abgeschnitten wird, also in der Maske. Nach dem Schließen der Maske ist alles nach dem pipe weg

      \D - (kein digit) funktioniert

      [a-z] - (Zeichenklassen) funktioniert
      Viele Grüße,
      Markus
      _________________________________________
      HS3, Gira TS2+, ABB DG/S 1.1, ... Reel Avantgarde II + NetClient

      Kommentar


        #4
        mach da ruhig mal weiter
        Hab ich mich auch schon ein paarmal gefragt (weil es in der Tat besonders bei komplexen Abfragen hilfreich ist), mir wars bisher nur zu anstrengend das mit Trial&Error rauszufinden.
        Aber vielleicht findet sich da ja irgendwann auch ne gescheite Erklärung/Doku über den Syntax. Wenn nicht muss mans halt mal wieder selber rausfinden, da bist Du auf dem besten Weg!

        Makki
        EIB/KNX & WireGate & HS3, Russound,mpd,vdr,DM8000, DALI, DMX
        -> Bitte KEINE PNs!

        Kommentar


          #5
          Zitat von makki Beitrag anzeigen
          ...mir wars bisher nur zu anstrengend das mit Trial&Error rauszufinden.
          Aber vielleicht findet sich da ja irgendwann auch ne gescheite Erklärung/Doku über den Syntax. Wenn nicht muss mans halt mal wieder selber rausfinden, da bist Du auf dem besten Weg!

          Makki
          Hi Makki,

          mir wird das ganze jetzt auch lästig. Das Problem ist, dass man bei einem Fehler nie weiß, ob's an der Syntax liegt, oder an einem selber... Ein Cycle "Ändern, Hochladen, Testen" dauert immer eine gefühle Ewigkeit und ist nicht sehr produktiv

          Ich habe deshalb parallel zu meinen Test mal bei Gira eine Anfrage gestartet und poste dann die Ergebnisse.

          Insgesamt aber eine feine Sache - wenn auch komplizierter als die "normale" Webabfrage. Mit RegEx kann man die Abfrage weitestgehend unabhängig vom Layout machen. Ich denke da lohnt sich der Aufwand...

          Viele Grüße,
          Markus
          Viele Grüße,
          Markus
          _________________________________________
          HS3, Gira TS2+, ABB DG/S 1.1, ... Reel Avantgarde II + NetClient

          Kommentar


            #6
            ... so nach einigem hin und her mit der Gira Hotline hat man sich bereit erklärt mich in die Geheimnisse der regulären Ausdrücke bei Webabfragen einzuweihen

            Hier die Antwort von Gira. Ich denke das hilft weiter. Wobei wie gesagt der Experte das Pipe-Symbol nicht mag...



            Hallo Herr Kräckmann,

            vielen Dank für Ihre Nachricht.

            Unter folgenden Link finden Sie weitere Details:
            http://docs.python.org/library/re.html

            Der HomeServer verwendet die Methode "match()" zur Auswertung des Audrucks.

            Für weitere Fragen stehen wir Ihnen gerne wochentags in der Zeit von 7.30 Uhr bis 20.00 Uhr und Samstags von 8.00 Uhr bis 12.00 Uhr telefonisch unter der Rufnummer (02195) 602-123 zur Verfügung.

            Herzliche Grüße aus Radevormwald

            Technische Hotline
            hotline@gira.de
            Tel: +49(0)2195-602-123, Fax +49(0)2195-602-118
            Viele Grüße,
            Markus
            _________________________________________
            HS3, Gira TS2+, ABB DG/S 1.1, ... Reel Avantgarde II + NetClient

            Kommentar


              #7
              Klasse! Obwohl mir das regexp-Thema bis heute ein Buch mit 17 Siegeln bleibt, damit lässt sich mit einfachsten Mitteln - einer Python Idle-Shell - das ganze endlich mal im Vorfeld einfach testen.
              Ohne Hochladen&viel warten, das geht dann für so Copy&Paste-Täter wie mich immernoch schneller als die bequemeren Webabfragen (wo man dann gelgentlich auch mal 30x "hoch" klicken muss..)

              Ich denke da jetzt erstmal an die in Hochlastzeiten - wo es leider besonders essentiell ist - nicht funktionierende DWD-Unwetterabfrage (weiterleitung auf wettergefahren.de, wers schon gemerkt hat)

              Makki
              EIB/KNX & WireGate & HS3, Russound,mpd,vdr,DM8000, DALI, DMX
              -> Bitte KEINE PNs!

              Kommentar


                #8
                zum Testen benutze ich "RegExBuddy"... kann verschiedene Libraries simmulieren, auch Python RegEx und funktioniert wunderbar...

                Bei der normalen Webabfrage würde ich mir ein "Einfügen vor markierter Zeile" wünschen, denn 30xhoch drücken nervt schon ein wenig

                Wenn Du Fragen zu dem Thema RegEx hast, als her damit... Vielleicht kann ich helfen.

                ~ Markus
                Viele Grüße,
                Markus
                _________________________________________
                HS3, Gira TS2+, ABB DG/S 1.1, ... Reel Avantgarde II + NetClient

                Kommentar


                  #9
                  Ich spiel mich da grad mal aber es will nicht so recht..
                  Wäre super wenn Du da mal ein funktionierendes Beispiel einstellen könntest damit ichs vielleicht auch verstehe

                  Makki
                  EIB/KNX & WireGate & HS3, Russound,mpd,vdr,DM8000, DALI, DMX
                  -> Bitte KEINE PNs!

                  Kommentar


                    #10
                    Hmm... habe mir mittlerweile eine komplette Webabfrage aus RegEx für wetter.net gebastelt. Optik ist noch nicht fertig (alles ist mehr oder weniger noch auf einer Testseite), aber wenn Du mir sagst wie ich das Projekt (inkl. der benötigten Teile davon: Gifs, Logik, Logikbausteine, ...) in ein File bekomme, dann kann ich dir gerne mal das ganze Projekt schicken?

                    Als kleiner Vorgeschmack habe ich zwei Bildchen angehängt...

                    Hatte auch angefangen mir ein "Kochbuch" zu schreiben, hab's aber dann vernachlässigt. Hängt auch an. Vielleicht hilfts?

                    Wenn nicht einfach nochmal fragen...

                    ~ Markus
                    Angehängte Dateien
                    Viele Grüße,
                    Markus
                    _________________________________________
                    HS3, Gira TS2+, ABB DG/S 1.1, ... Reel Avantgarde II + NetClient

                    Kommentar


                      #11
                      Schaut super aus, wäre eine gute Hilfe...
                      Exportieren:
                      Ganz einfach:
                      im Ordnerbaum mit der rechten Maus auf die Abfrage (oder den ganzen Baum) klicken -> exportieren

                      oder
                      in globale Bibliothek exportieren (da kannst du Visu-Seiten, Logiken und Abfragen hineinexportieren) und dann im Hauptfenster Menüpunkt "Globale Bibliothe/exportieren" auf die Festplatte schreiben (*.hslib)
                      EPIX
                      ...und möge der Saft mit euch sein...
                      Getippt von meinen Zeigefingern auf einer QWERTZ Tastatur

                      Kommentar


                        #12
                        ...also ich habe die Webabfragen exportiert und angehängt. Hoffe das war richtig so.

                        Beim Projekt exportieren müsste ich noch ein bissl testen, damit ich auch alles erwische.

                        Es gibt eigentlich 2 größere Mankos bei den regex Abfragen:
                        - Listen funktionieren nicht (zBsp um die Namen der Wetter-GIFs in Zahlen zu konvertieren); da habe ich mir 2 kleine Logikmodule geschrieben
                        - Alternativen "|" funktionieren nicht; deshalb klappt bei mir die Wetterwarnung noch nicht; die Seiten sind sehr unterschiedlich, je nach dem ob eine Wetterewarnung vorliegt, oder nicht

                        Noch ein kleiner Tip (so bin ich immer vorgegangen):
                        a) Webseite im Quelltext öffnen
                        b) eine prägnante Stelle kurz vor den eingetlichen Daten suchen
                        z.B.: "</table></table>"
                        c) den RegEx auf diese Stelle "zwingen"
                        .+?</table></table>.+?
                        das ? bei .+ macht den Suchausdruck non-greedy, d.h. er versucht so wenig Zeichen wie möglich zu matchen...
                        d) dann erst mal alles matchen um zu testen
                        z.B.: .+?</table></table>.+?^(.+?) km/h.+
                        bei dem abschließenden .+ bin ich mir nicht 100% sicher, manchmal geht's auch ohne
                        e) verfeinern; bei wetter.net kann es sein dass der Wert manchmal nicht vorliegt. Ist so z.Bsp. bei Windgeschwindigkeit. Da steht dann einfach ein "-", aber ohne "km/h". Dann muss der Match nach hinten anders begrenzt werden:
                        z.B: .+?</table></table>.+?^(.+?)<br>.+
                        f) ansonsten (z.B. bei Zahlen) weiter verfeinern:
                        z.B: .+?</table></table>.+?([-0-9\.]{1,4})&deg;C.+
                        = Zahlen von 0-9, ein "-", oder ein ".". Das Ganze 1-4 mal; gefolgt von "&deg;C"
                        g) wenn es geht, versuchen Matches mit non-greedy ("?") zu vermeiden, da diese die Rekursionstiefe erhöhen und es so zu exceptions beim parsen kommen kann: immer mal wieder auf der debug-Seite nachschauen...
                        h) wenn der erste Match korrekt funktioniert, diesen so oft wie benötigt kopieren und die entsprechenden Objekte in der unteren Liste einfügen;

                        Immer daran denken, dass jedes Klammernpaar auch ein Objekt bekommt...

                        So ich hoffe das ist nicht allzu umständlich geschrieben und hilft ein bisschen weiter...

                        ~ Markus
                        Angehängte Dateien
                        Viele Grüße,
                        Markus
                        _________________________________________
                        HS3, Gira TS2+, ABB DG/S 1.1, ... Reel Avantgarde II + NetClient

                        Kommentar


                          #13
                          Danke, das hilft! Es scheint ich habs kapiert, klappt jetzt..

                          Unwetter gäbe es übrigens hier
                          Die funktioniert bei mir auch zuverlässig, ausser wenn der DWD auf den "Notserver" umschaltet. (das ist aber seit es mir auffiel nicht mehr passiert und ohne Archiv der Seite - schwierig..)

                          Makki
                          EIB/KNX & WireGate & HS3, Russound,mpd,vdr,DM8000, DALI, DMX
                          -> Bitte KEINE PNs!

                          Kommentar


                            #14
                            Hallo Makki,

                            habe deine Unwetterabfrage gerade mal importiert, aber auf der DWD-Seite wurde dieser Pfad "/bvbw/portlets/" scheinbar komplett deaktiviert.

                            Hast Du da noch einen aktuellen Stand?

                            mfg
                            2 Objekte, 6 Linien + KNX/IP-Bereich, HS 3 SW 2.8, Visu mit 2x 15"-Touch, Softwaregateway KNX/IP für 2x Novelan Wärmepumpe, viele Ideen und wenig Zeit

                            Kommentar


                              #15
                              Oh, da muss ich morgen mal suchen gehen.. Geht mittlerweile direkt auf den Notfallserver und ja: die hat sich geändert.

                              Ob die "neue" allerdings noch funktioniert = ?, das Thema Wetter/Webabfragen ist für mich zwecks Zeitverschwendung durch..

                              Makki
                              EIB/KNX & WireGate & HS3, Russound,mpd,vdr,DM8000, DALI, DMX
                              -> Bitte KEINE PNs!

                              Kommentar

                              Lädt...
                              X