Selenium VBA Excel-Tutorial: Chrome Web Scraping-Beispiel

Was ist Data Scraping mit Selen?

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

Wie bereite ich ein Excel-Makro vor, bevor ich Data Scraping mit Selenium durchführe?

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

Following 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“ zu und verweisen Sie auf die Selenium-Typbibliothek. Die folgendenwing Bibliotheken müssen auf das Modul verwiesen werden, da es beim Öffnen von Google Chrome hilft und die Entwicklung von Makroskripten erleichtert.

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 ö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 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.

Die folgendenwing wäre der Code.

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 Sie Google Chrome mit VBA

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

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

Folgen Sie den folgenden Schrittenwing Schritte wie angezeigt

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 folgendenwing Die Webseite würde wie angezeigt in Google Chrome 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 für die Ausführung der Scraping-Aufgaben. Der nächste Schritt würde zeigen, 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 + Umschalt + I drücken

<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 sieht, sind die Daten als einzelne HTML-Tabelle strukturiert. Um die gesamten Daten aus der HTML-Tabelle abzurufen, müsste daher ein Makro entworfen werden, das die Header-Informationen der HTML-Tabelle und die entsprechenden mit der Tabelle verknüpften Daten abruft. Führen Sie Folgendes auswing Aufgaben wie angezeigt: –

Schritt 1) Formulieren Sie eine for-Schleife, die die HTML-Header-Informationen als Sammlung durchläuft. Der Selenium-Treiber muss die Header-Informationen der HTML-Tabelle finden. Dazu verwenden wir die Methoden FindElementByClass() und FindElementByTag(), um die angezeigte Aufgabe 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 mithilfe des oben erwähnten ähnlichen Ansatzes lokalisieren. Du musst Folgendes schreibenwing Code: –

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: –

Das Excel kann über das Range-Attribut der Excel-Tabelle oder über das Cells-Attribut der Excel-Tabelle initialisiert werden. Um die Kom zu reduzierenplexAufgrund der Funktionalität des VBA-Skripts werden die Sammlungsdaten mit dem Excel-Zellenattribut des in der Arbeitsmappe vorhandenen Blatts 2 initialisiert. Darüber hinaus hilft das Textattribut beim Abrufen der Textinformationen, die unter dem HTML-Tag platziert werden.

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 mithilfe von 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 scraper kann ähnliche Aufgaben des Durchkratzens ausführen Firefox, Internet Explorer auch.