Web Scraping con VBA

¿Qué es el raspado de datos?

El raspado de datos es la técnica que ayuda a extraer la información deseada de una página web HTML a un archivo local presente en su máquina local. Normalmente, un archivo local podría corresponder a un archivo de Excel, un archivo de Word o cualquier aplicación de Microsoft Office. Ayuda a canalizar información crítica desde la página web.

El raspado de datos se vuelve simple cuando se trabaja en un proyecto basado en la investigación a diario, y dicho proyecto depende exclusivamente de Internet y el sitio web. Para ilustrar mejor el tema, tomemos el ejemplo de un operador diario que ejecuta una macro de Excel para extraer información de mercado de un sitio web de finanzas en una hoja de Excel utilizando VBA.

En este tutorial, aprenderá:

  • ¿Qué es el raspado de datos?
  • ¿Cómo preparar la macro de Excel antes de realizar el raspado de datos con Internet Explorer?
  • ¿Cómo abrir Internet Explorer usando Excel VBA?
  • ¿Cómo abrir un sitio web en Internet Explorer usando VBA?
  • ¿Cómo extraer información del sitio web usando VBA?

¿Cómo preparar la macro de Excel antes de realizar el raspado de datos con Internet Explorer?

Hay ciertos requisitos previos que deben realizarse en el archivo de macro de Excel antes de entrar en el proceso de extracción de datos en Excel.

Estos requisitos previos son los siguientes:

Paso 1) Abra una macro basada en Excel y acceda a la opción de desarrollador de Excel.

Paso 2) Seleccione la opción Visual Basic en la cinta Desarrollador.

Paso 3) Inserte un nuevo módulo.

Paso 4) Inicializar una nueva subrutina

Sub test()End sub

El módulo resultaría de la siguiente manera: -

Paso 5) Acceda a la opción de referencia en la pestaña de herramientas y haga referencia a la biblioteca de objetos HTML de Microsoft y al control de Internet de Microsoft.

Los siguientes archivos deben ser referenciados al módulo, ya que ayuda a abrir Internet Explorer y facilita el desarrollo de secuencias de comandos de macros.

Ahora el archivo de Excel está listo para interactuar con Internet Explorer. El siguiente paso sería incorporar macro scripts que facilitarían el raspado de datos en HTML.

¿Cómo abrir Internet Explorer usando Excel VBA?

Paso 1) Inicialice la variable en las subrutinas como se muestra a continuación

Sub test()Dim ie As New InternetExplorerDim doc As New HTMLDocument

Paso 2) Para abrir Internet Explorer usando VBA, escriba, es decir, visible = true y presione F5.

Sub test()Dim ie As New InternetExplorerDim doc As New HTMLDocumentIe.visible=true

El módulo se vería de la siguiente manera: -

¿Cómo abrir un sitio web en Internet Explorer usando VBA?

A continuación, se muestran los pasos para abrir un sitio web en Internet Explorer usando VBA

Paso 1) Una vez que pueda acceder al explorador de Internet usando Excel VBA, el siguiente paso incorporaría el acceso a un sitio web usando VBA. Esto facilitado por Navigate Attribute, donde la URL debe pasar como comillas dobles en el atributo. Siga los siguientes pasos como se muestra.

Sub test()Dim, ie As New InternetExplorerDim doc As New HTMLDocumentDim ecoll As Objectie.Visible = Trueie.navigate"http://demo.guru99.com/test/web-table-element.php"DoDoEventsLoop Until ie.readyState = READYSTATE_COMPLETE

Paso 2): presione F5 para ejecutar la macro. La siguiente página web se abrirá como se muestra

Ahora, la macro de Excel está lista para realizar las funciones de raspado. El siguiente paso mostraría cómo se puede extraer la información de Internet Explorer usando VBA.

¿Cómo extraer información del sitio web usando VBA?

Suponga que el operador diario desea acceder a los datos del sitio web a diario. Cada vez que el trader diario presiona el botón, haga clic en el botón, debe extraer automáticamente los datos del mercado a Excel.

Desde la web anterior, sería necesario inspeccionar un elemento y observar cómo se estructuran los datos.

Paso 1) Acceda al siguiente código fuente de HTML presionando control + Shift + I

El código fuente sería el siguiente: -

Sub test()Dim ie As New InternetExplorerDim doc As New HTMLDocumentDim ecoll As Objectie.Visible = Trueie.navigate "http://demo.guru99.com/test/web-table-element.php"DoDoEventsLoop Until ie.readyState = READYSTATE_COMPLETESet doc = ie.document

Como puede verse, los datos están estructurados como una única tabla HTML. Por lo tanto, para extraer datos completos de la tabla html, sería necesario diseñar una macro que recopile los datos en forma de colección.

Luego, la colección se pegaría en Excel. Para lograr los resultados deseados, realice los pasos que se mencionan a continuación: -

Paso 2) Inicialice el documento Html en la subrutina

El módulo VBA se vería de la siguiente manera: -

Paso 3) Inicializar el elemento de colección presente en el documento HTML

El módulo VBA se vería de la siguiente manera: -

Sub test()Dim ie As New InternetExplorerDim doc As New HTMLDocumentDim ecoll As Objectie.Visible = Trueie.navigate "http://demo.guru99.com/test/web-table-element.php"DoDoEventsLoop Until ie.readyState = READYSTATE_COMPLETESet doc = ie.documentSet ecoll = doc.getElementsByTagName("table")

Paso 4) Inicialice las celdas de la hoja de Excel con la ayuda del bucle anidado como se muestra

El módulo VBA se vería de la siguiente manera: -

Sub test()Dim ie As New InternetExplorerDim doc As New HTMLDocumentDim ecoll As Objectie.Visible = Trueie.navigate "http://demo.guru99.com/test/web-table-element.php"DoDoEventsLoop Until ie.readyState = READYSTATE_COMPLETESet doc = ie.documentSet ecoll = doc.getElementsByTagName("table")

Excel se puede inicializar utilizando el atributo de rango de la hoja de Excel o mediante el atributo de celdas de la hoja de Excel. Para reducir la complejidad del script VBA, los datos de la colección se inicializan en el atributo de celdas de Excel de la hoja 1 presente en el libro de trabajo.

Una vez que el script de macro esté listo, pase y asigne la subrutina al botón de Excel y salga del módulo de VBA. Etiquete el botón como actualización o cualquier nombre adecuado que pueda inicializarse en él. Para este ejemplo, el botón se inicializa como una actualización.

Paso 5) Presione el botón de actualización para obtener la salida mencionada a continuación

Paso 6) Compare los resultados en Excel con los resultados de Internet Explorer

Resumen:

  • El raspado de datos permite al usuario raspar solo la información que el usuario desea.
  • El raspado se puede realizar utilizando Internet Explorer.
  • El proceso de raspado es más lento en el caso de Internet Explorer; sin embargo, ofrece los resultados deseados al usuario.
  • El raspado debe realizarse con absoluto cuidado y precaución, ya que puede dañar y bloquear el sistema que se utiliza para raspar.

Articulos interesantes...

CompanyGroupPre Close (Rs)Current Price (Rs)% Change