Mit MSXML2.XMLHTTP in Excel VBA zum extrahieren von große Mengen an text-Daten, die von der website
Ich versuche, download historical stock price Daten vom finance.yahoo.com für 1000 Aktien. Die website zeigt nur 60 Tagen Daten auf einer einzigen Seite, so habe ich eine Schleife über die Zeit, in der ich die Dateien herunterlade, für die zusammen mit der Schleife für verschiedene Wertpapiere. Ich habe den folgenden code, um den Zugriff auf die entsprechende Seite.
Set httpObject = CreateObject("MSXML2.XMLHTTP")
httpObject.Open "GET", url, False
httpObject.send
webObject.body.innerHTML = httpObject.responseText
Diese funktioniert wie ein Charme für 99% der Daten, die ich auf. Aber jedes jetzt und dann, wird das Objekt zurückgegeben, die von der Webseite herausstellt, leer zu sein, obwohl die exakt gleiche URL zeigt mir die richtigen Daten in Internet Explorer. Wenn ich erneut den code nur für die URL, es kann oder kann nicht scheitern, das nächste mal.
Ich würde gerne wissen, ob es eine stabile/konsistente Art und Weise der Verwendung der oben beschriebenen Methode. Ich hatte vorher implementiert der Internet Explorer.Anwendung der Methode für das herunterladen von Daten aber gefunden, dass viel langsamer und umständlich.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Überprüfen Sie die readystate -.
das bedeutet, dass es vollständig geladen wurde. Dann können Sie überprüfen Sie den status
das bedeutet, dass Sie nicht mess up die URL. Wenn der readystate 4 und der status liegt bei 200, dann können Sie Lesen responseText.
Ich hatte das gleiche Problem, immer eine leere response verwendet werden, mit
.Status = 0
(also Ok).Mein Problem, es stellte sich heraus, war, dass der http-wenn man in die browser-Umleitung auf https. Als ich geändert es mein Wunsch war es in Ordnung.
Für eine generische Funktion, die Sie könnten versuchen, http-und wenn Sie
.Status = 0
und.responseText = ""
, dann wiederholen Sie aber mit https.