Produkt: | Elvis |
Stand: | 2006-03-14 |
Zusammenfassung
Dieses Beispiel zeigt, wie man den „Custom Port“ dazu benutzen kann, Daten aus Internetseiten als Datenpunkte zur Verfügung zu stellen.
Im Beispiel wird die von www.wetteronline.de vorhergesagte Temperatur für Kalchreuth ermittelt.
Download Beispielprojekt und Script: inet.zip (0,1 MB)
Hinweis: Der Elvis-Server läuft als Dienst oftmals unter dem lokalen Systemkonto. Für dieses Konto muss auch ein Internetzugang möglich sein, damit der Anschluss Daten aus dem Internet bekommen kann.
Einzelheiten
Im Beispiel wird die Vorhersagetemperatur für Kalchreuth von http://www.wetteronline.de alle 6 Stunden ermittelt und in einen Datenpunkt geschrieben. (Die entsprechende URL für andere Städte kann über http://www.wetteronline.de/homepage/index.html ermittelt werden).
Das Beispielprojekt geht davon aus, dass die Basic-Datei ElvisINet.bas im Verzeichnis C:\Programme\Elvis abgelegt ist. Wenn Sie ein anderes Verzeichnis benutzen, bitte den Parameter im Datenpunkt-Anschluss entsprechend anpassen.
Wie funktioniert das?
Es wurde ein Datenpunkt-Anschluss „INTERNET“ eingerichtet, der mit Hilfe der Basic-Datei ElvisINet.bas HTML-Seiten anfordern und Daten daraus extrahieren kann.
Die Lösung ist recht allgemein gehalten, so dass sie Basic-Datei möglicherweise sogar unverändert übernommen werden kann. Die Datenpunkte dieses Anschlusses können nur gelesen werden und müssen mit einer zyklischen Abfrage verbunden sein.
Die technischen Adressen diese Anschlusses bestehen aus zwei Teilen, der URL der zu lesenden HTML-Seite, gefolgt – durch einen senkrechten Strich abgetrennt – von einem „regulären Ausdruck“, der bestimmt, welcher Teil der Seite als Datenpunktwert genommen werden soll.
Es sind URLs der Form „http:…“, „https:…“ und „ftp:…“ zulässig. Authentifizierung und Cookies werden im Moment nicht unterstützt. Es ist im Einzelfall zu klären, ob und unter welchen Bedingungen die Nutzung einer Webseite für den gewünschten Zweck zulässig ist!
Der reguläre Ausdruck (siehe z.B. http://de.wikipedia.org/wiki/Reguläre_Ausdrücke) muss eine in Klammern eingeschlossene Gruppe enthalten. Die Zeichenkette, die dieser Gruppe entspricht, wird als Wert extrahiert. Im Beispiel ist der reguläre Ausdruck „>(\d+)°C“, das bedeutet im Klartext: suche eine spitze Klammer gefolgt von einer Zahl (ein oder mehrere Ziffern), gefolgt von „°C“ („°“ ist die HTML-Schreibung für das Gradzeichen), und liefere die Zahl als Ergebnis. Das ist sicher noch verbesserungsfähig (z.B. werden negative Zahlen nicht erkannt), soll hier aber nur das Prinzip illustrieren.
Um auch negative Zahlen richtig zu interpretieren, muss der reguläre Ausdruck um „-?“ ergänzt werden. Das sieht dann so aus: „>(-?\d+)°C“
Die technische Adresse kann in Elvis max. 255 Zeichen lang sein. Wenn dies nicht ausreicht, bieten sich folgende Auswege:
- Wenn die URL sehr lang ist, kann diese evtl. durch einen Redirect-Dienst wie tinyurl.com gekürzt werden.
- ElvisINet.bas könnte so geändert werden, dass die URL und der reguläre Ausdruck aus einer Datei gelesen werden, die techn. Adresse wäre dann nur noch ein Schlüssel in dieser Datei.