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.

Forbered Excel-makro før du udfører dataskrabning ved hjælp af Internet Explorer

Trin 2) Vælg Visual Basic-indstillingen under Udviklerbånd.

Forbered Excel-makro før du udfører dataskrabning ved hjælp af Internet Explorer

Trin 3) Indsæt et nyt modul.

Forbered Excel-makro før du udfører dataskrabning ved hjælp af Internet Explorer

Trin 4) Initialiser en ny underrutine

Sub test()
End sub

Modulet vil resultere som følger: -

Forbered Excel-makro før du udfører dataskrabning ved hjælp af Internet Explorer

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.

Forbered Excel-makro før du udfører dataskrabning ved hjælp af Internet Explorer

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: -

Åbn Internet Explorer ved hjælp af Excel VBA

Åbn Internet Explorer ved hjælp af Excel VBA

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

Åbn webstedet i Internet Explorer ved hjælp af VBA

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.

Skrab oplysninger fra websted ved hjælp af VBA

Trin 5) Tryk på opdateringsknappen for at få nedenstående output

Skrab oplysninger fra websted ved hjælp af VBA

Trin 6) Sammenlign resultaterne i Excel med resultaterne af Internet Explorer

Skrab oplysninger fra websted ved hjælp af VBA

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.