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.

Förbered Excel-makro innan du utför dataskrapning med Internet Explorer

Steg 2) Välj Visual Basic-alternativet under Utvecklarband.

Förbered Excel-makro innan du utför dataskrapning med Internet Explorer

Steg 3) Sätt in en ny modul.

Förbered Excel-makro innan du utför dataskrapning med Internet Explorer

Steg 4) Initiera en ny subrutin

Sub test()
End sub

Modulen skulle resultera enligt följande: -

Förbered Excel-makro innan du utför dataskrapning med Internet Explorer

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.

Förbered Excel-makro innan du utför dataskrapning med Internet Explorer

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

Öppna Internet Explorer med Excel VBA

Öppna Internet Explorer med Excel VBA

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

Öppna webbplatsen i Internet Explorer med VBA

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.

Skrapa information från webbplatsen med VBA

Steg 5) Tryck på uppdateringsknappen för att få utdata nedan

Skrapa information från webbplatsen med VBA

Steg 6) Jämför resultaten i Excel med resultaten från Internet Explorer

Skrapa information från webbplatsen med VBA

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.