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 "https://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 "https://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"https://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"https://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.












