Webscrapen met VBA

Wat is gegevensschrapen?

Data scraping is de techniek die helpt bij het extraheren van gewenste informatie van een HTML-webpagina naar een lokaal bestand op uw lokale machine. Normaal gesproken kan een lokaal bestand overeenkomen met een Excel-bestand, een Word-bestand, of wat dan ook Microsoft kantoortoepassing. Het helpt bij het kanaliseren van kritische informatie van de webpagina.

Het verzamelen van gegevens wordt eenvoudig als u dagelijks aan een op onderzoek gebaseerd project werkt, en zo'n project is puur afhankelijk van internet en website. Laten we, om dit onderwerp verder te illustreren, het voorbeeld nemen van een daghandelaar die een Excel-macro uitvoert om marktinformatie van een financiële website naar een Excel-blad te halen met behulp van VBA.

Hoe Excel Macro voorbereiden voordat u Data Scraping uitvoert met Internet Explorer?

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 gegevens schrapt met Internet Explorer

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

Bereid Excel Macro voor voordat u gegevens schrapt met Internet Explorer

Stap 3) Plaats een nieuwe module.

Bereid Excel Macro voor voordat u gegevens schrapt met Internet Explorer

Stap 4) Initialiseer een nieuwe subroutine

Sub test()
End sub

De module zou als volgt resulteren: –

Bereid Excel Macro voor voordat u gegevens schrapt met Internet Explorer

Stap 5) Toegang tot de referentieoptie onder het tooltabblad en referentie Microsoft HTML-objectbibliotheek en Microsoft internetcontrole.

De volgende bestanden moeten worden verwezen naar de module omdat ze helpen bij het openen van Internet Explorer en het ontwikkelen van macroscripts vergemakkelijken.

Bereid Excel Macro voor voordat u gegevens schrapt met Internet Explorer

Nu is het Excel-bestand klaar voor interactie met de internetverkenner. De volgende stap zou zijn om macroscripts op te nemen die het schrapen van gegevens in HTML zouden vergemakkelijken.

Hoe Internet Explorer openen met Excel VBA?

Stap 1) Initialiseer de variabele in de subroutines zoals hieronder weergegeven

Sub test()
Dim ie As New InternetExplorer 
Dim doc As New HTMLDocument

Stap 2) Om Internet Explorer te openen met VBA, schrijft u dat wil zeggen zichtbaar=waar en druk op F5.

Sub test()
Dim ie As New InternetExplorer 
Dim doc As New HTMLDocument
Ie.visible=true

De module zou er als volgt uitzien: –

Open Internet Explorer met Excel VBA

Open Internet Explorer met Excel VBA

Hoe een website openen in Internet Explorer met VBA?

Hier volgen de stappen om een ​​website te openen in Internet Explorer met behulp van VBA

Stap 1) Zodra u toegang hebt tot de internet explorer met Excel VBA, is de volgende stap het benaderen van een website met VBA. Dit wordt mogelijk gemaakt door Navigate Attribute, waarbij de URL als dubbele aanhalingstekens in het attribuut moet worden doorgegeven. Volg de volgende stappen zoals weergegeven.

Sub test()
Dim, ie As New InternetExplorer
Dim doc As New HTMLDocument
Dim ecoll As Object
ie.Visible = True
ie.navigate"http://demo.guru99.com/test/web-table-element.php"
Do
DoEvents
Loop Until ie.readyState = READYSTATE_COMPLETE

Stap 2) - Druk op F5 om de macro uit te voeren. De volgende webpagina zou worden geopend zoals weergegeven

Open de website in Internet Explorer met VBA

Nu is de Excel-macro gereed met betrekking tot het uitvoeren van de schraapfuncties. De volgende stap zou laten zien hoe de informatie met behulp van VBA uit Internet Explorer kan worden gehaald.

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.

Stap 1) 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: -

Sub test()
Dim ie As New InternetExplorer
Dim doc As New HTMLDocument
Dim ecoll As Object
ie.Visible = True
ie.navigate "http://demo.guru99.com/test/web-table-element.php"
Do
DoEvents
Loop Until ie.readyState = READYSTATE_COMPLETE
Set doc = ie.document

Zoals u kunt zien, zijn de gegevens gestructureerd als een enkele HTML-tabel. Om volledige gegevens uit de HTML-tabel te halen, zou er daarom een ​​macro moeten worden ontworpen die de gegevens in de vorm van een verzameling verzamelt.

De verzameling wordt vervolgens in Excel geplakt. Om dit te bereiken, voert u de onderstaande stappen uit: –

Stap 2) Initialiseer het HTML-document in de subroutine

De VBA-module zou er als volgt uitzien: –

Stap 3) Initialiseer het collectie-element dat aanwezig is in het HTML-document

De VBA-module zou er als volgt uitzien: –

Sub test()
Dim ie As New InternetExplorer
Dim doc As New HTMLDocument
Dim ecoll As Object
ie.Visible = True
ie.navigate "http://demo.guru99.com/test/web-table-element.php"
Do
DoEvents
Loop Until ie.readyState = READYSTATE_COMPLETE
Set doc = ie.document
Set ecoll = doc.getElementsByTagName("table")

Stap 4) Initialiseer de Excel-bladcellen met behulp van een geneste lus, zoals weergegeven

De VBA-module zou er als volgt uitzien: –

Sub test()
Dim ie As New InternetExplorer
Dim doc As New HTMLDocument
Dim ecoll As Object

ie.Visible = True
ie.navigate "http://demo.guru99.com/test/web-table-element.php"
Do
DoEvents
Loop Until ie.readyState = READYSTATE_COMPLETE
Set doc = ie.document
Set ecoll = doc.getElementsByTagName("table")

De excel kan worden geïnitialiseerd met behulp van het bereikkenmerk van het excelblad of via het cellenkenmerk van het excelblad. Om de complexiteit van het VBA-script te verminderen, worden de verzamelde gegevens geïnitialiseerd naar het excelcellenkenmerk van blad 1 dat aanwezig is in de werkmap.

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

Informatie van de website schrapen met VBA

Stap 5) Druk op de vernieuwingsknop om de onderstaande uitvoer te krijgen

Informatie van de website schrapen met VBA

Stap 6) Vergelijk de resultaten in Excel met de resultaten van Internet Explorer

Informatie van de website schrapen met VBA

Samenvatting

  • Met het schrapen van gegevens kan de gebruiker alleen de informatie verwijderen die de gebruiker wil. Om de beste tools voor dit doel te vinden, bekijk deze lijst met webscraping-tools waarmee u efficiënt de gewenste informatie van verschillende websites kunt extraheren.
  • Scrapen kan worden uitgevoerd met behulp van Internet Explorer.
  • Het proces van schrapen is langzamer in het geval van Internet Explorer; het levert echter de gewenste resultaten op voor de gebruiker.
  • Het schrapen moet met absolute voorzichtigheid worden uitgevoerd, aangezien dit het systeem dat voor het schrapen wordt gebruikt, kan beschadigen en laten crashen.