Ankündigung

Einklappen
Keine Ankündigung bisher.

Webseite parsen - Wie geht das mit Edomi?

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

  • gaert
    antwortet
    Zitat von wintermute Beitrag anzeigen
    gibt es eine native Funktion um eine PCRE auf Gueltigkeit zu pruefen und ggbnflls zu escapen?
    Ist mir nicht bekannt (muss aber nichts heißen). Aber das Prüfen ist m.E. auch nicht sooo wichtig - man könnte ja in der LBS-Hilfe ein paar Hinweise zum prinzipiellen Aufbau geben. Der LBS wäre ohnehin eher etwas für Fortgeschrittene...

    Einen Kommentar schreiben:


  • tunneltruppe
    antwortet
    Moin Männers,
    nicht sooooo schnell!! Muss erstmal mitkommen!!!
    DANKE für die Tipps!!
    Mache ich mich mal ran.
    P.S. das mit dem Besitzer der Webseite abstimmen ob ich das darf,
    ist das erste was ich mache. Der Besitzer erlaubt es, möchte aber nicht
    zitiert werden (oder gar Email erwähnt!!!).
    Nen guten Morgengruß Marcus

    Einen Kommentar schreiben:


  • wintermute
    antwortet
    Weil ich nicht so fit in PHP bin: gibt es eine native Funktion um eine PCRE auf Gueltigkeit zu pruefen und ggbnflls zu escapen? Weil wenn nicht, dann wuerde ein solcher Baustein in den meisten Installationen nur dazu fuehren, dass das error.log ueberflutet wird.
    Falls doch, waere der Baustein allerdings quasi eine Art Zweizeiler

    BTW: mehrere Werte lassen sich durchaus in derselben RegExp abfruehstuecken, nur das "zweite Feld" muesste dann quasi mehrere numerische Werte zulassen. Aber ja, als LBS sicherlich (mindestens mal) flexibler zu implementieren.

    Einen Kommentar schreiben:


  • gaert
    antwortet
    Klar, aber Du kennst das ja: Spätestens übermorgen heißt es dann "Wie kann ich mehrere(!) Werte aus einer Webseite auslesen?!" Und und und...

    Aber wie wäre es mit einem LBS, der einigermaßen universell arbeitet:
    E1 = URL
    E2 = RegEx-String
    ...

    Einen Kommentar schreiben:


  • wintermute
    antwortet
    Das waere aber dennoch nett...
    Quasi "nach welcher RegExp suchen?" in dem einen Feld, die "Nummer des Matches" in dem anderen Feld. Klar, RegExp muss man dazu schon verstehen, aber man taete sich den recht speziellen LBS sparen - fuer den man ja auch RegExp verstanden haben muss

    Einen Kommentar schreiben:


  • gaert
    antwortet
    Geeeeenau

    Ursprünglich wollte ich etwas in dieser Art sogar "nativ" in EDOMI einbauen (Webseite auswerten) - allerdings hätte der Anwender sich dann mit RegEx-Zeugs beschäftigen müssen, denn auf einen "grafischen Editor" hatte ich irgendwie keine Lust...

    Aber Dein Code-Beispiel ist eine wunderbare Grundlage für alle Webseiten-Auswert-LBS der Zukunft! Ich sehe schon das Download-Portal überquellen

    Einen Kommentar schreiben:


  • wintermute
    antwortet
    Regulaere Ausdruecke lernen Du musst!

    Da findet man viel im Netz zu, das hier waere zB ein Einstieg:
    http://webcheatsheet.com/php/regular_expressions.php

    Mein Rat:
    a-tens) Garnicht erst mit strpos und sowas rumdudeln
    b-tens) Runterladen der Webseiten (und daher auch das Parsen) immer nur im EXEC-Teil machen (zumindest wenn es dann ein LBS werden soll)
    c-tens) Versuch Dich in regulaere Ausdruecke einzulesen, wenn das einmal begriffen wurde ist der Rest nur noch Kinderkram

    Das hier zB mag auf den ersten Blick kompliziert ausschauen, aber wenn man sich etwas Zeit nimmt und dann versteht das Prinzip zu begreifen dauert es eigentlich nur kurz und der Groschen ist gefallen (wichtig ist eigentlich nur der Teil zwischen den beiden "/" im preg_match):
    PHP-Code:
    <?php
    $src
    =file_get_contents("http://www.wetterstation-hannover.de/html/current.html");
    if (
    preg_match("/Lufttemperatur \(2m\).*?aktuell.*?([0-9\.,]+.C)/s",$src,$matches)) {
      print 
    $matches[1];
    }
    ?>
    (das ist genau genommen unsauber programmiert, liegt aber daran, dass die Webseite ein falsch kodiertes °-Symbol zurueckliefert)

    gruesse :: Michael

    Einen Kommentar schreiben:


  • benji
    antwortet
    Hi,

    quick & dirty könntest du es mit folgendem Code machen. Natürlich dann für einen LBS ein wenig anpassen, schmeiß dir den Code mal auf ein server und spiel ein wenig damit rum auf der Seite. Anschließend dann auf Ausgänge im LBS anpassen.


    Code:
    <?
    
    $url1 = "http://www.wetterstation-hannover.de/html/current.html";
    
    
    $Ausgabe1 = file_get_contents("$url1");
    
    $pos1 = strpos($Ausgabe1, '<td align="center" colspan="3" width="19%"><b><font size="1">') + 101;
    $pos2 = strpos($Ausgabe1, '</font>', $pos1) - $pos1;
    $data1 = substr($Ausgabe1, $pos1, $pos2);
    if ($data1 =="x x x") { $data1="0"; }
    echo $data1;
    
     ?>
    Gruß Benjamin

    Edit: du solltest dir auch die Genehmigung einnehmen um die Daten der Seite auszulesen. Es ist nicht unbedingt auf jeder Seite erlaubt bzw. gerne gesehen.
    Zuletzt geändert von benji; 23.05.2016, 21:12.

    Einen Kommentar schreiben:


  • tunneltruppe
    antwortet
    Guten Abend,
    im Gira HS kann man ja Webseiten auswerten.

    Hier in Edomi habe ich gelernt heißt das wohl (parsen/auslesen).
    Also muss man, wenn ich richtig alles gelesen habe, für das
    auslesen einer Webseite einen LBS (Logikbaustein) erstellen.
    Die vorhandenen LBS habe ich mal versucht zu lesen, fällt
    mir aber noch schwer.

    Für meinen Ort hat ein, ich sach mal so, Wetterprofi eine tolle
    Wetterstation aufgebaut:
    http://www.wetterstation-hannover.de/html/current.html

    Diese Auswertung für den LBS erfolgt ja dann im Logikbaustein im ‚
    ###[EXEX]### Teil.

    Nun mein Problem: Könnte mir jemand für z.B. Lufttemperatur aktuell
    18,6°C den Einstig geben? Muss ich die Internetseite mit z.B. Quellcode
    die Einträge suchen und über PHP in den LSB übergeben?

    Mit der Hilfe:
    http://www.it-academy.cc/article/722...+auslesen.html
    komme ich leider auch nicht weiter!!!
    Wäre suppi nett für die Hilfe, ggf. kann ich dann einmal eine Hilfe für weitere „Anfänger“
    Ins wiki stellen (wenn das nicht zu trivial ist!!)
    Vielen DANK vorab!!!
    Gruß Marcus
    Wetterstation.jpg

    Quellcode.jpg

    Einen Kommentar schreiben:


  • benji
    antwortet
    Hi,

    der Baustein ist noch nicht ganz fertig. Zudem ist er ausgelegt auf ein ISG an einer Luftwärme WPL. Wenn du eine WPF hast müsste man noch paar werte anpassen. Könnte dir ihn zukommen lassen wenn du mir deine Email schickst. Dann kannst du wenigstens mal reinschauen.

    Gruß

    Einen Kommentar schreiben:


  • panzaeron
    antwortet
    benji
    An deinem ISG LBS wäre ich auch interessiert, noch mache ich das über CAN und dem Wiregate aber weiß wie lange der noch läuft...

    Einen Kommentar schreiben:


  • benji
    antwortet
    Schick mir mal deine Email per pn

    Einen Kommentar schreiben:


  • NexusCore
    antwortet
    Das wäre echt super, dann brauch ich das Rad nicht gleich neu erfinden

    Einen Kommentar schreiben:


  • benji
    antwortet
    Ich kann dir aber nachher auch mal einen schicken. Da frage ich ein Stiebel Eltron ISG an meiner Wärmepumpe ab.

    gruß

    Einen Kommentar schreiben:


  • NorbertB
    antwortet
    Sieh Dir mal den 19000210 "Nibe Uplink" von basaltnischl an, da wird genau das gemacht.

    Einen Kommentar schreiben:

Lädt...
X