VBA Web Scrapping til Excel
โก Smart opsummering
Webskraberingping med VBA-eksempeltracts-data fra HTML-websider direkte til Excel ved hjรฆlp af Internet Explorer-automatisering og Microsoft HTML-objektbibliotek til at navigere pรฅ et websted, lรฆse en HTML-tabel og skrive de indsamlede vรฆrdier i regnearksceller.
Hvad er data scrapingping?
Data scrapingping er teknikken, der hjรฆlper ekstract รธnskede oplysninger fra en HTML-webside til en lokal fil pรฅ din maskine. Normalt er den lokale fil en Excel-fil, en Word-fil eller en hvilken som helst anden Microsoft Office-applikation. Det hjรฆlper med at kanalisere vigtige oplysninger fra websiden.
Data scrapingping bliver vรฆrdifuld i et forskningsbaseret projekt, der er afhรฆngig af internettet dagligt. For at illustrere, kan man forestille sig en daytrader, der kรธrer en Excel-makro for at trรฆkke markedsoplysninger fra en finanshjemmeside ind i et Excel-ark ved hjรฆlp af VBA.
Sรฅdan forbereder du Excel-makroen fรธr dataskrabningping (Internet Explorer)
Der er visse forudsรฆtninger, der skal udfรธres pรฅ Excel-makrofilen, fรธr dataskrabningen pรฅbegyndes.ping proces.
Disse forudsรฆtninger er som fรธlger:
Trin 1) ร bn en Excel-baseret makro, og รฅbn Udvikler-indstillingen i Excel.
Trin 2) Vรฆlg Visual Basic-indstillingen under Udvikler-bรฅndet.
Trin 3) Indsรฆt et nyt modul.
Trin 4) Initialiser en ny subrutine.
Sub test() End Sub
Modulet ville resultere som fรธlger:
Trin 5) Fรฅ adgang til referencefunktionen under fanen Vรฆrktรธjer, og se pรฅ Microsoft HTML-objektbibliotek og Microsoft Internetkontroller.
Fรธlgende filer skal refereres til modulet, da de hjรฆlper med at รฅbne Internet Explorer og muliggรธre makroscripting.
Nu er Excel-filen klar til at interagere med Internet Explorer. Nรฆste trin er at inkorporere makroskripter, der letter dataskrabning.ping i HTML.
Sรฅdan รฅbner du Internet Explorer ved hjรฆlp af Excel VBA
Trin 1) Initialiser variablen i subrutinen som vist nedenfor.
Sub test() Dim ie As New InternetExplorer Dim doc As New HTMLDocument
Trin 2) For at รฅbne Internet Explorer ved hjรฆlp af VBA, skriv ie.Visible = True og tryk pรฅ F5.
Sub test() Dim ie As New InternetExplorer Dim doc As New HTMLDocument ie.Visible = True
Modulet ville se sรฅledes ud:
Sรฅdan รฅbner du en hjemmeside i Internet Explorer ved hjรฆlp af VBA
Her er trinnene til at รฅbne et websted i Internet Explorer ved hjรฆlp af VBA.
Trin 1) Nรฅr du har adgang til Internet Explorer ved hjรฆlp af Excel VBA, er nรฆste trin at fรฅ adgang til et websted ved hjรฆlp af VBA. Dette gรธres lettere af Navigate-attributten, hvor URL sendes som dobbelte anfรธrselstegn. Fรธlg de viste trin.
Sub test() Dim ie As New InternetExplorer Dim doc As New HTMLDocument Dim ecoll As Object ie.Visible = True ie.Navigate "https://demo.guru99.com/test/web-table-element.php" Do DoEvents Loop Until ie.readyState = READYSTATE_COMPLETE
Trin 2) Tryk pรฅ F5 for at udfรธre makroen. Fรธlgende webside รฅbnes som vist.
Nu er Excel-makroen klar til at udfรธre scratchenping funktioner. Det nรฆste trin viser, hvordan informationen kan udvekslestrachentet fra Internet Explorer ved hjรฆlp af VBA.
Sรฅdan skraber du information fra et websted ved hjรฆlp af VBA
Antag, at daytraderen รธnsker at tilgรฅ dataene fra hjemmesiden dagligt. Hver gang daytraderen klikker pรฅ knappen, burde den automatisk hente markedsdataene ind i Excel.
Fra ovenstรฅende hjemmeside er det nรธdvendigt at inspicere et element og observere, hvordan dataene er struktureret.
Trin 1) Fรฅ adgang til kildekoden til HTML-koden nedenfor ved at trykke pรฅ Ctrl + Shift + Jeg.
<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>
Kildekoden ville vรฆre som fรธlger:
Sub test() Dim ie As New InternetExplorer Dim doc As New HTMLDocument Dim ecoll As Object ie.Visible = True ie.Navigate "https://demo.guru99.com/test/web-table-element.php" Do DoEvents Loop Until ie.readyState = READYSTATE_COMPLETE Set doc = ie.document
Som du kan se, er dataene struktureret som en enkelt HTML-tabel. For at hente alle dataene fra HTML-tabellen skal du derfor designe en makro, der indsamler dataene som en samling.
Samlingen indsรฆttes derefter i Excel. For at opnรฅ de รธnskede resultater skal du udfรธre nedenstรฅende trin.
Trin 2) Initialiser HTML-dokumentet i subrutinen.
Trin 3) Initialiser samlingselementet, der findes i HTML-dokumentet.
Sub test() Dim ie As New InternetExplorer Dim doc As New HTMLDocument Dim ecoll As Object ie.Visible = True ie.Navigate "https://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")
Trin 4) Initialiser Excel-arkcellerne ved hjรฆlp af en indlejret lรธkke som vist.
Sub test() Dim ie As New InternetExplorer Dim doc As New HTMLDocument Dim ecoll As Object ie.Visible = True ie.Navigate "https://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")
Excel kan initialiseres ved hjรฆlp af attributten Range eller attributten Cells i arket. For at reducere kompleksiteten af โโVBA-scriptet initialiseres samlingsdataene til attributten Cells i Ark 1 i projektmappen.
Nรฅr makroskriptet er klar, skal du tildele subrutinen til en Excel-knap og afslutte VBA-modulet. Navngiv knappen som Opdater eller et andet passende navn. I dette eksempel er knappen mรฆrket Opdater.
Trin 5) Tryk pรฅ Opdater-knappen for at fรฅ nedenstรฅende output.
Trin 6) Sammenlign resultaterne i Excel med resultaterne i Internet Explorer.












