Verwenden von Excel VBA und Selen

Inhaltsverzeichnis:

Anonim

Was ist Data Scraping mit Selen?

Selen kann als das Automatisierungstool klassifiziert werden, das das Scraping von Informationen von den HTML-Webseiten erleichtert, um das Web-Scraping mithilfe von Google Chrome durchzuführen.

In diesem Tutorial lernen Sie:

  • Was ist Data Scraping mit Selen?
  • Wie bereite ich ein Excel-Makro vor, bevor ich das Daten-Scraping mit Selen durchführe?
  • Wie öffne ich Google Chrome mit VBA?
  • Wie öffne ich eine Website in Google Chrome mit VBA?
  • Wie kratzt man Informationen von der Website mit VBA?

Wie bereite ich ein Excel-Makro vor, bevor ich das Daten-Scraping mit Selen durchführe?

Es gibt bestimmte Voraussetzungen, die für die Excel-Makrodatei erfüllt sein müssen, bevor Sie mit dem Scraping von Daten in Excel beginnen können.

Diese Voraussetzungen sind wie folgt:

Schritt 1) Öffnen Sie ein Excel-basiertes Makro und greifen Sie auf die Entwickleroption von Excel zu.

Schritt 2) Wählen Sie unter Entwickler-Multifunktionsleiste die Option Visual Basic.

Schritt 3) Fügen Sie ein neues Modul ein.

Schritt 4) Initialisieren Sie eine neue Unterroutine und nennen Sie sie test2.

Sub test2 ()End Sub

Folgendes wären die Ergebnisse im Modul: -

Schritt 5) Greifen Sie auf die Referenzoption unter der Registerkarte Werkzeug zu und referenzieren Sie die Selenium-Typbibliothek. Die folgenden Bibliotheken beziehen sich auf das Modul, da es beim Öffnen von Google Chrome hilft und die Entwicklung von Makroskripten erleichtert.

Jetzt kann die Excel-Datei mit dem Internet Explorer interagieren. Die nächsten Schritte wären die Einbindung eines Makroskripts, das das Scraping von Daten in HTML erleichtert.

Wie öffne ich Google Chrome mit VBA?

Hier finden Sie Schritte zum Öffnen von Google Chrome mit VBA

Schritt 1) Deklarieren und initialisieren Sie die Variablen in der Unterroutine wie unten gezeigt

Sub test2 ()Treiber als neuer Webdriver dimmenDim rowc, cc, columnC als Ganzzahl

Schritt 2) Um Google Chrome mit Selen und VBA zu öffnen, schreiben Sie driver.start "chrome" und drücken Sie F5 .

Das Folgende wäre der Code.

Sub test2 ()Treiber als neuer Webdriver dimmenDim rowc, cc, columnC als GanzzahlDriver.start "Chrome"Application.Wait Now + Zeitwert ("00:00:20")End Sub

Das Modul würde sich wie folgt ergeben: -

Wie öffne ich eine Website in Google Chrome mit VBA?

Sobald Sie mit VBA auf Google Chrome zugreifen können, besteht der nächste Schritt darin, den Zugriff auf eine Website mit VBA zu integrieren. Dies wird durch die Funktion get erleichtert, bei der die URL als doppelte Anführungszeichen im Attribut übergeben werden muss.

Befolgen Sie die folgenden Schritte wie angezeigt

Das Modul würde wie folgt aussehen: -

Drücken Sie F5, um das Makro auszuführen.

Die folgende Webseite wird wie angezeigt in Google Chrome geöffnet

Sub test2 ()Treiber als neuer Webdriver dimmenDim rowc, cc, columnC als GanzzahlDriver.start "Chrome"Driver.get "http://demo.guru99.com/test/web-table-element.php"Application.Wait Now + Zeitwert ("00:00:20")End Sub

Jetzt ist das Excel-Makro für die Ausführung der Scraping-Aufgaben bereit. Der nächste Schritt würde anzeigen, wie die Informationen durch Anwenden von Selen und VBA extrahiert werden können.

Wie kratzt man Informationen von der Website mit VBA?

Angenommen, der Daytrader möchte täglich auf die Daten der Website zugreifen. Jedes Mal, wenn der Daytrader den Klick auf die Schaltfläche drückt, sollte er die Marktdaten automatisch in Excel ziehen.

Auf der oben genannten Website müsste ein Element überprüft und die Struktur der Daten beobachtet werden. Greifen Sie auf den folgenden HTML-Quellcode zu, indem Sie Strg + Umschalt + I drücken


Unternehmen Gruppe Pre Close (Rs) Aktueller Preis (Rs) % Change

Der Quellcode wäre wie folgt: -

Wie zu sehen ist, sind die Daten als einzelne HTML-Tabelle strukturiert. Um ganze Daten aus der HTML-Tabelle abzurufen, müsste daher ein Makro entworfen werden, das die Header-Informationen der HTML-Tabelle und die entsprechenden der Tabelle zugeordneten Daten abruft. Führen Sie die folgenden Aufgaben wie angezeigt aus: -

Schritt 1) Formulieren Sie eine for-Schleife, die die HTML-Header-Informationen als Sammlung durchläuft. Der Selentreiber muss die Header-Informationen der HTML-Tabelle finden. Zu diesem Zweck verwenden wir die Methoden FindElementByClass () und FindElementByTag (), um die angezeigte Aufgabe auszuführen

Das VBA-Modul würde wie folgt aussehen: -

Sub test2 ()Treiber als neuen WebDriver dimmenDim rowc, cc, columnC As Integerrowc = 2Application.ScreenUpdating = Falsedriver.Start "chrome"driver.Get "http://demo.guru99.com/test/web-table-element.php"Für jeden th In driver.FindElementByClass ("dataTable"). FindElementByTag ("thead"). FindElementsByTag ("tr")cc = 1Für jedes t In th.FindElementsByTag ("th")Sheet2.Cells (1, cc) .Value = t.Textcc = cc + 1Nächstes TWeiter th

Schritt 2) Als nächstes würde der Selentreiber die Tabellendaten unter Verwendung des oben erwähnten ähnlichen Ansatzes lokalisieren. Sie müssen den folgenden Code schreiben: -

Sub test2 ()Treiber als neuen WebDriver dimmenDim rowc, cc, columnC As Integerrowc = 2Application.ScreenUpdating = Falsedriver.Start "chrome"driver.Get "http://demo.guru99.com/test/web-table-element.php"Für jeden th In driver.FindElementByClass ("dataTable"). FindElementByTag ("thead"). FindElementsByTag ("tr")cc = 1Für jedes t In th.FindElementsByTag ("th")Sheet2.Cells (1, cc) .Value = t.Textcc = cc + 1Nächstes TWeiter thFür jede tr In driver.FindElementByClass ("dataTable"). FindElementByTag ("tbody"). FindElementsByTag ("tr")Spalte C = 1Für jeden td In tr.FindElementsByTag ("td")Sheet2.Cells (rowc, columnC) .Value = td.TextSpalteC = SpalteC + 1Weiter tdrowc = rowc + 1Nächste trApplication.Wait Now + TimeValue ("00:00:20")End Sub

Das vba-Modul würde wie folgt aussehen: -

Das Excel kann mit dem Range-Attribut des Excel-Arbeitsblatts oder mit dem Zellenattribut des Excel-Arbeitsblatts initialisiert werden. Um die Komplexität des VBA-Skripts zu verringern, werden die Erfassungsdaten mit dem Excel-Zellenattribut des in der Arbeitsmappe vorhandenen Arbeitsblatts 2 initialisiert. Darüber hinaus hilft das Textattribut beim Abrufen der Textinformationen unter dem HTML-Tag.

Sub test2 ()Treiber als neuen WebDriver dimmenDim rowc, cc, columnC As Integerrowc = 2Application.ScreenUpdating = Falsedriver.Start "chrome"driver.Get "http://demo.guru99.com/test/web-table-element.php"Für jeden th In driver.FindElementByClass ("dataTable"). FindElementByTag ("thead"). FindElementsByTag ("tr")cc = 1Für jedes t In th.FindElementsByTag ("th")Sheet2.Cells (1, cc) .Value = t.Textcc = cc + 1Nächstes TWeiter thFür jede tr In driver.FindElementByClass ("dataTable"). FindElementByTag ("tbody"). FindElementsByTag ("tr")Spalte C = 1Für jeden td In tr.FindElementsByTag ("td")Sheet2.Cells (rowc, columnC) .Value = td.TextSpalteC = SpalteC + 1Weiter tdrowc = rowc + 1Nächste trApplication.Wait Now + TimeValue ("00:00:20")End Sub

Das vba-Modul würde wie folgt aussehen: -

Schritt 3) Sobald das Makroskript fertig ist, übergeben Sie die Excel-Schaltfläche und weisen Sie sie zu. Beenden Sie das Modul von VBA. Beschriften Sie die Schaltfläche als Aktualisierung oder als geeigneten Namen, der damit initialisiert werden könnte. In diesem Beispiel wird die Schaltfläche als Aktualisierung initialisiert.

Schritt 4) Drücken Sie die Aktualisierungstaste, um die unten genannte Ausgabe zu erhalten

Schritt 5) Vergleichen Sie die Ergebnisse in Excel mit den Ergebnissen von Google Chrome

Zusammenfassung:

  • Selen kann als das Automatisierungstool klassifiziert werden, das das Scraping von Informationen von den HTML-Webseiten erleichtert, um das Web-Scraping mithilfe von Google Chrome durchzuführen.
  • Das Scraping im Internet sollte sorgfältig durchgeführt werden.
  • Es verstößt normalerweise gegen die Bestimmungen der Website, Informationen herauszukratzen.
  • Wenn das Scraping über Selen erfolgt, bietet es Unterstützung für mehrere Browser.
  • Mit anderen Worten, der Scraper kann ähnliche Aufgaben wie das Scraping über Firefox, den Internet Explorer, ausführen.