Ankündigung

Einklappen
Keine Ankündigung bisher.

- √ - Plugin: Webabfrage analysieren

Einklappen
Dieses Thema ist geschlossen.
X
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    [wiregate] - √ - Plugin: Webabfrage analysieren

    Hallo zusammen,

    ich versuch mich in einer Webabfrage und beokomme über diesen Code folgende Zeile zum Analysieren:

    Code:
    my $content = get($url);
    my @LINES = split (/\n/, $content); 
     
    for (my $i=0;$i<@LINES;$i++)  {
      if ($i == 43) {
        plugin_log($plugname,$LINES[$i]);
      } }
    Das Ergebnis ist folgende Zeile:
    <td align="center" colspan="3" width="19%"><b><font size="1">aktuell</font></b><br><b><font size="5">72%</font></b></td>

    In dieser Zeile will ich die 72 extrahieren.

    Dieser Befehl funktioniert aber nicht, wie in allen sonstigen Webabfragen im SVN:

    Code:
    if ($LINES[$i] =~ '<td align="center" colspan="3" width="19%"><b><font size="1">aktuell</font></b><br><b><font size="5">*%</font></b></td>') {
      plugin_log($plugname,'Luftfeuchte $1'); 
    }
    Habt ihr einen Tipp für mich? Ich steh grad aufm Schlauch oder hab ein Brett vorm Kopf...

    Danke
    Sascha

    #2
    Ohne jetzt mich wieder in Perl einzulesen (d.h. potentiell falsch):

    Probier mal ".*" statt "*"

    Ein * sagt nämlich nur, dass das Zeichen davor 0 bis beliebig oft kommen darf. Aber das Zeichen für "beliebiges Zeichen" ist der Punkt.
    => .* sagt beliebige Zeichen, beliebig oft.

    Oder in diesem Fall alternativ "[0-9]*" nehmen, das wäre dann eine beliebige Zahl an Ziffern.

    Ggf. (siehe Disclaimer oben) musst Du das aber noch in Klammern setzen, damit er weiß, was er behalten soll.
    TS2, B.IQ, DALI, WireGate für 1wire so wie Server für Logik und als KNX Visu die CometVisu auf HomeCockpit Minor. - Bitte keine PNs, Fragen gehören in das Forum, damit jeder was von den Antworten hat!

    Kommentar


      #3
      Danke Chris!

      Das war der entscheidende Hinweis die Lösung ist (.*?) für eine beliebige Anzahl von Zeichen, die übernommen werden sollen.

      Also so schaut der Code dann aus:
      $LINES[$i] =~ '<td align="center" colspan="3" width="19%"><b><font size="1">aktuell</font></b><br><b><font size="5">(.*?)%</font></b></td>')

      Die Möglichkeiten vom Wiregate sind echt gigantisch!!!
      Wer braucht da noch so einen sündhaft teuren HS...
      Ich freu mich schon so auf eine funktionierende CometVisu...

      Kommentar


        #4
        Zitat von haegar80 Beitrag anzeigen
        Die Möglichkeiten vom Wiregate sind echt gigantisch!!!
        Hoi

        Ja so ist es, sehr schönes zuverlässiges Kistchen mit Potential.
        Grüsse Bodo
        Fragen gehören ins Forum, und nicht in mein Postfach;
        EibPC-Fan; Wiregate-Fan; Timberwolf-Fan mit 30x 1-Wire Sensoren;

        Kommentar


          #5
          Servus,

          HTML parsen geht meist per entsprechendem Parser-Modul wesentlich besser als von Hand. Schau mal in diesem Thread ab Seite 2, emax hat da Beispiele gebracht, die ich erfolgreich in das Plugin integrieren konnte.

          Kommentar


            #6
            Und HTML-Parsen ist&bleibt trotzdem immer die allerletzte Notlösung, weil es nur bis zur nächsten Änderung der Webseite funzt; (ich mach das schon ein paar Jahre und länger als ein Jahr ging noch keine..)
            -> Besser ist es sich eine stabile Datenquelle für das gewünschte zu suchen, die gibts eigentlich immer..

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

            Kommentar

            Lädt...
            X