Live-Forum - Die aktuellen Beiträge
Datum
Titel
29.03.2024 13:14:12
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1644to1648
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Werte aus einer html gezielt auslesen
17.09.2018 13:52:43
klausreich@web.de
Guten Mittag in's Herber-Forum,
leider kann mir ( Beispiel https://www.proplanta.de/Wetter/Wuppertal_Rueckblick_09-09-2018_Wetter.html ) auch
poplanta auf Nachfrage keine gefilterten, exceltauglichen Wetterdaten ( ein gesamter Tag = 24 h, bestehend aus Uhrzeit, Temp, Luftdruck, rel. Feuchte und Windgeschwindigkeit ) liefern.
Hat einer von Euch eine Idee, um aus dieser - aber auch anderen - proplata-html's treffergenau obige Werte auszulesen ? Stellt Euch vor : ich habe eine html des betreffenden Tages, beginnned mit den Daten für 11:00 Uhr und bräuchte nun zusätzlich zu 11 Uhr auch für 0 bis 21 Uhr alle o.g. Werte in einer Excel-Tabelle um tägliche, wöchentliche, monatliche um Jahresmittelwerte zu generieren.
Ich bin gespannt, Klaus Reich

18
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Werte aus einer html gezielt auslesen
17.09.2018 14:23:51
ChrisL
Hi Klaus
Mittels Standardfunktion "Daten, aus Web" kannst du die Seite relativ gut auf ein Hilfsblatt importieren. Danach die gewünschten Werte zusammentragen.
Alternativ: Im Archiv findest du Beispiele, um die Webseite direkt mit VBA bzw. HTTP Request oder IE auszulesen.
Falls du die Daten direkt vom Lieferant beziehen willst, eine kleine Recherche. proplant.de bezieht von wetter.net, was wiederum ein Service von Q.met ist.
cu
Chris
AW: Werte aus einer html gezielt auslesen
18.09.2018 14:00:08
klausreich@web.de
Danke an alle ! Ziel meiner "Untersuchungen" ist, merkwürde moderate, anderfalls z.T. heftige Wasserverluste meines Teichleins mit Hilfe meterologischen Daten auf normale Verdunstung, Kapillareffekt oder Undichtigkeit ? zu prüfen. Die VBA-Lösung ist klasse. Besonders dann, wenn ich über eine größere Zeitspanne, als einen Tag ( Woche, Monat, Jahr ) alle Messung auslesen könnte. Mit meinen Fähigkeiten vernag ich jedoch Fennek's Beispiel-Code nicht erweitern. So versuche ich aktuell - nach ChrisL - via "Daten aus Web", die HTML einzulesen. Dort stehen alle Daten in festen Spalten und Zeilen mit fixen Spalten- und Zeilenabständen zum nächsten Eintrag, je drei Stunden weiter. Hier tun sich für den Anfänger schon die nächsten beiden Probleme auf : wie bekomme ich einen Automatismus, der alles löscht oder in ein neues Blatt schiebt, das nicht aus einer definierten Zeilen-/Spaltenfolge und Sprungdifferenzen kommt und wie bekomme ich nun aus der Formatierung vom Text z.B. "1020,9 hPa" als bearbeitbare Dezimalzahl, also 1.020,9 ? By the way : wetter.net und Q.met scheinen kostenpfichtig zu sein ...
Gruß Klaus
Anzeige
AW: Werte aus einer html gezielt auslesen
18.09.2018 15:02:02
Zwenn
Hallo Klaus,
habe Deine Anfrage auch gestern schon gesehen und am Abend auch schon was ausgearbeitet. Ich schau mal, dass ich das nachher fertig bekomme und Dir dann heute Abend hier zur Verfügung stelle. Alternativ kannst Du natürlich den Weg einschlagen, den Chris aufgezeigt hat. Meine Lösung ist, wie Fenneks, in VBA realisiert. Nur komme ich nicht mit so wenig Code aus, wie Fennek :-)=) Dafür hast Du schon die Möglichkeit einen beliebigen Zeitraum auszulesen.
Ich kündige das hier nur jetzt schonmal an, falls Du erstmal abwarten willst, bevor Du Zeit in eine andere Lösung investierst.
Viele Grüße,
Zwenn
Anzeige
AW: Schleife über Datum
18.09.2018 15:07:29
Fennek
Hallo,
wenn Zwenn antwortet, kann ich nur etwas lernen.
Meine Idee war eine Schleife über die gewünschten Datum (Pl), z.B.

for i = int(now) to int(now)-365 step -1
daraus das für die URL benötigte Format zu erzeugen (Format(i, "DD-MM-YYYY")) und in die URL einsetzen.
Also recht einfach.
mfg
AW: Schleife über Datum
18.09.2018 16:08:37
Zwenn
Hi Fennek,
danke für die Blumen :-)
Ich habe eine Tabelle vorgesehen, in der ganz oben der Ort, ein Start- und ein Endedatum eingegeben werden. Ok, Ort wäre nicht nötig gewesen, wenn ich mir Peters Grund für das Auslesen ansehen. Aber egal.
Mit den Daten realisiere ich eine Do Loop Schleife. Einfach jeden Durchgang 1 zum Datum dazu zählen, bis das abzuarbeitende Datum größer als das Endedatum ist. Im Endeffekt also ähnlich wie Deine Lösung. Naja gut, was soll man da auch großartig anders machen. Neben der Variable des Typs Date lasse ich eine vom Typ String mitlaufen, in der die Punkte einfach gegen die Minus ausgetauscht werden und die dann in die jeweils einzulesende URL übernommen wird.
Unter diesen Parametereingaben habe ich die Datentabelle angesiedelt. Die Spalten sind so formatiert, dass am Ende Zahlen drinstehen, wo welche reingehören. Die Einheiten lasse ich über Benutzerdefinierte Formatierungen anzeigen.
Das eigentliche Einlesen passiert natürlich wieder über das DOM. Dazu muss ich sagen, der Seitenquelltext ist was für Masochisten oder Leute mit zu viel Zeit. Eigentlich bin ich keiner der beiden Typen ;-) Es gibt eine Menge verschachtelte Tabellen. Da habe ich mir halt was ausgedacht, um am Ende wirklich nur die Werte auszulesen, die benötigt werden.
Dazu gehört auch, dass das erste Kästchen auf der Seite nicht mit ausgelesen wird. Alle Daten stehen ja in den bis zu 8 Kästchen darunter. Eins ist halt identisch mit dem einzelnen oben. Leider gibt es keine einfachen CSS Klassen oder schicke Attribute, die man auswerten könnte. Deshalb sieht mein Code wesentlich komplizierter aus als Dein schön kurzer.
Das ginge sicher auch einfacher mit gleichem Ergebnis. Ich wollte aber unbedingt die Code-Struktur "knacken", wenn man so will. Bin ja auch immer am weiter lernen und da finde ich es für andere Situationen hilfreich, wenn man sich mal spaßeshalber mit komplizierteren Strukturen auseinander gesetzt hat.
Viele Grüße,
Zwenn
Anzeige
AW: Schleife über Datum
19.09.2018 13:53:20
klausreich@web.de
Guten Mittag in's Forum,
mögt Ihr ( Fennek, Zwenn ) bitte weiterhin eine VBA Lösung entwickeln, die von Datum x bist Datum y alle Daten bei proplant abholt und in eine gemeinsame Tabelle schreibt ? Ich mußte festellen, daß es per "Daten aus Web" unsäglich mühsam ist, händisch tageweise aus den entsprechenden HTMLs zu fischen. Der gesuchte Wert "wandert" von Tag zu Tag auch 'mal um eine Zeile. Und : hat z.B. die rel. Luftfeuchtigkeit keine Nachkommastelle ist diese rechtsbündig ohne Leezeichen als xx% in der Web-Datei eingetragen - eine mit einer NK wird jedoch als Text rechts ala "xx,x %" erkannt. Das bloße Abschneiden der Einheit ( % ) greift also zudem nicht immer.
Gibt's da nichts, quick and dirty, wo ich z.B. von https://www.proplanta.de/Wetter/Wuppertal_Rueckblick_01-08-2018_Wetter.html bis https://www.proplanta.de/Wetter/Wuppertal_Rueckblick_31-08-2018_Wetter.html zumindest den Datumswert, dann folgend Uhrzeit von 00:00 alle 3 Stunden bis 21:00 und dazu die akt., Temp, Luftdruck, Feuchte und Wind als pure Dezimalzahlen auslesen kann ?
Gruß Klaus
Anzeige
Lösung
19.09.2018 15:49:42
Zwenn
Hallo Klaus,
ich bin gestern nicht mehr dazu gekommen, deshalb mit etwas Verspätung hier die Lösung als Arbeitsmappe zum runterladen. Es ist nur eine Tabelle "Wetterdaten" drin. Einfach oben Deine Datumsgrenzen eintragen und auf den Button "Daten holen" klicken. Die Werte werden als Zahlen eingetragen, mit denen Du rechnen kannst. Die Einheiten werden über benutzerdefinierte Formatierungen angezeigt. Das Makro selbst ist gut kommentiert. Allerdings habe ich so oft etwas geändert, dass ich nicht sicher bin, ob die Kommentierung nun immer noch zum Quellcode paßt ;-)
Was mir aufgefallen ist:
  • Es gibt nicht zu jedem Tag Wetterdaten. Z.B. für den 10.08.2018.
    http://www.proplanta.de/Wetter/Wuppertal_Rueckblick_10-08-2018_Wetter.html
    Dazu habe ich das Makro noch so angepasst, dass solche Daten übersprungen werden. Ich habe das aber nicht in die Tiefe getestet. Es kann also sein, dass Du noch auf andere Seiten stößt, die das Makro nicht schluckt. Dann bricht es mit einer Fehlermeldung ab. In dem Fall einfach das Startdatum auf den Tag nach dem nicht funktionierendem Datum setzen und das Makro neu starten.

  • Wenn Wetterdaten vorliegen, sind sie immer in die 9 Kästchen eingetragen. Das obere überspringt das Makro, weil es auf jeden Fall Daten enthält, die unten noch einmal vorkommen. Zusätzlich ist es aber so, dass es Tage gibt, an denen sich in den 8 Kästchen unten die Daten ebenfalls wiederholen. Sehr leicht zu erkennen an wiederholten Uhrzeiten z.B. am 01.08.2018 und am 01.09.2018 wird 1:00 Uhr mehrfach ausgewiesen.
    http://www.proplanta.de/Wetter/Wuppertal_Rueckblick_01-08-2018_Wetter.html
    http://www.proplanta.de/Wetter/Wuppertal_Rueckblick_01-09-2018_Wetter.html
    Diesen Umstand fängt das Makro nicht ab. Du musst also doppelte Werte nach dem Auslesen rausschmeißen. Dazu kannst Du in Excel unter Daten den Dialog Duplikate Entfernen aufrufen, nachdem Du einfach alle Spalten von A bis G selektiert hast. Du markierst einfach die ganzen Spalten, inklusive Orts und Datumsfeldern oben. Im Duplikate Entfernen Dialog setzt Du dann nur die Haken für Spalte B und C. Das sind Datum und Uhrzeit. Dann klickst Du den OK Button an. Dadurch werden alle Einträge entfernt, die sowohl das gleiche Datum, wie auch die gleiche Uhrzeit haben und Du hast saubere Daten.

  • Achtung:
    Das Duplikate Entfernen zieht zwar die Daten nach oben, aber unter dem Datenbereich werden die zuvor belegten Zeilen nicht gelöscht. Das hat zur Folge, dass bei einem erneuten Makrostart nicht direkt unter dem letzten Datensatz geschrieben wird, sondern unter der letzten zuvor gefüllten Zeile, die jetzt leer ist. Du kannst das verhindern, indem Du einfach entsprechend viele Zeilen unter dem letzten Datensatz löscht.

  • Fehler, die nicht abgefangen werden:
  • Falsche Ortseingabe

  • Falsche Datumseingabe

  • Vertauschtes Start- und Endedatum

  • Ich denke im großen und Ganzen solltest Du für Deine Zwecke klar kommen. Hier noch die Datei:
    https://www.herber.de/bbs/user/124079.xlsm
    Viele Grüße,
    Zwenn
    Anzeige
    AW: Lösung
    19.09.2018 18:59:57
    klausreich@web.de
    Hi Zwenn,
    Du hast Dir ja 'ne Menge Arbeit gemacht, mir zu helfen. Thanks a lot !!! Magst Du bitte noch nachtragen, wie's mit Mozilla, statt mit IE geht ? Da die neueren Versionen von Mozilla bei Java "muckten", habe ich auf Mozilla Firefox 56.0 (64-Bit) zurückinstalliert. Leider kann ich mit Google-Infos nicht wirklich umsetzen, wie ich nun Mozilla, statt IE aufrufe, möchte aber auch nicht zu IE wechseln.
    Beste Grüße, Klaus
    Geht nur mit dem IE
    19.09.2018 20:12:36
    Zwenn
    Hallo Klaus,
    ich habe jetzt selber mal die Daten seit dem 01.01.2017 bis heute ausgelesen. Das lief in einem Rutsh ohne Probleme durch und hat insgesamt 32 Minuten gedauert. Daten für 1 Jahr sollten also in etwa 20 Minuten vorliegen. Es wurden in den ausgelesenen Daten auch nur 52 doppelte gefunden. So oft passiert das also gar nicht.
    Mit VBA kann man nur den IE fernsteuern, da das nur über eine sogenannte COM Schnittstelle geht. Die bringen andere Browser aber nicht mit. Die Alternative hat Fennek verwendet. Ohne es wirklich zu wissen gehe ich aber davon aus, dass da von Microsoft auch der IE verwendet wird.
    Für Dich spielt es doch aber auch gar keine Rolle, welche Schnittstelle das Makro verwendet. Der Browser wird ja nichtmal sichtbar. Du kannst ja für Deinen Alltag den Firefox weiter verwenden, wie bisher.
    Ich gehe mal davon aus, dass Du JavaScript meinst oder? Java wird schon lange nicht mehr vom Firefox unterstützt, sondern wurde ganz gezielt abgeschaltet. Ich verwende auch den FF und habe gar keine Probleme. Wo tauchen die denn bei dir auf?
    Viele Grüße,
    Zwenn
    Anzeige
    AW: Geht nur mit dem IE
    20.09.2018 11:26:24
    klausreich@web.de
    Vielen Dank an alle ! Hätte ich doch nur einen Hauch Eurer Fähigkeiten ... @Zwenn : Probleme bekomme ich bei Java-Applets.
    Schönes WE, Klaus
    AW: Geht nur mit dem IE
    20.09.2018 12:24:08
    Zwenn
    Hi Klaus,
    ich konnte nicht sehen, wann die folgende Seite erstellt wurde. Aber dort findest Du direkt von Mozilla Informationen zu Java.
    http://support.mozilla.org/de/kb/java-plugin-fuer-interaktive-webinhalte-nutzen
    Falls es mit Java noch klappt, dann ausschließlich mit der 32 Bit Version des FF. Die 64 Bit Version wird ausdrücklich auf keinen Fall unterstützt.
    Viele Grüße,
    Zwenn
    Anzeige
    AW: Geht nur mit dem IE
    20.09.2018 13:16:24
    klausreich@web.de
    @Zwenn : übersetze ich Deine Antwort richtig, wenn ich sage "nimm die 32-bit-Variante des FF" ? Mit den nicht laufenden Java-Apletts kann ich zunächst leben und werde mich bei Gelegenheit ein Mal damit beschäftigen. Dein Wetter-Makro ist einfach genial !!! Es funktioniert perfekt !!! Du hast mir dutzende von Stunden erspart, alle Daten händisch zu holen, zu sortieren, zu formatieren und über einen Zeitraum auszuwerten. Schon Dein "schreibe nicht kopflos die neuen Daten immer ab A5", sondern "hänge sie ab nächsten freien Zeile an" ist Gold wert. Ich bin begeistert, danke, danke, danke
    Klaus
    Anzeige
    AW: Geht nur mit dem IE
    21.09.2018 11:42:36
    Zwenn
    Hallo Klaus,
    freut mich, dass das Wetter-Daten-Makro für Dich so gut funktioniert und Dir so viel Zeit spart :-)
    Zu Java im FF habe ich gestern bei meiner kurzen Recherche noch gelesen, dass es ab Version 60 wohl gar nicht mehr geht. In wie weit das genannte PlugIn heute noch verfügbar ist bzw. weiter entwickelt wurde, weiß ich nicht. Also falls es überhaupt noch geht, dann mit einer älteren 32 Bit Version des FF.
    Viele Grüße,
    Zwenn
    AW: Geht nur mit dem IE
    22.09.2018 14:56:22
    klausreich@web.de
    Tach Zwenn, ich komme noch Mal längsseits. Nachdem ich an einem Fortschrittsbalken gescheitert bin, habe ich eine Primitivlösung versucht : wie viele Datensätze sind noch einzulesen ? Selbst einen Button, der alles ab A5 bis zum Ende der Tabelle, auch H4 löscht und wieder bei A5 neu beginnt, habe ich noch nicht mal als Name "leeren" oder "neu" hinbekommen. Drücke ich versehentlich 2 mal auf Commandbutton sind auch plötzlich A4 bis G4 leer, selbst I4 bis N4 werden geleert. Vom Scheitern eleganter Eingabe via Kalender des Start- und Enddatums in B2 und C2 will ich mal gar nicht reden. Vielleicht magst Du Dir meine Verschlimmbesserung ansehen : https://www.herber.de/bbs/user/124152.xlsm
    Anzeige
    AW: Geht nur mit dem IE
    23.09.2018 11:16:05
    Zwenn
    Hallo Klaus,
    habe den Tag über keine Zeit da was zu basteln, weil wir bei meiner Freundin renovieren.
  • Ich würde die Mittelwerte über der Datentabelle anordnen. So nutzt man dann die Kopfzeile doppelt.

  • Die Mittelwerte kannst Du direkt nur über die Mittelwert-Formel über die entsprechende Datenspalte berechnen. Index und den ganzen Rest kannst Du weglassen.

  • Das Löschen des Datenbereichs muss ich mir in Ruhe ansehen. Ist aber auch eher einfach umzusetzen

  • Für das luxuriöse auswählen von Start- und Endedatum hat Hajo eine schöne Lösung entwickelt, die er über seine Seite zur Verfügung stellt. Die Lösung muss an verschiedenen Stellen in die Arbeitsmappe integriert und auf die gewünschten Zellen angepasst werden. Das ist nix für Anfänger, würde ich dann mitmachen.
    http://www.hajo-excel.de/

  • Zur Fortschrittsanzeige und um zu sehen, ob das Makro noch etwas macht, habe ich das Scrollen der Datentabelle während des Auslesens eingebaut. Man kann aber auch noch einen Zähler einbauen, wenn Du willst. Allerdings würde ich keine Datensätze zählen, sondern Tage. Hintergrund ist, dass pro Tag sowieso mehrere Datensätze im Bruchteil einer Sekunde geholt werden. Der Zähler springt also immer gleich ein ganzes Stück und macht für unser Gehirn von der Verhältnisabschätzung so keinen Sinn mehr. Abgesehen davon sind es nicht für jeden Tag 8 Datensätze, wenn man ältere Daten abgreift. Für vor 2017 habe ich es nicht getestet, aber mindestens die ersten Monate in 2017 gibt es pro Tag nur 7 Datensätze, denn die Uhrzeiten, an denen gemessen wurde, sind um eine Stunde verschoben.

  • Wie gesagt, heute wird das nix mehr. Aber ich nehme an es besteht jetzt auch nicht unbedingt Zeitdruck.
    Viele Grüße,
    Zwenn
    AW: Warum?
    17.09.2018 15:15:42
    Fennek
    Hallo,
    erkläre bitte den Sinn und den Hintergrund der Fragestellung.
    Es könnte möglich sein bei gleichem Aufbau der URL auch viele Tage auszulesen.
    mfg
    AW: ein Beispiel
    17.09.2018 20:25:53
    Fennek
    Hallo,
    für die genannte Seite kann die Temperatu so ausgelesen werden:
    
    Const Url As String = "z:\blick_09-09-2018_Wetter.html"
    Sub T_1()
    With CreateObject("MSXML2.XMLHTTP")
    .Open "Get", Url, False
    .Send
    c00 = .ResponseText
    End With
    With CreateObject("htmlfile")
    .Body.innerhtml = c00
    Set Kn = .getElementsByTagName("span")
    For Each Zw In Kn
    it = Zw.innertext
    If InStr(it, "Luftdruck") > 0 Then b = False
    If InStr(it, "Uhrzeit") > 0 Then b = True: i = i + 1: j = 1
    If b Then Cells(i, j) = it: j = j + 1
    Next Zw
    End With
    End Sub
    
    Ein Schleife über viele Datum(s) ist leicht zu setzen.
    mfg

    300 Forumthreads zu ähnlichen Themen

    Anzeige
    Anzeige
    Anzeige

    Links zu Excel-Dialogen

    Beliebteste Forumthreads (12 Monate)

    Anzeige

    Beliebteste Forumthreads (12 Monate)

    Anzeige
    Anzeige
    Anzeige