Excel VBA en Selenium gebruiken

Wat is gegevensschrapen 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.

In deze tutorial leer je:

  • Wat is gegevensschrapen met selenium?
  • Hoe Excel Macro voorbereiden voordat gegevens worden geschraapt met Selenium?
  • Hoe Google Chrome openen met VBA?
  • Hoe een website openen in Google Chrome met VBA?
  • Hoe informatie van de website te schrapen met VBA?

Hoe Excel Macro voorbereiden voordat gegevens worden geschraapt met Selenium?

Er zijn bepaalde voorwaarden die aan het Excel-macrobestand moeten worden uitgevoerd voordat u in Excel begint met het opschrapen van gegevens.

Deze voorwaarden zijn als volgt: -

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

Stap 2) Selecteer de Visual Basic-optie onder het lint van de ontwikkelaar.

Stap 3) Plaats een nieuwe module.

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

Sub test2 ()Einde sub

Hieronder volgen de resultaten in de module: -

Stap 5) Open de referentieoptie onder de tooltab en verwijs naar de bibliotheek van het type Selenium. De volgende bibliotheken moeten naar de module worden verwezen, omdat deze helpt bij het openen van Google Chrome en de ontwikkeling van macroscripting vergemakkelijkt.

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

Hoe Google Chrome openen met VBA?

Hier zijn 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 als nieuwe webdriverDim rowc, cc, columnC als geheel getal

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

Het volgende zou de code zijn.

Sub test2 ()Dim driver als nieuwe webdriverDim rowc, cc, columnC als geheel getalDriver.start "Chrome"Application.Wait Now + Timevalue ("00:00:20")Einde sub

De module zou als volgt resulteren: -

Hoe een website openen in Google Chrome met VBA?

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

Volg de volgende stappen zoals weergegeven

De module zou er als volgt uitzien: -

Druk op F5 om de macro uit te voeren.

De volgende webpagina wordt geopend in Google Chrome zoals weergegeven

Sub test2 ()Dim driver als nieuwe webdriverDim rowc, cc, columnC als geheel getalDriver.start "Chrome"Driver.get "http://demo.guru99.com/test/web-table-element.php"Application.Wait Now + Timevalue ("00:00:20")Einde sub

Nu is de Excel-macro klaar met betrekking tot 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 de website te schrapen met VBA?

Stel dat de daghandelaar dagelijks toegang wil hebben tot de gegevens van de website. Elke keer dat de daghandelaar op de klik op de knop drukt, zou hij de marktgegevens automatisch naar Excel moeten halen.

Vanaf de bovenstaande website zou het nodig zijn om een ​​element te inspecteren en te observeren hoe de gegevens zijn gestructureerd. Open de onderstaande broncode van HTML door op control + Shift + I te drukken

De broncode zou als volgt zijn: -

Zoals te zien is, 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 behorende bij de tabel ophaalt. Voer de volgende taken uit zoals weergegeven: -

Stap 1) Formuleer een for-lus die als een verzameling door de HTML-headerinformatie loopt. De selenium-driver moet de header-informatie 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 als nieuwe webdriverDim rowc, cc, columnC Als geheel getalrowc = 2Application.ScreenUpdating = Falsedriver.Start "chrome"driver.Get "http://demo.guru99.com/test/web-table-element.php"Voor elke e In driver.FindElementByClass ("dataTable"). FindElementByTag ("thead"). FindElementsByTag ("tr")cc = 1Voor elke t In th.FindElementsByTag ("th")Sheet2.Cells (1, cc) .Value = t.Textcc = cc + 1VolgendeVolgende th

Stap 2) Vervolgens zou de selenium-driver de tabelgegevens lokaliseren met behulp van de vergelijkbare benadering, zoals hierboven vermeld. U moet de volgende code schrijven: -

Sub test2 ()Dim driver als nieuwe webdriverDim rowc, cc, columnC Als geheel getalrowc = 2Application.ScreenUpdating = Falsedriver.Start "chrome"driver.Get "http://demo.guru99.com/test/web-table-element.php"Voor elke e In driver.FindElementByClass ("dataTable"). FindElementByTag ("thead"). FindElementsByTag ("tr")cc = 1Voor elke t In th.FindElementsByTag ("th")Sheet2.Cells (1, cc) .Value = t.Textcc = cc + 1VolgendeVolgende thVoor elke tr In driver.FindElementByClass ("dataTable"). FindElementByTag ("tbody"). FindElementsByTag ("tr")columnC = 1Voor elke td In tr.FindElementsByTag ("td")Sheet2.Cells (rowc, columnC) .Value = td.TextcolumnC = columnC + 1Volgende tdrowc = rowc + 1Volgende trApplication.Wait Now + TimeValue ("00:00:20")Einde Sub

De vba-module zou er als volgt uitzien: -

Het Excel-bestand kan worden geïnitialiseerd door middel van het Range-attribuut van het Excel-blad of via het cel-attribuut van het Excel-blad. Om de complexiteit van het VBA-script te verminderen, worden de verzamelingsgegevens geïnitialiseerd naar het Excel-celattribuut van het blad 2 dat aanwezig is in de werkmap. Verder helpt het tekstattribuut bij het plaatsen van de tekstinformatie onder de HTML-tag.

Sub test2 ()Dim driver als nieuwe webdriverDim rowc, cc, columnC Als geheel getalrowc = 2Application.ScreenUpdating = Falsedriver.Start "chrome"driver.Get "http://demo.guru99.com/test/web-table-element.php"Voor elke e In driver.FindElementByClass ("dataTable"). FindElementByTag ("thead"). FindElementsByTag ("tr")cc = 1Voor elke t In th.FindElementsByTag ("th")Sheet2.Cells (1, cc) .Value = t.Textcc = cc + 1VolgendeVolgende thVoor elke tr In driver.FindElementByClass ("dataTable"). FindElementByTag ("tbody"). FindElementsByTag ("tr")columnC = 1Voor elke td In tr.FindElementsByTag ("td")Sheet2.Cells (rowc, columnC) .Value = td.TextcolumnC = columnC + 1Volgende tdrowc = rowc + 1Volgende trApplication.Wait Now + TimeValue ("00:00:20")Einde Sub

De vba-module zou er als volgt uitzien: -

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

Stap 4) Druk op de knop Vernieuwen om de onderstaande uitvoer te krijgen

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

Overzicht:

  • 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.
  • Het is normaal gesproken in strijd met de voorwaarden van de website om informatie weg te schrapen.
  • Wanneer schrapen via selenium wordt gedaan, biedt het meerdere browserondersteuning.
  • Met andere woorden, de scraper kan vergelijkbare taken uitvoeren als scrap via Firefox, internet explorer.

Interessante artikelen...

Bedrijf Groep Pre Close (Rs) Huidige prijs (Rs) % verandering