VBA-webschrapen

Excel VBA-webschrapen

VBA Web Scraping is een techniek om webpagina's te openen en de gegevens van die website naar onze computerbestanden te downloaden. Webscraping is mogelijk door toegang te krijgen tot externe applicaties zoals Internet Explorer. We kunnen dit op twee manieren doen, namelijk Early Binding & Late Binding.

Webscraping met VBA betekent dat wanneer we VBA gebruiken om de gegevens van de andere bronnen op internet op te halen, dit mogelijk inlogpogingen voor de gegevensbronnen vereist, maar om dit te kunnen doen, moeten we de verwijzingen inschakelen vanuit het gedeelte Tools in de VBA-editor voor de Microsoft HTML-bibliotheek om vanuit VBA toegang te krijgen tot internet.

Weinigen van ons weten dat we vanuit Excel toegang hebben tot de webpagina's en de gegevens van die webpagina's kunnen ophalen. Ja, je hebt het goed gehoord. we kunnen door webpagina's bladeren, browsertoepassingen openen en nog veel meer. In dit artikel laten we u in detail zien hoe u een Excel VBA-code schrijft voor webscraping.

Meestal openen we de webpagina's, kopiëren we de gegevens en plakken deze in onze bestanden zoals Excel, Word of andere bestanden. Maar in dit artikel laten we u zien hoe u toegang krijgt tot websites vanuit Excel en hoe u vele andere dingen kunt doen.

Hoe websitegegevens te schrappen met VBA?

U kunt deze VBA Web Scraping Excel-sjabloon hier downloaden - VBA Web Scraping Excel-sjabloon

Als we toegang willen hebben tot andere applicaties vanuit Excel, kunnen we dit doen op manieren zoals "Early Binding" en "Late Binding". In de beginnersfase is het altijd veilig om de techniek "Early Binding" te gebruiken.

Om toegang te krijgen tot de website hebben we browsertoepassingen nodig, bijvoorbeeld " Internet Explorer ". Omdat het een extern object is, moeten we eerst de referentie instellen.

Volg de onderstaande stappen voor webschroot.

Stap 1: Definieer de VBA-variabele en wijs het gegevenstype toe als " Internet Explorer ".

Code:

 Sub Web_Scraping () Dim Internet_Explorer Als internet End Sub 

Zoals je hierboven kunt zien wanneer we proberen de referentie naar Internet Explorer in te stellen, krijgen we "Internet Explorer" niet te zien, dit komt omdat "Internet Explorer" een extern object is, dus we moeten de referentie instellen.

Stap 2: Om de referentie in te stellen, ga naar " Tools " en kies " Referenties ".

Scroll in het onderstaande venster naar beneden en kies " Microsoft Internet Controls ".

Stap 3: Vink het vakje "Microsoft Internet Controls" aan en klik op Ok. Nu zouden we deze objectnaam in de IntelliSense-lijst moeten zien.

Code:

 Sub Web_Scraping () Dim Internet_Explorer Als inter End Sub 

Stap 4: Kies “InternetExplorer”.

Code:

 Sub Web_Scraping () Dim Internet_Explorer As InternetExplorer End Sub 

Stap 5: Vervolgens moeten we de referentie instellen om Internet Explorer in te schakelen. Aangezien dit een objectvariabele is, moeten we het sleutelwoord " Set " gebruiken om de referenties in te stellen.

Code:

 Sub Web_Scraping () Dim Internet_Explorer As InternetExplorer Set Internet_Explorer = Nieuw Internet Explorer End Sub 

Stap 6: Nu we de variabele “ Internet_Explorer ” gebruiken, kunnen we de eigenschappen en methoden van internet explorer gebruiken.

Voer de variabelenaam in en plaats een punt om de IntelliSense-lijst te zien.

Code:

Sub Web_Scraping () Dim Internet_Explorer As InternetExplorer Set Internet_Explorer = Nieuwe InternetExplorer Internet_Explorer. Einde Sub

Stap 7: Om de applicatie Internet Explorer te kunnen bekijken, moeten we de eigenschap " Zichtbaar " kiezen en de status op " Waar " instellen.

Code:

 Sub Web_Scraping () Dim Internet_Explorer As InternetExplorer Set Internet_Explorer = Nieuwe InternetExplorer Internet_Explorer.Visible = True End Sub 

Voer nu de code uit en u zou moeten zien dat er een Internet Explorer op uw computer wordt geopend.

Stap 8: Omdat er geen webadres is vermeld, zien we alleen een blanco pagina. Om het webadres aan de internetverkenner te geven, moeten we de " Navigatiemethode " gebruiken.

Code:

 Sub Web_Scraping () Dim Internet_Explorer As InternetExplorer Set Internet_Explorer = New InternetExplorer Internet_Explorer.Visible = True Internet_Explorer.Navigate (End Sub 

Stap 9: Zoals u hierboven kunt zien, vraagt ​​de "Navigatie" -methode naar welke URL moet worden genavigeerd in Internet Explorer. Nu moet ik de website " Wallstreetnmojo " openen en ik kan het URL-adres als volgt opgeven. "//Www.wallstreetmojo.com/"

Code:

 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 

Voer nu de code uit, we zouden de genoemde webadrespagina in Internet Explorer moeten zien.

Hier hebben we een probleem dat zodra de webpagina is geopend, onze code moet wachten tot de webpagina volledig is geopend.

Stap 10: We moeten de "Do While" -lus in VBA gebruiken om daadwerkelijk te wachten tot onze code verder gaat totdat de genoemde pagina volledig is geladen.

Voeg dus onder de "Do While" -lus toe om de macro te dwingen te wachten tot de genoemde webpagina in de " Ready State Complete " -modus komt.

Code:

 Sub Web_Scraping () Dim Internet_Explorer As InternetExplorer Set Internet_Explorer = Nieuwe InternetExplorer Internet_Explorer.Visible = Echte Internet_Explorer.Navigate ("//www.wallstreetmojo.com") Doe terwijl Internet_Explorer.ReadyState READYSTATE_COMPLETE: Loop End Sub 

Stap 11: Laten we nu proberen om informatie over de website op één regel te krijgen. Om de informatie over de genoemde webadresinformatie te krijgen, hebben we de eigenschap " Locatienaam " nodig.

Code:

 Sub Web_Scraping () Dim Internet_Explorer As InternetExplorer Set Internet_Explorer = Nieuwe InternetExplorer Internet_Explorer.Visible = Echte Internet_Explorer.Navigate ("//www.wallstreetmojo.com") Doe terwijl Internet_Explorer.ReadyState READYSTATE_COMPLETE: Loop MsgBox Internet Explorer. 

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.