Scrapping von Daten von der Website mit vba

9

Ich versuche, Daten von der Website zu kratzen: Ссылка über vba, wie Echtzeitpreis, dh Deutsch 5 YR Bobl, US 30Y T-Bond, ich habe versucht, Excel-Web-Abfrage, aber es kratzt nur die gesamte Website, aber ich möchte nur die Rate kratzen, gibt es eine Möglichkeit, dies zu tun?

    
rockNroll 21.11.2014, 17:25
quelle

4 Antworten

54

Es gibt mehrere Möglichkeiten, dies zu tun. Dies ist eine Antwort, die ich schreibe in der Hoffnung, dass alle Grundlagen der Internet Explorer-Automatisierung gefunden werden, wenn Sie nach den Schlüsselwörtern "Scraping Daten von der Website" suchen, aber denken Sie daran, dass nichts als Ihre eigene Forschung wert ist (wenn Sie nicht bleiben wollen) vordefinierte Codes, die Sie nicht anpassen können.)

Bitte beachten Sie, dass dies oneway ist, das ich in Bezug auf die Leistung nicht bevorzuge (da es von der Browsergeschwindigkeit abhängt), aber das ist gut, um die Gründe für die Internetautomatisierung zu verstehen / p>

1) Wenn ich im Internet surfen muss, brauche ich einen Browser! Also erstelle ich einen Internet Explorer Browser:

%Vor%

2) Ich bitte den Browser, die Zielwebseite zu durchsuchen. Durch die Verwendung der Eigenschaft ".Visible" entscheide ich, ob ich sehen möchte, ob der Browser seine Aufgabe erfüllt oder nicht. Beim Erstellen des Codes ist es schön, Visible = True zu haben, aber wenn der Code für das Scraping von Daten arbeitet, ist es nett, ihn nicht jedes Mal zu sehen, also Visible = False .

%Vor%

3) Die Webseite benötigt etwas Zeit zum Laden. Also, ich werde warten, während es beschäftigt ist ...

%Vor%

4) Nun, jetzt ist die Seite geladen. Nehmen wir an, ich möchte den Wechsel des US30Y T-Bond abfangen: Ich klicke einfach auf F12 im Internet Explorer, um den Code der Webseite zu sehen, und mit dem Mauszeiger (im roten Kreis) klicke ich auf das Element, das ich abkratzen möchte, um zu sehen, wie ich meinen Zweck erreichen kann.

5) Was ich tun sollte, ist geradlinig. Zuallererst bekomme ich durch die ID-Eigenschaft das tr -Element, das den Wert enthält:

%Vor%

Hier werde ich eine Sammlung von td -Elementen bekommen (genauer gesagt, tr ist eine Reihe von Daten, und die td sind ihre Zellen. Wir suchen nach dem 8., also schreibe ich:

%Vor%

Warum habe ich 7 statt 8 geschrieben? Da die Zellsammlungen von 0 ausgehen, ist der Index des 8. Elements 7 (8-1). Kurz diese Codezeile analysieren:

  • .Cells() ermöglicht den Zugriff auf die td elements;
  • innerHTML ist die Eigenschaft der Zelle, die den gesuchten Wert enthält.

Sobald wir unseren Wert haben, der jetzt in der Variablen myValue gespeichert ist, können wir einfach den IE-Browser schließen und den Speicher freigeben, indem wir ihn auf Nothing setzen:

%Vor%

Nun, jetzt haben Sie Ihren Wert und Sie können damit machen, was Sie wollen: setzen Sie es in eine Zelle ( Range("A1").Value = myValue ) oder in eine Bezeichnung eines Formulars ( Me.label1.Text = myValue ).

Ich möchte Sie nur darauf hinweisen, dass StackOverflow nicht so funktioniert: Hier stellen Sie Fragen zu bestimmten Codierungsproblemen, aber Sie sollten zuerst Ihre eigene Suche durchführen. Der Grund, warum ich eine Frage beantworte, die nicht zu viel Forschungsaufwand zeigt, ist nur, dass ich es mehrmals gefragt habe und zurück zu der Zeit, als ich das lernte, erinnere ich mich, dass ich gerne etwas besseres gehabt hätte Unterstützung für den Einstieg. Ich hoffe also, dass diese Antwort, die nur eine "Lerneingabe" und nicht die beste / vollständigste Lösung ist, eine Unterstützung für den nächsten Benutzer sein kann, der das gleiche Problem hat. Weil ich gelernt habe, dank dieser Community zu programmieren, und ich denke, dass Sie und andere Anfänger meinen Input nutzen könnten, um die schöne Welt des Programmierens zu entdecken.

Genießen Sie Ihre Praxis;)

    
Matteo NNZ 21.11.2014, 20:36
quelle
1

Sie können Winhttprequest Objekt anstelle von Internet Explorer verwenden, da es gut ist, Daten ohne Bilder zu laden n Werbung, anstatt vollständige Webseite einschließlich Werbung n Bilder, die machen Internet Explorer Objekt schwer zu WinhttpRequest Objekt vergleichen.

    
Nitin k tomar 11.01.2017 09:02
quelle
0

Diese Frage wurde lange vorher gestellt. Aber ich dachte, die folgenden Informationen werden für Neulinge nützlich sein. Tatsächlich können Sie die Werte vom Klassennamen einfach so erhalten.

%Vor%

Und wenn Sie neu im Web sind, lesen Sie bitte diesen Blogpost.

Web Scraping - Grundlagen

Und es gibt auch verschiedene Techniken, um Daten von Webseiten zu extrahieren. Dieser Artikel erklärt einige von ihnen mit Beispielen.

Web Scraping - Sammeln von Daten von einer Webseite

>     
Roshantha De Mel 06.10.2017 07:53
quelle
0

Ich habe etwas geändert, das Fehler für mich auftauchen und am Ende damit, was großartig war, um die Daten zu extrahieren, wie ich brauchte:

%Vor%     
IRENE G 13.03.2018 10:27
quelle

Tags und Links