Raspado web de VBA

Extracción web de Excel VBA

VBA Web Scraping es una técnica para acceder a páginas web y descargar los datos de ese sitio web a los archivos de nuestra computadora. El raspado web es posible accediendo a aplicaciones externas como Internet Explorer. Podemos hacerlo de dos formas, es decir, enlace temprano y enlace tardío.

Web Scraping con VBA significa que cuando usamos VBA para obtener los datos de otras fuentes en la web, esto puede requerir inicios de sesión para las fuentes de datos, pero primero, para hacerlo, necesitamos habilitar las referencias de la sección de herramientas en el editor de VBA para la biblioteca HTML de Microsoft para acceder a la web desde VBA.

No muchos de nosotros sabemos que desde Excel podemos acceder a las páginas web y obtener los datos de esas páginas web. Sí, has escuchado bien. podemos rastrear páginas web, acceder a aplicaciones de navegación y mucho más. En este artículo, le mostraremos cómo escribir un código VBA de Excel para raspado web en detalle.

Por lo general, abrimos las páginas web, copiamos los datos y los pegamos en nuestros archivos como Excel, Word o algunos otros archivos. Pero en este artículo, le mostraremos cómo acceder a sitios web desde Excel y hacer muchas otras cosas.

¿Cómo eliminar los datos del sitio web usando VBA?

Puede descargar esta plantilla de Excel de VBA Web Scraping aquí - Plantilla de Excel de VBA Web Scraping

Cuando queremos acceder a cualquier otra aplicación desde Excel, podemos hacerlo de distintas formas, es decir, "Enlace anticipado" y "Enlace tardío". En la etapa de principiante, siempre es seguro utilizar la técnica de "Encuadernación temprana".

Para acceder al sitio web necesitamos aplicaciones de navegación, por ejemplo, “ Internet Explorer ”. Dado que es un objeto externo, primero debemos establecer la referencia.

Siga los pasos a continuación para eliminar la web.

Paso 1: Defina la variable VBA y asigne el tipo de datos como " Internet Explorer ".

Código:

 Sub Web_Scraping () Dim Internet_Explorer As Internet End Sub 

Como puede ver arriba, cuando intentamos establecer la referencia a Internet Explorer, no vemos "Internet Explorer", esto se debe a que "Internet Explorer" es un objeto externo, por lo que necesitamos establecer la referencia.

Paso 2: Para establecer la referencia, vaya a " Herramientas " y elija " Referencias ".

En la ventana de abajo, desplácese hacia abajo y elija " Controles de Internet de Microsoft ".

Paso 3: Marque la casilla de "Controles de Internet de Microsoft" y haga clic en Aceptar. Ahora deberíamos ver este nombre de objeto en la lista de IntelliSense.

Código:

 Sub Web_Scraping () Dim Internet_Explorer Como inter End Sub 

Paso 4: Elija "InternetExplorer".

Código:

 Sub Web_Scraping () Dim Internet_Explorer como InternetExplorer End Sub 

Paso 5: A continuación, debemos establecer la referencia para habilitar Internet Explorer. Dado que esta es una variable de objeto, necesitamos usar la palabra clave " Set " para establecer las referencias.

Código:

 Sub Web_Scraping () Dim Internet_Explorer como InternetExplorer Establecer Internet_Explorer = New InternetExplorer End Sub 

Paso 6: Ahora usando la variable " Internet_Explorer " podemos usar las propiedades y métodos de Internet Explorer.

Ingrese el nombre de la variable y ponga un punto para ver la lista de IntelliSense.

Código:

Sub Web_Scraping () Dim Internet_Explorer como InternetExplorer Establezca Internet_Explorer = New InternetExplorer Internet_Explorer. End Sub

Paso 7: Ahora para ver la aplicación de Internet Explorer, debemos elegir la propiedad " Visible " y establecer el estado como " Verdadero ".

Código:

 Sub Web_Scraping () Dim Internet_Explorer como InternetExplorer Establecer Internet_Explorer = New InternetExplorer Internet_Explorer.Visible = True End Sub 

Ahora ejecute el código y debería ver que se abre Internet Explorer en su computadora.

Paso 8: Debido a que no se ha mencionado ninguna dirección web, solo podemos ver una página en blanco. Para dar la dirección web al explorador de Internet necesitamos el método " Navegación ".

Código:

 Sub Web_Scraping () Dim Internet_Explorer como InternetExplorer Establezca Internet_Explorer = New InternetExplorer Internet_Explorer.Visible = True Internet_Explorer.Navigate (End Sub 

Paso 9: Como puede ver arriba, el método de "Navegación" pregunta por qué URL se debe navegar en Internet Explorer. Ahora necesito abrir el sitio web " Wallstreetnmojo " y puedo dar la dirección URL de la siguiente manera. "//Www.wallstreetmojo.com/"

Código:

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

Ahora ejecute el código, deberíamos ver la página de dirección web mencionada en Internet Explorer.

Aquí tenemos el problema de que una vez que se abre la página web, nuestro código debe esperar hasta que la página web se abra por completo.

Paso 10: Necesitamos usar el ciclo "Do While" en VBA para esperar a que nuestro código continúe hasta que la página mencionada esté completamente cargada.

Por lo tanto, agregue debajo del ciclo "Do While" para forzar a la macro a esperar hasta que la página web mencionada llegue al modo " Ready State Complete ".

Código:

 Sub Web_Scraping () Dim Internet_Explorer como InternetExplorer Establecer Internet_Explorer = New InternetExplorer Internet_Explorer.Visible = True Internet_Explorer.Navigate ("//www.wallstreetmojo.com") Hacer mientras Internet_Explorer.ReadyState READYSTATE_COMPLETE: Loop End 

Paso 11: Ahora intentemos obtener información sobre el sitio web en una sola línea. Para obtener la información sobre la información de la dirección web mencionada, necesitamos usar la propiedad " Nombre de la ubicación ".

Código:

 Sub Web_Scraping () Dim Internet_Explorer como InternetExplorer Establecer Internet_Explorer = New InternetExplorer Internet_Explorer.Visible = True Internet_Explorer.Navigate ("//www.wallstreetmojo.com") Hacer mientras Internet_Explorer.ReadyState READYSTATE_COMPLNamesubloop Internet_Explorer.Loop. 

Ejecute el código y en el cuadro de mensaje, obtendríamos la información sobre el sitio web.

Paso 12: Ahora, en la parte inferior, también podemos imprimir direcciones de sitios web.

Código:

 Sub Web_Scraping () Dim Internet_Explorer como InternetExplorer Establezca Internet_Explorer = New InternetExplorer Internet_Explorer.Visible = True Internet_Explorer.Navigate ("//www.wallstreetmojo.com") Do While Internet_Explorer.ReadyState READYSTATE_COMLExplorer_Internet_Loop. .LocationURL End Sub 

Ahora, esto le informará sobre la descripción del sitio web y también mostrará la dirección del sitio web.

Cosas para recordar aquí

  • El raspado web es posible accediendo a aplicaciones externas como 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.