Web scraping med VBA
Hvad er dataskrabning?
Dataskrabning er den teknik, der hjælper med at udtrække ønskede oplysninger fra en HTML-webside til en lokal fil, der findes på din lokale maskine. Normalt kunne en lokal fil svare til en excel-fil, en word-fil eller for at sige en hvilken som helst Microsoft kontoransøgning. Det hjælper med at kanalisere kritisk information fra websiden.
Dataskrabet bliver simpelt, når man arbejder med et forskningsbaseret projekt til daglig, og sådan et projekt er udelukkende afhængigt af internet og hjemmeside. For yderligere at illustrere emnet, lad os tage eksemplet med en daytrader, der kører en excel-makro til at trække markedsinformation fra et finanswebsted til et excel-ark ved hjælp af VBA.
Hvordan forbereder man Excel-makro, før man udfører dataskrabning ved hjælp af Internet Explorer?
Der er visse forudsætninger, der skal udføres på excel-makrofilen, før du går ind i processen med dataskrabning i excel.
Disse forudsætninger er som følger: -
Trin 1) Åbn en Excel-baseret makro og få adgang til udviklermuligheden Excel.
Trin 2) Vælg Visual Basic-indstillingen under Udviklerbånd.
Trin 3) Indsæt et nyt modul.
Trin 4) Initialiser en ny underrutine
Sub test() End sub
Modulet vil resultere som følger: -
Trin 5) Få adgang til referencemuligheden under værktøjsfanen og reference Microsoft HTML-objektbibliotek og Microsoft internet kontrol.
Følgende filer skal refereres til modulet, da det hjælper med at åbne Internet Explorer og letter udviklingen af makroscripting.
Nu er Excel-filen klar til at interagere med Internet Explorer. Det næste trin ville være at inkorporere makroscripts, der ville lette dataskrabning i HTML.
Hvordan åbner man Internet Explorer ved hjælp af Excel VBA?
Trin 1) Initialiser variablen i underrutinerne 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 altså synlig=sand og tryk F5.
Sub test() Dim ie As New InternetExplorer Dim doc As New HTMLDocument Ie.visible=true
Modulet ser således ud: -
Hvordan åbner man hjemmeside i Internet Explorer ved hjælp af VBA?
Her er trin til at åbne webstedet i Internet exploer ved hjælp af VBA
Trin 1) Når du er i stand til at få adgang til Internet Explorer ved hjælp af Excel VBA, vil det næste trin inkorporere adgang til et websted ved hjælp af VBA. Dette lettes af Navigate Attribute, hvor URL'en skal passere som dobbelte anførselstegn i attributten. Følg de følgende trin som vist.
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
Trin 2) – Tryk på F5 for at udføre makroen. Den følgende webside vil blive åbnet som vist
Nu er excel-makroen klar til at udføre skrabefunktionerne. Det næste trin viser, hvordan oplysningerne kan udvindes fra Internet Explorer ved hjælp af VBA.
Hvordan skraber man information fra webstedet ved hjælp af VBA?
Antag, at daytraderen ønsker at få adgang til data fra hjemmesiden på daglig basis. Hver gang dagshandleren trykker på knappen, skal den automatisk trække markedsdataene ind i Excel.
Fra ovenstående hjemmeside vil det være nødvendigt at inspicere et element og observere, hvordan data er struktureret.
Trin 1) Få adgang til nedenstående HTML-kildekode ved at trykke på kontrol + 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>
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 "http://demo.guru99.com/test/web-table-element.php" Do DoEvents Loop Until ie.readyState = READYSTATE_COMPLETE Set doc = ie.document
Da det kan ses, at data er struktureret som en enkelt HTML-tabel. Derfor, for at trække hele data fra html-tabellen, ville det kræve design af makro, som indsamler dataene i form af en samling.
Samlingen ville derefter blive indsat i excel. For at opnå de ønskede resultater skal du udføre nedenstående trin: -
Trin 2) Initialiser HTML-dokumentet i underrutinen
VBA-modulet ville se ud som følger: -
Trin 3) Initialiser samlingselementet i HTML-dokumentet
VBA-modulet ville se ud som følger: -
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")
Trin 4) Initialiser Excel-arkcellerne ved hjælp af indlejret løkke som vist
VBA-modulet ville se ud som følger: -
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")
Excel kan initialiseres ved at bruge range-attributten for excel-arket eller gennem celle-attributten for excel-arket. For at reducere kompleksiteten af VBA-scriptet initialiseres indsamlingsdataene til excel-celle-attributten for ark 1, der findes i projektmappen.
Når makroscriptet er klar, skal du videregive og tildele subrutinen til excel-knappen og afslutte modulet i VBA. Mærk knappen som opdatering eller et hvilket som helst passende navn, der kunne initialiseres til den. I dette eksempel initialiseres knappen som en opdatering.
Trin 5) Tryk på opdateringsknappen for at få nedenstående output
Trin 6) Sammenlign resultaterne i Excel med resultaterne af Internet Explorer
Resumé
- Dataskrabet giver brugeren mulighed for kun at skrabe den information ud, som brugeren ønsker. For at finde de bedste værktøjer til dette formål, tag et kig på denne liste over web-skrabeværktøjer, der kan hjælpe dig med effektivt at udtrække den ønskede information fra forskellige websteder.
- Skrabning kan udføres ved hjælp af Internet Explorer.
- Processen med at skrabe er langsommere i tilfælde af Internet Explorer; det giver dog de ønskede resultater til brugeren.
- Skrabningen skal udføres med absolut forsigtighed og forsigtighed, da det kan skade og ødelægge det system, der bruges til at skrabe.