Selenium VBA Excel-zelfstudie: voorbeeld van Chrome Web Scraping

Wat is dataschrapen met selenium?

Selenium kan worden geclassificeerd als de automatiseringstool die het schrapen van informatie van de HTML-webpagina's vergemakkelijkt om webschrapen uit te voeren met behulp van Google Chrome.

Hoe Excel Macro voorbereiden voordat u Data Scraping uitvoert met Selenium?

Er zijn bepaalde vereisten die moeten worden uitgevoerd op het Excel-macrobestand voordat u begint met het schrapen van gegevens in Excel.

Deze vereisten zijn als volgt: –

Stap 1) Open een op Excel gebaseerde macro en open de ontwikkelaarsoptie van Excel.

Bereid Excel-macro voor voordat u gegevensschrapen uitvoert

Stap 2) Selecteer de Visual Basic-optie onder het ontwikkelaarslint.

Bereid Excel-macro voor voordat u gegevensschrapen uitvoert

Stap 3) Plaats een nieuwe module.

Bereid Excel-macro voor voordat u gegevensschrapen uitvoert

Stap 4) Initialiseer een nieuwe subroutine en noem deze test2.

Sub test2()
End sub

Following zouden de resultaten in de module zijn: –

Bereid Excel-macro voor voordat u gegevensschrapen uitvoert

Stap 5) Ga naar de referentieoptie onder het tabblad Gereedschap en verwijs naar de Selenium-typebibliotheek. De volgendewing Er moet naar de module worden verwezen naar bibliotheken, omdat dit helpt bij het openen van Google Chrome en de ontwikkeling van macroscripts vergemakkelijkt.

Bereid Excel-macro voor voordat u gegevensschrapen uitvoert

Nu is het Excel-bestand klaar voor interactie met de internetverkenner. De volgende stappen zouden het opnemen van een macroscript zijn dat het schrapen van gegevens in HTML zou vergemakkelijken.

Hoe Google Chrome openen met VBA?

Hier vindt u de stappen om Google Chrome te openen met VBA

Stap 1) Declareer en initialiseer de variabelen in de subroutine zoals hieronder weergegeven

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

Stap 2) Om Google Chrome te openen met selenium en VBA, schrijft u driver.start “chrome” en drukt u op F5.

De following zou de code zijn.

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

De module zou als volgt resulteren: –

Open Google Chrome met VBA

Hoe een website in Google Chrome openen met VBA?

Zodra u met VBA toegang heeft tot Google Chrome, is de volgende stap het opnemen van toegang tot een website met behulp van VBA. Dit wordt mogelijk gemaakt door de get-functie waarin de URL moet worden doorgegeven als double aanhalingstekens in het attribuut.

Volg het vervolgwing stappen zoals weergegeven

De module zou er als volgt uitzien: –

Website openen in Google Chrome met VBA

Druk op F5 om de macro uit te voeren.

De following webpagina zou worden geopend in Google Chrome zoals weergegeven

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

Website openen in Google Chrome met VBA

Nu is de Excel-macro gereed voor het uitvoeren van de schraaptaken. De volgende stap zou laten zien hoe de informatie kan worden geëxtraheerd door selenium en VBA toe te passen.

Hoe informatie van een website schrapen met VBA?

Stel dat de daghandelaar dagelijks toegang wil tot de gegevens van de website. Elke keer dat de daghandelaar op de knop klikt, moet deze de marktgegevens automatisch naar Excel halen.

Vanaf de bovenstaande website zou het nodig zijn om een ​​element te inspecteren en te observeren hoe de gegevens zijn gestructureerd. Krijg toegang tot de onderstaande HTML-broncode door op Control + Shift + I te drukken

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

De broncode zou als volgt zijn: -

Zoals u kunt zien, zijn de gegevens gestructureerd als een enkele HTML-tabel. Om volledige gegevens uit de HTML-tabel te halen, zou het daarom het ontwerpen van een macro vereisen die de headerinformatie van de HTML-tabel en de corresponderende gegevens die bij de tabel horen, ophaalt. Voer het volgende uitwing taken zoals weergegeven: –

Stap 1) Formuleer een for-lus die als een verzameling door de HTML-headerinformatie loopt. Het seleniumstuurprogramma moet de headerinformatie van de HTML-tabel vinden. Om dit te doen, gebruiken we de methoden FindElementByClass() en FindElementByTag() om de taak uit te voeren zoals weergegeven

De VBA-module zou er als volgt uitzien: –

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

Stap 2) Vervolgens zou het seleniumstuurprogramma de tabelgegevens lokaliseren met behulp van een vergelijkbare aanpak, zoals hierboven vermeld. Je moet het volgende schrijvenwing 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

De vba-module zou er als volgt uitzien: –

Excel kan worden geïnitialiseerd via het Range-attribuut van het Excel-blad of via het cellen-attribuut van het Excel-blad. Om de complexDoor het VBA-script worden de verzamelingsgegevens geïnitialiseerd naar het Excel-celattribuut van blad 2 dat in de werkmap aanwezig is. Verder helpt het tekstattribuut bij het plaatsen van de tekstinformatie onder de HTML-tag.

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

De vba-module zou er als volgt uitzien: –

Informatie van website schrapen met VBA

Stap 3) Zodra het macroscript klaar is, geeft u de subroutine door en wijst u deze toe aan de Excel-knop en sluit u de module van VBA af. Label de knop als vernieuwen of een andere geschikte naam die eraan kan worden geïnitialiseerd. Voor dit voorbeeld wordt de knop geïnitialiseerd als vernieuwen.

Informatie van website schrapen met VBA

Stap 4) Druk op de vernieuwingsknop om de hieronder genoemde uitvoer te krijgen

Informatie van website schrapen met VBA

Stap 5) Vergelijk de resultaten in Excel met de resultaten van Google Chrome

Informatie van website schrapen met VBA

Samengevat

  • Selenium kan worden geclassificeerd als de automatiseringstool die het schrapen van informatie van de HTML-webpagina's vergemakkelijkt om webschrapen uit te voeren met behulp van Google Chrome.
  • Het schrapen op internet moet zorgvuldig worden uitgevoerd.
  • Normaal gesproken is het in strijd met de voorwaarden van de website om informatie te verwijderen.
  • Wanneer het schrapen via selenium wordt gedaan, biedt het ondersteuning voor meerdere browsers.
  • Met andere woorden, de scraper kan soortgelijke taken uitvoeren als doorschrapen Firefox, ook internet explorer.