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.
Stap 2) Selecteer de Visual Basic-optie onder het ontwikkelaarslint.
Stap 3) Plaats een nieuwe module.
Stap 4) Initialiseer een nieuwe subroutine
Sub test() End sub
De module zou als volgt resulteren: –
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.
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: –
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
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.
Stap 5) Druk op de vernieuwingsknop om de onderstaande uitvoer te krijgen
Stap 6) Vergelijk de resultaten in Excel met de resultaten van Internet Explorer
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.