mikrocontroller.net

Forum: PC-Programmierung Webseite automatisch downloaden und auswerten


Autor: Windy (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Leute,

es geht um folgende Seite: http://www.enertrag.de/standortkarte.php

Bei der Seite (siehe Anlage) handelt es sich um die Anzeige der 
Auslastung von verschiedene Windparks. Um abzuschätzen zu können, wie 
die Ausbeutung der einzelenen Parks ist, würde ich gerne die 
Internetseite automatisch downloaden (z.B. alle 30min) und auswerten 
(Uhrzeit und Auslastung Windpark XYZ in eine Datenbank speichern).

Das ganze würde ich gerne in Delphi machen, kann aber auch eine andere 
Sprache sein.

Das Problem ist, wenn ich den Link downloade sieht der Quelltext ganz 
anders aus. Ich denke, dass die Internetseite ein Java-Script auslöst 
oder andere Links auslöst.

Hat jemand eine Idee _ Danke ?!

Autor: unbeschreiblicher Rahul (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
http get...
Das sollte mit Winsock laufen...
Und: Ich habe keine Ahnung von Delphi.

Autor: mr.chip (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo

Ist definitiv kein Javascript.

Ich denke, du schaffst es die Webseite ähnlich einer Datei als Stream zu 
öffnen? Wenn du soweit bist, dann gehts halt darum, die richtigen 
Inhalte herauszulesen. Evtl. könnte hier ein XML-Parser helfen, aber 
Vorsicht: Viele Webautoren achten nicht sehr auf validen Code.

Gruss

Michael

Autor: yalu (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich würde so etwas in Python versuchen. Die Sprachen ist einfach zu 
erlernen, und die mitgelieferten Bibliotheken bieten alles, was du 
brauchst, und vieles mehr z.B.

  urllib2:     Herunterladen von Webseiten in 3 Code-zeilen
  HTMLParser:  der Name sagt's
  re:          reguläre Ausdrücke
  shelve:      persistente Dictionaries, einfach zu benutzender
               Datenbankersatz

www.python.org

Autor: Thomas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn man mit wget die Seite herunterlädt stehen noch alle Informationen 
drin.

Du bräuchtest nur festzustellen ob zwischen "<li class" und "</li>" 
einer deiner Standorte vorhanden ist, z.B. "Weenermoor".
Wird der Begriff gefunden, die Eigenschaft nach class="standort 
betrieb_60" abfragen, dann hast du die aktuelle Leistung.

Der farbige Punkt ist nur ein Listenzeichen, dass gemäß der class im 
CSS-File  entsprechend eingefärbt wird.

Wenn du WinAVR installiert hast sind eigentlich schon alle dafür nötigen 
Programme vorhanden.

Autor: Thomas (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hab mal unter Linux ein kleines Shell-Script gebaut was das gwünschte 
macht.
Unter Windows gibts irgendwie Probleme den Ausgabeumleitungen ">", 
obwohl es das da eigentlich auch gibt.

PS:
Warum kann ich das Skript nur als Anhang hier reinsetzen, und nicht als 
Text, dann kommt nämlich die Meldung:
"Your post seems to contain Spam: ""."
Kann man das verhindern?

Autor: Thomas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die Ortsdatei und eine Beispielausgabe:

Ort     :  Bougainville
Leistung:  betrieb_90
**********************
Ort     :  Merdelou
Leistung:  betrieb_90
**********************
Ort     :  Fontanelles
Leistung:  betrieb_90
**********************
Ort     :  Côte_d'Albâtre
Leistung:  im-bau
**********************
Ort     :  Roinville
Leistung:  im-bau
**********************
Ort     :  Oresmaux
Leistung:  im-bau
**********************
Ort     :  Chemin_de_Tuleras
Leistung:  im-bau
**********************
.
.
.

Autor: Johnny (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Delphi ist schon gut für sowas, hab mal ein Tool in Delphi programmiert, 
das von Zeitungshomepages die Schlagzeilen runtergeladen und auf einer 
LED-Laufschrift angezeigt hat.

Ich empfehle die kostenlosen Indy-Komponenten, die laufen stabiler als 
die bei Delphi beiliegenden Netzwerkkomponenten:
http://www.indyproject.org/

Eine Webseite kannst Du dann mit einer Codezeile und der IdHTTP 
Komponente runterladen:

HTTP_Page := 
F_Main.IdHTTP1.Get("http://www.enertrag.de/standortkarte.php";);

In der String-Variablen "HTTP_Page" steht dann der Webseitenquelltext 
drin, den Du verarbeiten musst.
Das ganze besteht dann also nur noch aus Stringhandling. Suche im 
String, was für Dich relevant ist und kopiere das raus. Rechne damit, 
dass der Webmaster mal was an der Webseite ändert, daher sollten Deine 
Routinen fehlertolerant und "flexibel" konzipiert sein, so dass das 
ganze auch noch funktioniert, nachdem der Webmaster z.B. eine andere 
Werbung eingebaut hat.
Viel Spass

Autor: Windy (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Zuerst einmal Danke für alle Antworten.

@Jonny
Habe genau dies schon probiert. Doch das Ergebnis sieht anders als 
erwartet aus (PHP?).

Hier die Procedure:

procedure TFormMain.ButtonDownloadClick(Sender: TObject);
begin
  HTTPGetFile.URL :='http://www.enertrag.de/standortkarte.php';;
  HTTPGetFile.FileName := Pfad+'Download.html';
  HTTPGetFile.GetFile;
end;

Und Hier das Ergebnis:


Logo

    * 0.1Home
    * 0.2Adressen
    * 0.3Impressum
    * 0.4Sitemap
    * 0.5Hilfe
    * 0.6Anmelden

    * 2 Standorte
    * 3 Standortkarte
    * 4 Fonds
    * 5 Wertpapiere
    * 6 Unternehmen
    * 7 Geschäftskontakt
    * 8 Informationen
    * 9 Für Geschäftspartner
    * 9Meine Fonds



    * Standortkarte
    * Uckermark

21:18 h

    * Dauerthal
    * Prenzlau
    * Pasewalk
    * Drense
    * Nadrensee
    * Hohenfelde
    * Nechlin
    * Neuenfeld
    * Uckermark
    * Randowhöhe
    * Schönfeld
    * Seelübbe
    * Hoher Berg

Die Karte zeigt die zur Zeit an den Standorten erzeugte Leistung in 
Prozent der maximalen Leistung (Last)

    * Lastsymbole:
    * in Planung/im Bau
    * keine Last
    * schwach (unter 10%)
    * 10..20%
    * mittel (20..30%)
    * 30..40%
    * stark (41..50%)
    * 51..60%
    * hoch (61..70%)
    * 71..80%
    * voll (81..90%)
    * 91..100%

Autor: Johnny (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das PHP Script erzeugt ja auch nur HTML Seiten, darum ist das für den 
Parser egal, ob nun .html oder .php oder sonstwas hinter dem Dateinamen 
steht.
Sieht aus, als stünde in Deiner Variablen nicht der Source Code der HTML 
Seite drin, sondern der sichtbare Teil der Webseite.
Du musst in der Doku der Komponente nachschauen, wie Du an den HTML 
Sourcecode kommst.

Diese Zeile hat bei meinem Projekt genau dies getan:
IdHTTP1.Get("http://www.enertrag.de/standortkarte.php";);

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.