Webbskrapning med VBA
Vad är dataskrapning?
Dataskrapning är tekniken som hjälper till att extrahera önskad information från en HTML-webbsida till en lokal fil som finns på din lokala dator. Normalt kan en lokal fil motsvara en excel-fil, word-fil eller för att säga vilken som helst Microsoft kontorsansökan. Det hjälper till att kanalisera viktig information från webbsidan.
Dataskrapningen blir enkel när man dagligen arbetar med ett forskningsbaserat projekt och ett sådant projekt är rent beroende av internet och hemsida. För att ytterligare illustrera ämnet, låt oss ta exemplet med en daytrader som kör ett excel-makro för att dra marknadsinformation från en finanswebbplats till ett excelark med VBA.
Hur förbereder man Excel-makro innan man utför dataskrapning med Internet Explorer?
Det finns vissa förutsättningar som måste utföras på Excel-makrofilen innan du går in i processen med dataskrapning i Excel.
Dessa förutsättningar är följande: -
Steg 1) Öppna ett Excel-baserat makro och få tillgång till utvecklaralternativet excel.
Steg 2) Välj Visual Basic-alternativet under Utvecklarband.
Steg 3) Sätt in en ny modul.
Steg 4) Initiera en ny subrutin
Sub test() End sub
Modulen skulle resultera enligt följande: -
Steg 5) Gå till referensalternativet under verktygsfliken och referens Microsoft HTML-objektbibliotek och Microsoft internetkontroll.
Följande filer ska refereras till modulen eftersom den hjälper till att öppna Internet Explorer och underlättar utvecklingen av makroskript.
Nu är Excel-filen redo att interagera med Internet Explorer. Nästa steg skulle vara att införliva makroskript som skulle underlätta dataskrapning i HTML.
Hur öppnar jag Internet Explorer med Excel VBA?
Steg 1) Initiera variabeln i subrutinerna som visas nedan
Sub test() Dim ie As New InternetExplorer Dim doc As New HTMLDocument
Steg 2) För att öppna Internet Explorer med VBA, skriv dvs synligt=sant och tryck F5.
Sub test() Dim ie As New InternetExplorer Dim doc As New HTMLDocument Ie.visible=true
Modulen skulle se ut som följer: -
Hur öppnar man webbplatsen i Internet Explorer med VBA?
Här är steg för att öppna webbplatsen i Internet exploer med VBA
Steg 1) När du väl kan komma åt Internet Explorer med Excel VBA, skulle nästa steg inkludera åtkomst till en webbplats med VBA. Detta underlättas av Navigate Attribute, där URL:en måste passera som dubbla citattecken i attributet. Följ följande steg som visas.
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
Steg 2) – Tryck på F5 för att köra makrot. Följande webbsida kommer att öppnas som visas
Nu är excelmakrot klart för att utföra skrapningsfunktionerna. Nästa steg skulle visa hur informationen kan extraheras från Internet Explorer med VBA.
Hur skrapar man information från webbplatsen med VBA?
Anta att daytradern vill komma åt data från webbplatsen dagligen. Varje gång dagshandlaren trycker på knappen, bör den automatiskt dra marknadsdata till Excel.
Från ovanstående webbplats skulle det vara nödvändigt att inspektera ett element och observera hur data är uppbyggd.
Steg 1) Gå till nedanstående källkod för HTML genom att trycka 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>
Källkoden skulle vara följande: -
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
Som det kan ses att data är strukturerad som en enda HTML-tabell. Därför, för att hämta hela data från html-tabellen, skulle det krävas design av makro som samlar in data i form av en samling.
Samlingen skulle sedan klistras in i excel. För att uppnå de önskade resultaten utför de nedan nämnda stegen: -
Steg 2) Initiera HTML-dokumentet i subrutinen
VBA-modulen skulle se ut som följer: –
Steg 3) Initiera samlingselementet som finns i HTML-dokumentet
VBA-modulen skulle se ut som följer: –
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")
Steg 4) Initiera excel-arkcellerna med hjälp av kapslad loop som visas
VBA-modulen skulle se ut som följer: –
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 initieras med hjälp av range-attributet i excel-arket eller genom cell-attributet i excel-arket. För att minska komplexiteten i VBA-skriptet, initieras insamlingsdata till excel-cellers attribut för blad 1 som finns i arbetsboken.
När makroskriptet är klart, skicka och tilldela subrutinen till excel-knappen och avsluta modulen i VBA. Märk knappen som uppdatering eller något lämpligt namn som kan initieras till den. I det här exemplet initieras knappen som en uppdatering.
Steg 5) Tryck på uppdateringsknappen för att få utdata nedan
Steg 6) Jämför resultaten i Excel med resultaten från Internet Explorer
Sammanfattning
- Dataskrapningen tillåter användaren att bara skrapa ut den information som användaren vill ha. För att hitta de bästa verktygen för detta ändamål, ta en titt på den här listan över webbskrapningsverktyg som kan hjälpa dig att effektivt extrahera den önskade informationen från olika webbplatser.
- Skrapning kan utföras med Internet Explorer.
- Processen att skrapa är långsammare i fallet med Internet Explorer; det ger dock de önskade resultaten till användaren.
- Skrapningen bör utföras med absolut försiktighet och försiktighet eftersom det kan skada och krascha systemet som används för skrapning.