Selenium VBA Excel-handleiding (Chrome WebScrap)ping)
⚡ Slimme samenvatting
Selenium VBA in Excel automatiseert Google Chrome om gegevens van HTML-webpagina's te schrapen met behulp van de Selenium Gebruik de typebibliotheek en WebDriver-methoden om een site te openen, tabelelementen te lokaliseren op basis van klasse en tag, en de resultaten in werkbladcellen te schrijven.

Wat is DataScrap?ping gebruik Selenium?
Selenium is een automatiseringstool die scraw vergemakkelijktping informatie van HTML-webpagina's, het uitvoeren van webscrapingping with Google ChromeIn Excel, de Selenium Met behulp van een typebibliotheek kan VBA een echte browser aansturen in plaats van de verouderde Internet Explorer-engine.
Hoe bereid je een Excel-macro voor voordat je gegevens opslaat?ping gebruik Selenium
Voordat de gegevensverwerking kan worden gestart, moet er aan het Excel-macrobestand aan bepaalde voorwaarden worden voldaan.ping proces.
De volgende voorwaarden zijn van toepassing:
Stap 1) Open een macro in Excel en ga naar de ontwikkelaarsopties van Excel.
Stap 2) Selecteer de optie Visual Basic in het tabblad Ontwikkelaar.
Stap 3) Plaats een nieuwe module.
Stap 4) Initialiseer een nieuwe subroutine en geef deze de naam test2.
Sub test2() End Sub
Het resultaat in de module zou als volgt zijn:
Stap 5) Ga naar de optie 'Referentie' onder het tabblad 'Tools' en raadpleeg de referentie. Selenium Typebibliotheek. Deze bibliotheek helpt bij het openen van gegevenstypen. Google Chrome en maakt macroscripting mogelijk.
Het Excel-bestand is nu klaar voor gebruik in de browser. De volgende stap is het toevoegen van een macroscript dat het scannen van gegevens vergemakkelijkt.ping in HTML.
Hoe te openen Google Chrome VBA gebruiken
Hieronder volgen 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) Openen Google Chrome gebruik Selenium En schrijf in VBA het stuurprogramma. Start Chrome en druk 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 het volgende resultaat opleveren:
Hoe open je een website in Google Chrome VBA gebruiken
Zodra je toegang hebt Google Chrome De volgende stap is het benaderen van een website met behulp van VBA. Dit wordt mogelijk gemaakt door de Get-functie, waarbij de URL wordt tussen dubbele aanhalingstekens doorgegeven.
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 getoond.
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
De Excel-macro is nu klaar om de scan uit te voeren.ping taken. De volgende stap laat zien hoe de informatie kan worden geëxtracted door toepassing Selenium en VBA.
Hoe je met VBA informatie van een website kunt schrapen
Stel dat de daytrader dagelijks toegang wil tot de gegevens van de website. Telkens wanneer de daytrader op de knop klikt, moeten de marktgegevens automatisch in Excel worden geladen.
Op de bovenstaande website is het nodig om een element te inspecteren en te bekijken hoe de gegevens zijn gestructureerd. Open de broncode van de onderstaande HTML door op Control + te drukken. Shift + ik
<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>
Zoals u ziet, zijn de gegevens gestructureerd als één enkele HTML-tabel. Om alle gegevens uit de HTML-tabel op te halen, moet u daarom een macro ontwerpen die de koptekstinformatie en de bijbehorende gegevens van de tabel ophaalt. Voer de onderstaande taken uit.
Stap 1) Formuleer een `for`-lus die de HTML-headerinformatie als een verzameling doorloopt. Selenium De driver lokaliseert de headerinformatie met behulp van de methoden FindElementByClass() en FindElementByTag(), zoals weergegeven.
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 wordt de Selenium De driver vindt de tabelgegevens op een vergelijkbare manier. Schrijf de volgende code:
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
Excel kan worden geïnitialiseerd met behulp van het bereikkenmerk of het celkenmerk van het werkblad. Om de complexiteit van het VBA-script te verminderen, worden de gegevensverzamelingen geïnitialiseerd met het celkenmerk van werkblad 2 in de werkmap. Het tekstkenmerk zorgt ervoor dat de tekst onder een HTML-tag wordt geplaatst.
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:
Stap 3) Zodra het macroscript gereed is, wijst u de subroutine toe aan een Excel-knop en sluit u de VBA-module af. Geef de knop de naam 'Vernieuwen' of een andere geschikte naam. In dit voorbeeld heet de knop 'Vernieuwen'.
Stap 4) Druk op de knop Vernieuwen om de onderstaande uitvoer te krijgen.
Stap 5) Vergelijk de resultaten in Excel met de resultaten in Google Chrome.












