Nettskraping med VBA
Hva er dataskraping?
Dataskraping er teknikken som hjelper til med å trekke ut ønsket informasjon fra en HTML-webside til en lokal fil som finnes på din lokale maskin. Normalt kan en lokal fil tilsvare en excel-fil, en word-fil, eller for å si hvilken som helst Microsoft kontorsøknad. Det hjelper med å kanalisere viktig informasjon fra nettsiden.
Dataskrapingen blir enkel når man jobber med et forskningsbasert prosjekt til daglig, og et slikt prosjekt er rent avhengig av internett og nettside. For å illustrere emnet ytterligere, la oss ta eksemplet med en daytrader som kjører en excel-makro for å trekke markedsinformasjon fra et finansnettsted til et excel-ark ved hjelp av VBA.
Hvordan forberede Excel Macro før du utfører dataskraping ved hjelp av Internet Explorer?
Det er visse forutsetninger som må utføres på excel-makrofilen før du går inn i prosessen med dataskraping i excel.
Disse forutsetningene er som følger: -
Trinn 1) Åpne en Excel-basert makro og få tilgang til utvikleralternativet Excel.
Trinn 2) Velg Visual Basic-alternativet under utviklerbånd.
Trinn 3) Sett inn en ny modul.
Trinn 4) Initialiser en ny subrutine
Sub test() End sub
Modulen vil resultere som følger: -
Trinn 5) Få tilgang til referansealternativet under verktøyfanen og referanse Microsoft HTML-objektbibliotek og Microsoft internettkontroll.
Følgende filer skal refereres til modulen da den hjelper til med å åpne Internet Explorer og letter utviklingen av makroskripting.
Nå er Excel-filen klar til å samhandle med Internet Explorer. Det neste trinnet vil være å innlemme makroskript som vil lette dataskraping i HTML.
Hvordan åpne Internet Explorer ved hjelp av Excel VBA?
Trinn 1) Initialiser variabelen i subrutinene som vist nedenfor
Sub test() Dim ie As New InternetExplorer Dim doc As New HTMLDocument
Trinn 2) For å åpne Internet Explorer ved hjelp av VBA, skriv dvs. synlig=sant og trykk F5.
Sub test() Dim ie As New InternetExplorer Dim doc As New HTMLDocument Ie.visible=true
Modulen vil se slik ut: -
Hvordan åpne nettstedet i Internet Explorer ved hjelp av VBA?
Her er trinnene for å åpne nettstedet i Internet exploer ved hjelp av VBA
Trinn 1) Når du får tilgang til internett explorer ved hjelp av Excel VBA, vil neste trinn inkludere tilgang til et nettsted ved hjelp av VBA. Dette tilrettelagt av Navigate Attribute, der URL-en må passere som doble anførselstegn i attributtet. Følg følgende trinn 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
Trinn 2) – Trykk F5 for å utføre makroen. Følgende nettside vil bli åpnet som vist
Nå er excel-makroen klar med hensyn til å utføre skrapefunksjonene. Det neste trinnet viser hvordan informasjonen kan trekkes ut fra Internet Explorer ved hjelp av VBA.
Hvordan skrape informasjon fra nettstedet ved å bruke VBA?
Anta at daytraderen ønsker å få tilgang til dataene fra nettstedet på daglig basis. Hver gang dagshandleren trykker på knappen, skal den automatisk trekke markedsdataene inn i Excel.
Fra nettstedet ovenfor vil det være nødvendig å inspisere et element og observere hvordan dataene er strukturert.
Trinn 1) Få tilgang til HTML-kildekoden nedenfor ved å trykke på kontroll + 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 vil 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 det kan sees at dataene er strukturert som en enkelt HTML-tabell. Derfor, for å trekke hele data fra html-tabellen, ville det kreve utforming av makro som samler dataene i form av en samling.
Samlingen vil deretter limes inn i Excel. For å oppnå, utfør de ønskede resultatene trinnene nedenfor: -
Trinn 2) Initialiser HTML-dokumentet i subrutinen
VBA-modulen vil se slik ut: -
Trinn 3) Initialiser samlingselementet som finnes i HTML-dokumentet
VBA-modulen vil se slik ut: -
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")
Trinn 4) Initialiser excel-arkcellene ved hjelp av nestet løkke som vist
VBA-modulen vil se slik ut: -
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 å bruke range-attributtet til excel-arket eller gjennom cell-attributtet til excel-arket. For å redusere kompleksiteten til VBA-skriptet initialiseres innsamlingsdataene til excel-celleattributtet til ark 1 som finnes i arbeidsboken.
Når makroskriptet er klart, send og tilordne subrutinen til excel-knappen og gå ut av modulen til VBA. Merk knappen som oppdatering eller et hvilket som helst passende navn som kan initialiseres til den. For dette eksemplet initialiseres knappen som en oppdatering.
Trinn 5) Trykk på oppdateringsknappen for å få utdataene nedenfor
Trinn 6) Sammenlign resultatene i Excel med resultatene til Internet Explorer
Sammendrag
- Dataskrapingen lar brukeren skrape ut kun den informasjonen brukeren ønsker. For å finne de beste verktøyene for dette formålet, ta en titt på denne listen over verktøy for nettskraping som kan hjelpe deg effektivt å trekke ut ønsket informasjon fra forskjellige nettsteder.
- Skraping kan utføres ved hjelp av Internet Explorer.
- Prosessen med å skrape er langsommere når det gjelder Internet Explorer; den gir imidlertid de ønskede resultatene til brukeren.
- Skrapingen bør utføres med absolutt forsiktighet og forsiktighet, da det kan skade og krasje systemet som brukes til skraping.