VBA Web Scraping | Cum să scripți site-uri web utilizând Excel VBA?

Excel VBA Web Scraping

VBA Web Scraping este o tehnică de accesare a paginilor web și de descărcare a datelor de pe acel site web în fișierele computerului nostru. Răzuirea web este posibilă accesând aplicații externe precum Internet Explorer. O putem face în două moduri, adică Early Binding & Late Binding.

Web Scraping cu VBA înseamnă că atunci când folosim VBA pentru a prelua datele din celelalte surse de pe web, acest lucru poate necesita conectări pentru sursele de date, dar mai întâi, pentru a face acest lucru, trebuie să activăm referințele din secțiunea de instrumente din editorul VBA pentru biblioteca HTML Microsoft pentru a accesa webul de la VBA.

Nu mulți dintre noi știu că din Excel putem accesa paginile web și putem obține datele din aceste pagini web. Da, ai auzit bine. putem parcurge pagini web, accesa aplicații de navigare și multe altele. În acest articol, vă vom arăta cum să scrieți în detaliu un cod VBA excel pentru răzuirea web.

De obicei, deschidem paginile web, copiem datele și le lipim în fișierele noastre, cum ar fi Excel, Word sau alte fișiere. Dar în acest articol, vă vom arăta cum să accesați site-urile web din Excel și să faceți multe alte tipuri de lucruri.

Cum să scripți datele site-ului web utilizând VBA?

Puteți descărca acest șablon Excel VRA Web Scraping aici - Șablon Excel VRA Web Scraping

Când dorim să accesăm orice alte aplicații din Excel, putem face acest lucru în moduri, adică „Early Binding” și „Late Binding”. La etapa începătorului, este întotdeauna sigură utilizarea tehnicii „Early Binding”.

Pentru a accesa site-ul web avem nevoie de aplicații de navigare, de exemplu, „ Internet Explorer ”. Deoarece este un obiect extern, trebuie să setăm mai întâi referința.

Urmați pașii de mai jos pentru a elimina web.

Pasul 1: Definiți variabila VBA și atribuiți tipul de date ca „ Internet Explorer ”.

Cod:

 Sub Web_Scraping () Dim Internet_Explorer Ca internet End Sub 

După cum puteți vedea mai sus când încercăm să setăm referința la Internet Explorer, nu vom vedea „Internet Explorer”, deoarece „Internet Explorer” este un obiect extern, deci trebuie să setăm referința.

Pasul 2: Pentru a seta referința, accesați „ Instrumente ” și alegeți „ Referințe ”.

În fereastra de mai jos derulați în jos și alegeți „ Microsoft Internet Controls ”.

Pasul 3: bifați caseta „Microsoft Internet Controls” și faceți clic pe Ok. Acum ar trebui să vedem acest nume de obiect în lista IntelliSense.

Cod:

 Sub Web_Scraping () Dim Internet_Explorer As inter End Sub 

Pasul 4: Alegeți „InternetExplorer”.

Cod:

 Sub Web_Scraping () Dim Internet_Explorer Ca InternetExplorer End Sub 

Pasul 5: Apoi, trebuie să setăm referința pentru a activa Internet Explorer. Deoarece aceasta este o variabilă obiect, trebuie să folosim cuvântul cheie „ Set ” pentru a seta referințele.

Cod:

 Sub Web_Scraping () Dim Internet_Explorer Ca InternetExplorer Set Internet_Explorer = Nou InternetExplorer End Sub 

Pasul 6: Acum folosind variabila „ Internet_Explorer ” putem folosi proprietățile și metodele Internet Explorer.

Introduceți numele variabilei și puneți un punct pentru a vedea lista IntelliSense.

Cod:

Sub Web_Scraping () Dim Internet_Explorer Ca InternetExplorer Set Internet_Explorer = Internet Explorer nou Internet_Explorer. Sfârșitul Sub

Pasul 7: Acum, pentru a vizualiza aplicația Internet Explorer, trebuie să alegem proprietatea „ Vizibilă ” și să setăm starea ca „ Adevărat ”.

Cod:

 Sub Web_Scraping () Dim Internet_Explorer Ca InternetExplorer Set Internet_Explorer = InternetExplorer nou Internet_Explorer.Visible = Sub End True 

Acum rulați codul și ar trebui să vedeți un Internet Explorer care se deschide pe computer.

Pasul 8: Deoarece nu a fost menționată nicio adresă web, putem vedea doar o pagină goală. Pentru a da adresa web exploratorului de internet, trebuie să utilizăm metoda „ Navigare ”.

Cod:

 Sub Web_Scraping () Dim Internet_Explorer Ca InternetExplorer Set Internet_Explorer = InternetExplorer nou Internet_Explorer.Visible = Adevărat Internet_Explorer.Navigate (End Sub 

Pasul 9: După cum puteți vedea mai sus, metoda „Navigare” care vă întreabă ce adresă URL trebuie navigată în Internet Explorer. Acum trebuie să deschid site-ul web „ Wallstreetnmojo ” și pot da adresa URL după cum urmează. „//Www.wallstreetmojo.com/”

Cod:

 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.