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.
Schritt 2) Wählen Sie im Menüband „Entwickler“ die Option „Visual Basic“ aus.
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“ 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.
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: –
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: –
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
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: –
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.
Schritt 4) Klicken Sie auf die Schaltfläche „Aktualisieren“, um die unten genannte Ausgabe zu erhalten
Schritt 5) Vergleichen Sie die Ergebnisse in Excel mit den Ergebnissen von Google Chrome
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.