Selenium VBA-Excel-Tutorial: Chrome Web Scraping-Beispiel

Was ist Data Scraping mit Selenium?

Selenium kann als Automatisierungstool klassifiziert werden, das das Scraping von Informationen aus HTML-Webseiten erleichtert, um Web Scraping mit Google Chrome durchzuführen.

So bereiten Sie ein Excel-Makro vor, bevor Sie Data Scraping durchführen Selenium?

Es gibt bestimmte Voraussetzungen, die für die Excel-Makrodatei erfüllt sein müssen, bevor mit dem Daten-Scraping-Prozess in Excel begonnen werden kann.

Diese Voraussetzungen sind wie folgt: –

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

Bereiten Sie das Excel-Makro vor, bevor Sie das Data Scraping durchführen

Schritt 2) Wählen Sie im Menüband „Entwickler“ die Option „Visual Basic“ aus.

Bereiten Sie das Excel-Makro vor, bevor Sie das Data Scraping durchführen

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

Bereiten Sie das Excel-Makro vor, bevor Sie das Data Scraping durchführen

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

Sub test2()
End sub

Folgendes wären die Ergebnisse im Modul: –

Bereiten Sie das Excel-Makro vor, bevor Sie das Data Scraping durchführen

Schritt 5) Greifen Sie auf die Referenzoption unter der Registerkarte „Werkzeug“ und „Referenz“ zu Selenium Typbibliothek. Die folgenden Bibliotheken müssen für das Modul referenziert werden, da sie beim Öffnen von Google Chrome helfen und die Entwicklung von Makroskripten erleichtern.

Bereiten Sie das Excel-Makro vor, bevor Sie das Data Scraping durchführen

Jetzt ist die Excel-Datei bereit für die Interaktion mit dem Internet Explorer. Die nächsten Schritte wären die Einbindung eines Makroskripts, das das Daten-Scraping in HTML erleichtern würde.

Wie Öffnen Google Chrome mit VBA?

Hier sind die Schritte zum Öffnen Google Chrome mit VBA

Schritt 1) Deklarieren und initialisieren Sie die Variablen in der Subroutine wie unten dargestellt

Sub test2()
Dim driver as new webdriver
Dim rowc, cc, columnC as integer

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

Der Code wäre wie folgt:

Sub test2()
Dim driver as new webdriver
Dim rowc, cc, columnC as integer
Driver.start "Chrome"
Application.Wait Now+Timevalue("00:00:20")
End sub

Das Modul würde sich wie folgt ergeben: –

Öffnen Google Chrome Mit VBA

Wie öffnet man 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 Get-Funktion erleichtert, bei der die URL im Attribut als Anführungszeichen übergeben werden muss.

Befolgen Sie die angezeigten Schritte

Das Modul würde wie folgt aussehen: –

Öffnen Sie die Website in Google Chrome Mit VBA

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

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

Sub test2()
Dim driver as new webdriver
Dim rowc, cc, columnC as integer
Driver.start "Chrome"
Driver.get "http://demo.guru99.com/test/web-table-element.php"
Application.Wait Now+Timevalue("00:00:20")
End sub

Öffnen Sie die Website in Google Chrome Mit VBA

Jetzt ist das Excel-Makro bereit, die Scraping-Aufgaben auszuführen. Der nächste Schritt zeigt, wie die Informationen durch die Anwendung von Selenium und VBA extrahiert werden können.

Wie entferne ich mit VBA Informationen von einer Website?

Angenommen, der Daytrader möchte täglich auf die Daten der Website zugreifen. Jedes Mal, wenn der Daytrader die Schaltfläche „Klicken“ drückt, sollten die Marktdaten automatisch in Excel übernommen werden.

Von der oben genannten Website aus wäre es notwendig, ein Element zu untersuchen und zu beobachten, wie die Daten strukturiert sind. Greifen Sie auf den folgenden HTML-Quellcode zu, indem Sie Strg + drücken Shift + I

<table class="datatable">
<thead>
<tr>
<th>Company</th>
<th>Group</th>
<th>Pre Close (Rs)</th>
<th>Current Price (Rs)</th>
<th>% Change</th>
</tr>

Der Quellcode würde wie folgt lauten: –

Wie man sehen kann, sind die Daten als einzelne HTML-Tabelle strukturiert. Um alle Daten aus der HTML-Tabelle abzurufen, müsste daher ein Makro entworfen werden, das die Kopfzeileninformationen der HTML-Tabelle und die entsprechenden mit der Tabelle verknüpften Daten abruft. Führen Sie die folgenden Aufgaben wie angezeigt aus: –

Schritt 1) Formulieren Sie eine For-Schleife, die die HTML-Headerinformationen als Sammlung durchläuft. Der Selenium-Treiber muss die Headerinformationen der HTML-Tabelle finden. Dazu verwenden wir die Methoden FindElementByClass() und FindElementByTag(), um die Aufgabe wie dargestellt auszuführen

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

Sub test2()
Dim driver As New WebDriver
Dim rowc, cc, columnC As Integer
rowc = 2
Application.ScreenUpdating = False
driver.Start "chrome"
driver.Get "http://demo.guru99.com/test/web-table-element.php"
For Each th In driver.FindElementByClass("dataTable").FindElementByTag("thead").FindElementsByTag("tr")
cc = 1
For Each t In th.FindElementsByTag("th")
Sheet2.Cells(1, cc).Value = t.Text
cc = cc + 1
Next t
Next th

Schritt 2) Als nächstes würde der Selenium-Treiber die Tabellendaten mit dem gleichen Ansatz wie oben beschrieben lokalisieren. Sie müssen den folgenden Code schreiben: –

Sub test2()
Dim driver As New WebDriver
Dim rowc, cc, columnC As Integer
rowc = 2
Application.ScreenUpdating = False
driver.Start "chrome"
driver.Get"http://demo.guru99.com/test/web-table-element.php"
For Each th In driver.FindElementByClass("dataTable").FindElementByTag("thead").FindElementsByTag("tr")
cc = 1
For Each t In th.FindElementsByTag("th")
Sheet2.Cells(1, cc).Value = t.Text
cc = cc + 1
Next t
Next th
For Each tr In driver.FindElementByClass("dataTable").FindElementByTag("tbody").FindElementsByTag("tr")
columnC = 1
For Each td In tr.FindElementsByTag("td")
Sheet2.Cells(rowc, columnC).Value = td.Text
columnC = columnC + 1
Next td
rowc = rowc + 1
Next tr
Application.Wait Now + TimeValue("00:00:20")
End Sub

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

Excel kann über das Range-Attribut des Excel-Blatts oder über das Cells-Attribut des Excel-Blatts initialisiert werden. Um die Komplexität des VBA-Skripts zu reduzieren, werden die Sammlungsdaten mit dem Excel-Cells-Attribut des in der Arbeitsmappe vorhandenen Blatts 2 initialisiert. Darüber hinaus hilft das Textattribut dabei, die Textinformationen unter dem HTML-Tag zu platzieren.

Sub test2()
Dim driver As New WebDriver
Dim rowc, cc, columnC As Integer
rowc = 2
Application.ScreenUpdating = False
driver.Start "chrome"
driver.Get"http://demo.guru99.com/test/web-table-element.php"
For Each th In driver.FindElementByClass("dataTable").FindElementByTag("thead").FindElementsByTag("tr")
cc = 1
For Each t In th.FindElementsByTag("th")
Sheet2.Cells(1, cc).Value = t.Text
cc = cc + 1
Next t
Next th
For Each tr In driver.FindElementByClass("dataTable").FindElementByTag("tbody").FindElementsByTag("tr")
columnC = 1
For Each td In tr.FindElementsByTag("td")
Sheet2.Cells(rowc, columnC).Value = td.Text
columnC = columnC + 1
Next td
rowc = rowc + 1
Next tr
Application.Wait Now + TimeValue("00:00:20")
End Sub

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

Scrapen Sie Informationen von der Website mit VBA

Schritt 3) Sobald das Makroskript fertig ist, übergeben Sie die Unterroutine, weisen Sie sie der Excel-Schaltfläche zu und verlassen Sie das VBA-Modul. Beschriften Sie die Schaltfläche mit „Aktualisieren“ oder einem beliebigen geeigneten Namen, der mit ihr initialisiert werden könnte. In diesem Beispiel wird die Schaltfläche als Aktualisierung initialisiert.

Scrapen Sie Informationen von der Website mit VBA

Schritt 4) Klicken Sie auf die Schaltfläche „Aktualisieren“, um die unten genannte Ausgabe zu erhalten

Scrapen Sie Informationen von der Website mit VBA

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

Scrapen Sie Informationen von der Website mit VBA

Zusammenfassung

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