Ich versuche, historische Aktienkursdaten von finance.yahoo.com für 1000s Aktien herunterzuladen. Die Website zeigt nur 60 Tage Daten auf einer einzelnen Seite an, so dass ich die Zeitperiode, in der ich lade, zusammen mit der Schleife für verschiedene Wertpapiere durchlaufen muss. Ich habe den folgenden Code verwendet, um auf die entsprechende Seite zuzugreifen.
%Vor%Das funktioniert wie ein Zauber für 99% der Daten, auf die ich zugreife. Aber hin und wieder stellt sich heraus, dass das von der Website zurückgegebene Objekt leer ist, obwohl die exakt gleiche URL mir die richtigen Daten im Internet Explorer anzeigt. Wenn ich den Code nur für diese URL erneut durchführe, kann es beim nächsten Mal fehlschlagen.
Ich würde gerne wissen, ob es eine stabilere / konsistentere Art der Verwendung der obigen Methode gibt. Ich hatte zuvor die InternetExplorer.Application-Methode implementiert, um Daten herunterzuladen, fand diese aber viel langsamer und umständlicher.
Überprüfen Sie den Bereitschaftszustand.
%Vor%Das bedeutet, dass es geladen wird. Dann können Sie den Status
überprüfen %Vor%Das heißt, Sie haben die URL nicht durcheinander gebracht. Wenn readystate 4 ist und status 200 ist, können Sie den responseText lesen.
Ich hatte das gleiche Problem, eine leere Antwort bekommen, mit .Status = 0
(d. h. Ok).
Mein Problem war, dass das http, wenn Sie in den Browser gehen, zu https umleitet. Als ich es in meiner Anfrage änderte, war es in Ordnung.
Für eine generische Funktion könnten Sie versuchen, http und wenn Sie .Status = 0
und .responseText = ""
erhalten, dann wiederholen Sie aber mit https.
Tags und Links vba excel html-content-extraction msxml