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: โ€“

ร–ffne 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 "https://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 "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: โ€“

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.

Fassen Sie diesen Beitrag mit folgenden Worten zusammen: