VBA Web Skrabning | Sådan skrottes websteder ved hjælp af Excel VBA?

Excel VBA Web Skrabning

VBA Web Scraping er en teknik til at få adgang til websider og downloade data fra dette websted til vores computerfiler. Webskrabning er mulig ved at få adgang til eksterne applikationer som Internet Explorer. Vi kan gøre det på to måder, dvs. tidlig binding og sen binding.

Webskrabning med VBA betyder, at når vi bruger VBA til at hente data fra de andre kilder på nettet, kan dette kræve logins til datakilderne, men først, for at gøre det, er vi nødt til at aktivere referencer fra værktøjssektionen i VBA-editoren til Microsoft HTML-biblioteket for at få adgang til internettet fra VBA.

Ikke mange af os ved, at vi fra excel kan få adgang til websiderne og få data fra disse websider. Ja, du hørte det rigtigt. vi kan skrabe gennem websider, få adgang til browsingapplikationer og mange flere. I denne artikel viser vi dig, hvordan du skriver en excel VBA-kode til webskrabning i detaljer.

Normalt åbner vi websiderne, kopierer dataene og indsætter dem i vores filer som excel, word eller andre filer. Men i denne artikel vil vi vise dig, hvordan du får adgang til websteder fra Excel og gør mange andre slags ting.

Sådan skrottes webstedsdata ved hjælp af VBA?

Du kan downloade denne VBA Web Scraping Excel-skabelon her - VBA Web Scraping Excel Template

Når vi ønsker at få adgang til andre applikationer fra excel, kan vi gøre dette på måder, dvs. "Early Binding" & "Late Binding". På begynderstadiet er det altid sikkert at bruge teknikken "Tidlig binding".

For at få adgang til webstedet har vi brug for browsingapplikationer, for eksempel “ Internet Explorer ”. Da det er et eksternt objekt, skal vi først indstille referencen.

Følg nedenstående trin for at skrot på nettet.

Trin 1: Definer VBA-variablen, og tildel datatypen som " Internet Explorer ".

Kode:

 Sub Web_Scraping () Dim Internet_Explorer Som internet End Sub 

Som du kan se ovenfor, når vi forsøger at indstille henvisningen til Internet Explorer, får vi ikke se "Internet Explorer", det er fordi "Internet Explorer" er et eksternt objekt, så vi skal indstille referencen.

Trin 2: For at indstille referencen skal du gå til " Værktøjer " og vælge " Referencer ".

Rul ned i vinduet nedenfor, og vælg “ Microsoft Internet Controls ”.

Trin 3: Marker afkrydsningsfeltet "Microsoft Internet Controls", og klik på Ok. Nu skal vi se dette objektnavn på IntelliSense-listen.

Kode:

 Sub Web_Scraping () Dim Internet_Explorer Som inter End Sub 

Trin 4: Vælg “InternetExplorer”.

Kode:

 Sub Web_Scraping () Dim Internet_Explorer Som InternetExplorer End Sub 

Trin 5: Dernæst skal vi indstille referencen for at aktivere Internet Explorer. Da dette er en objektvariabel, skal vi bruge nøgleordet " Set " til at indstille referencerne.

Kode:

 Sub Web_Scraping () Dim Internet_Explorer Som InternetExplorer Indstil Internet_Explorer = Ny InternetExplorer End Sub 

Trin 6: Nu ved hjælp af variablen " Internet_Explorer " kan vi bruge egenskaberne og metoderne til Internet Explorer.

Indtast variabelnavnet, og sæt en prik for at se IntelliSense-listen.

Kode:

Sub Web_Scraping () Dim Internet_Explorer Som InternetExplorer Indstil Internet_Explorer = Ny InternetExplorer Internet_Explorer. Afslut sub

Trin 7: For at kunne se Internet Explorer-applikationen skal vi vælge " Synlig " egenskab og indstille status som " Sand ".

Kode:

 Sub Web_Scraping () Dim Internet_Explorer Som InternetExplorer Indstil Internet_Explorer = Ny InternetExplorer Internet_Explorer.Visible = True End Sub 

Kør nu koden, og du skal se, at en Internet Explorer åbnes på din computer.

Trin 8: Da der ikke er nævnt nogen webadresse, kan vi kun se en tom side. For at give webadressen til Internet Explorer er vi nødt til " Navigation " -metoden.

Kode:

 Sub Web_Scraping () Dim Internet_Explorer Som InternetExplorer Indstil Internet_Explorer = Ny InternetExplorer Internet_Explorer.Visible = Ægte Internet_Explorer.Navigate (Afslut sub 

Trin 9: Som du kan se ovenfor "Navigation" metode spørger hvilken URL der skal navigeres i Internet Explorer. Nu skal jeg åbne hjemmesiden " Wallstreetnmojo ", og jeg kan angive URL-adressen som følger. “//Www.wallstreetmojo.com/”

Kode:

 Sub Web_Scraping() Dim Internet_Explorer As InternetExplorer Set Internet_Explorer = New InternetExplorer Internet_Explorer.Visible = True Internet_Explorer.Navigate ("//www.wallstreetmojo.com") End Sub 

Now run the code, we should see the mentioned web address page in internet explorer.

Here we have a problem that once the web page is opened our code needs to wait until the page web page fully opened.

Step 10: We need to use the “Do While” loop in VBA to actually wait for our code to go any further until the mentioned page is fully loaded.

So, add below the “Do While” loop to force the macro to wait until the mentioned web page comes to the “Ready State Complete” mode.

Code:

 Sub Web_Scraping() Dim Internet_Explorer As InternetExplorer Set Internet_Explorer = New InternetExplorer Internet_Explorer.Visible = True Internet_Explorer.Navigate ("//www.wallstreetmojo.com") Do While Internet_Explorer.ReadyState  READYSTATE_COMPLETE: Loop End Sub 

Step 11: Now let’s try to get information about the website in a single line. To get the information about the mentioned web address information we need to use the “Location Name” property.

Code:

 Sub Web_Scraping() Dim Internet_Explorer As InternetExplorer Set Internet_Explorer = New InternetExplorer Internet_Explorer.Visible = True Internet_Explorer.Navigate ("//www.wallstreetmojo.com") Do While Internet_Explorer.ReadyState  READYSTATE_COMPLETE: Loop MsgBox Internet_Explorer.LocationName End Sub 

Run the code and in the message box, we would get the information about the website.

Step 12: Now at the bottom, we can also print website addresses as well.

Code:

 Sub Web_Scraping() Dim Internet_Explorer As InternetExplorer Set Internet_Explorer = New InternetExplorer Internet_Explorer.Visible = True Internet_Explorer.Navigate ("//www.wallstreetmojo.com") Do While Internet_Explorer.ReadyState  READYSTATE_COMPLETE: Loop MsgBox Internet_Explorer.LocationName & vbNewLine & vbNewLine & Internet_Explorer.LocationURL End Sub 

Now this will tell about the website description and also shows the website address as well.

Things to Remember here

  • Web scraping is possible by accessing external applications like Internet Explorer.
  • We can do it in two ways i.e. Early Binding & Late Binding. With Early Binding, we can get to see the IntelliSense list but with late binding, we cannot get to see the IntelliSense list at all.