VBA Web Scraping

Excel VBA Web Scraping

VBA Web Scraping ist eine Technik zum Zugreifen auf Webseiten und zum Herunterladen der Daten von dieser Website auf unsere Computerdateien. Web-Scraping ist durch Zugriff auf externe Anwendungen wie Internet Explorer möglich. Wir können dies auf zwei Arten tun, dh Frühbindung und Spätbindung.

Web-Scraping mit VBA bedeutet, dass bei Verwendung von VBA zum Abrufen der Daten aus den anderen Quellen im Web möglicherweise Anmeldungen für die Datenquellen erforderlich sind. Dazu müssen jedoch zunächst die Verweise aus dem Abschnitt "Tools" in aktiviert werden den VBA-Editor für die Microsoft HTML-Bibliothek, um von VBA aus auf das Web zuzugreifen.

Nicht viele von uns wissen, dass wir von Excel aus auf die Webseiten zugreifen und die Daten von diesen Webseiten abrufen können. Ja, du hast es richtig gehört. Wir können Webseiten durchsuchen, auf Browseranwendungen zugreifen und vieles mehr. In diesem Artikel zeigen wir Ihnen detailliert, wie Sie einen Excel-VBA-Code für das Web-Scraping schreiben.

Normalerweise öffnen wir die Webseiten, kopieren die Daten und fügen sie in unsere Dateien wie Excel, Word oder einige andere Dateien ein. In diesem Artikel zeigen wir Ihnen jedoch, wie Sie von Excel aus auf Websites zugreifen und viele andere Dinge tun können.

Wie werden Website-Daten mit VBA verschrottet?

Sie können diese VBA Web Scraping Excel-Vorlage hier herunterladen - VBA Web Scraping Excel-Vorlage

Wenn wir von Excel aus auf andere Anwendungen zugreifen möchten, können wir dies auf folgende Weise tun: z. B. „Frühbindung“ und „Spätbindung“. In der Anfängerphase ist es immer sicher, die „Early Binding“ -Technik anzuwenden.

Für den Zugriff auf die Website benötigen wir Browsing-Anwendungen, z. B. " Internet Explorer ". Da es sich um ein externes Objekt handelt, müssen wir zuerst die Referenz festlegen.

Befolgen Sie die folgenden Schritte, um Web Scrap.

Schritt 1: Definieren Sie die VBA-Variable und weisen Sie den Datentyp als " Internet Explorer " zu.

Code:

 Sub Web_Scraping () Dim Internet_Explorer As Internet End Sub 

Wie Sie oben sehen können, wird beim Versuch, den Verweis auf Internet Explorer festzulegen, "Internet Explorer" nicht angezeigt. Dies liegt daran, dass "Internet Explorer" ein externes Objekt ist und wir den Verweis festlegen müssen.

Schritt 2: Um die Referenz festzulegen, gehen Sie zu " Extras " und wählen Sie " Referenzen ".

Scrollen Sie im folgenden Fenster nach unten und wählen Sie " Microsoft Internet Controls ".

Schritt 3: Aktivieren Sie das Kontrollkästchen "Microsoft Internet Controls" und klicken Sie auf "OK". Jetzt sollten wir diesen Objektnamen in der IntelliSense-Liste sehen.

Code:

 Sub Web_Scraping () Dim Internet_Explorer As inter End Sub 

Schritt 4: Wählen Sie "InternetExplorer".

Code:

 Sub Web_Scraping () Dim Internet_Explorer As InternetExplorer End Sub 

Schritt 5: Als nächstes müssen wir die Referenz festlegen, um Internet Explorer zu aktivieren. Da dies eine Objektvariable ist, müssen wir das Schlüsselwort " Set " verwenden, um die Referenzen festzulegen.

Code:

 Sub Web_Scraping () Internet_Explorer als InternetExplorer dimmen Setzen Sie Internet_Explorer = New InternetExplorer End Sub 

Schritt 6: Mit der Variablen " Internet_Explorer " können wir nun die Eigenschaften und Methoden des Internet Explorers verwenden.

Geben Sie den Variablennamen ein und setzen Sie einen Punkt, um die IntelliSense-Liste anzuzeigen.

Code:

Sub Web_Scraping () Internet_Explorer als InternetExplorer dimmen Setzen Sie Internet_Explorer = Neuer InternetExplorer Internet_Explorer. End Sub

Schritt 7: Um die Internet Explorer-Anwendung anzuzeigen, müssen Sie die Eigenschaft " Sichtbar " auswählen und den Status auf " Wahr " setzen.

Code:

 Sub Web_Scraping () Internet_Explorer als InternetExplorer dimmen Set Internet_Explorer = New InternetExplorer Internet_Explorer.Visible = True End Sub 

Führen Sie nun den Code aus und Sie sollten sehen, dass ein Internet Explorer auf Ihrem Computer geöffnet wird.

Schritt 8: Da keine Webadresse angegeben wurde, wird nur eine leere Seite angezeigt. Um dem Internet Explorer die Webadresse zu geben, müssen wir die Navigationsmethode verwenden.

Code:

 Sub Web_Scraping () Internet_Explorer als InternetExplorer dimmen Internet_Explorer = New InternetExplorer festlegen Internet_Explorer.Visible = True Internet_Explorer.Navigate (End Sub 

Schritt 9: Wie Sie oben sehen können, fragt die Navigationsmethode, welche URL im Internet Explorer navigiert werden soll. Jetzt muss ich die Website " Wallstreetnmojo " öffnen und kann die URL-Adresse wie folgt angeben. "//Www.wallstreetmojo.com/"

Code:

 Sub Web_Scraping () Dim Internet_Explorer als InternetExplorer Set Internet_Explorer = New InternetExplorer Internet_Explorer.Visible = True Internet_Explorer.Navigate ("//www.wallstreetmojo.com") End Sub 

Führen Sie nun den Code aus, wir sollten die erwähnte Webadressseite im Internet Explorer sehen.

Hier haben wir das Problem, dass unser Code nach dem Öffnen der Webseite warten muss, bis die Webseite vollständig geöffnet ist.

Schritt 10: Wir müssen die "Do While" -Schleife in VBA verwenden, um tatsächlich darauf zu warten, dass unser Code weitergeht, bis die erwähnte Seite vollständig geladen ist.

Fügen Sie also unterhalb der Schleife "Do While" hinzu, um das Makro zu zwingen, zu warten, bis die erwähnte Webseite in den Modus " Ready State Complete " wechselt.

Code:

 Sub Web_Scraping() Dim Internet_Explorer As InternetExplorer Set Internet_Explorer = New InternetExplorer Internet_Explorer.Visible = True Internet_Explorer.Navigate ("//www.wallstreetmojo.com") Do While Internet_Explorer.ReadyState  READYSTATE_COMPLETE: Loop End Sub 

Step 11: Now let’s try to get information about the website in a single line. To get the information about the mentioned web address information we need to use the “Location Name” property.

Code:

 Sub Web_Scraping() Dim Internet_Explorer As InternetExplorer Set Internet_Explorer = New InternetExplorer Internet_Explorer.Visible = True Internet_Explorer.Navigate ("//www.wallstreetmojo.com") Do While Internet_Explorer.ReadyState  READYSTATE_COMPLETE: Loop MsgBox Internet_Explorer.LocationName End Sub 

Run the code and in the message box, we would get the information about the website.

Step 12: Now at the bottom, we can also print website addresses as well.

Code:

 Sub Web_Scraping() Dim Internet_Explorer As InternetExplorer Set Internet_Explorer = New InternetExplorer Internet_Explorer.Visible = True Internet_Explorer.Navigate ("//www.wallstreetmojo.com") Do While Internet_Explorer.ReadyState  READYSTATE_COMPLETE: Loop MsgBox Internet_Explorer.LocationName & vbNewLine & vbNewLine & Internet_Explorer.LocationURL End Sub 

Now this will tell about the website description and also shows the website address as well.

Things to Remember here

  • Web scraping is possible by accessing external applications like Internet Explorer.
  • We can do it in two ways i.e. Early Binding & Late Binding. With Early Binding, we can get to see the IntelliSense list but with late binding, we cannot get to see the IntelliSense list at all.