Selenium VBA Excel-zelfstudie: voorbeeld van Chrome Web Scraping

Wat is data scraping met behulp van selenium?

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

Hoe u Excel Macro kunt voorbereiden voordat u Data Scraping uitvoert met behulp van 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

Hieronder volgen de resultaten in de module: –

Bereid Excel-macro voor voordat u gegevensschrapen uitvoert

Stap 5) Toegang tot de referentieoptie onder het tooltabblad en referentie Selenium typebibliotheek. De volgende bibliotheken moeten worden verwezen naar de module omdat het helpt bij het openen van Google Chrome en de ontwikkeling van macroscripting 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 te openen Google Chrome VBA gebruiken?

Hier zijn de stappen om te openen Google Chrome met behulp van 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.

Dit is de 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

De module zou als volgt resulteren: –

Open Google Chrome VBA gebruiken

Hoe open ik een website in Google Chrome met behulp van VBA?

Zodra u toegang hebt tot Google Chrome met VBA, is de volgende stap het integreren van de toegang tot een website met VBA. Dit wordt gefaciliteerd door de get-functie waarbij de URL als dubbele aanhalingstekens in het kenmerk moet worden doorgegeven.

Volg de volgende stappen zoals weergegeven

De module zou er als volgt uitzien: –

Website openen Google Chrome VBA gebruiken

Druk op F5 om de macro uit te voeren.

De volgende 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 "https://demo.guru99.com/test/web-table-element.php"
Application.Wait Now+Timevalue("00:00:20")
End sub

Website openen Google Chrome VBA gebruiken

Nu is de excel macro gereed met betrekking tot het uitvoeren van de scraping taken. 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. Ga naar de onderstaande broncode van HTML door op control + te drukken 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>

De broncode zou als volgt zijn: -

Zoals u kunt zien, zijn de gegevens gestructureerd als een enkele HTML-tabel. Om de volledige gegevens uit de HTML-tabel te halen, is het daarom nodig om een ​​macro te ontwerpen die de headerinformatie van de HTML-tabel en de bijbehorende gegevens die aan de tabel zijn gekoppeld, haalt. Voer de volgende taken uit zoals weergegeven: –

Stap 1) Formuleer een for-lus die door de HTML-headerinformatie als een verzameling loopt. De selenium-driver moet de headerinformatie van de HTML-tabel vinden. Om dit te doen, gebruiken we de FindElementByClass() en FindElementByTag()-methode 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 "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

Stap 2) Vervolgens zou de selenium driver de tabeldata lokaliseren met behulp van dezelfde aanpak, zoals hierboven vermeld. U moet de volgende code schrijven: –

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

De vba-module zou er als volgt uitzien: –

De excel kan worden geïnitialiseerd door middel van het kenmerk Range van het excel-blad of door het kenmerk cells van het excel-blad. Om de complexiteit van het VBA-script te verminderen, worden de verzamelde gegevens geïnitialiseerd naar het kenmerk excel cells van blad 2 dat aanwezig is in de werkmap. Verder helpt het kenmerk text 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"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

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

Samenvatting

  • Selenium kan worden geclassificeerd als de automatiseringstool die het scrapen van informatie van HTML-webpagina's vergemakkelijkt om webscraping 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 scraping via Selenium wordt uitgevoerd, biedt het ondersteuning voor meerdere browsers.
  • Met andere woorden, de schraper kan soortgelijke taken uitvoeren als het schrapen door Firefox, ook internet explorer.

Vat dit bericht samen met: