Raspado web 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 excel, archivo word, o por decir cualquier Microsoft aplicación de oficina. Ayuda a canalizar información crítica desde la página web.
La extracción de datos se vuelve simple cuando se trabaja diariamente en un proyecto basado en investigación, y dicho proyecto depende exclusivamente de Internet y el sitio web. Para ilustrar mejor el tema, tomemos el ejemplo de un comerciante intradía que ejecuta una macro de Excel para extraer información de mercado de un sitio web de finanzas a una hoja de Excel utilizando 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 iniciar 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) Insertar 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 Microsoft Biblioteca de objetos HTML y Microsoft control de internet.
Los siguientes archivos deben referenciarse al módulo, ya que ayudan a abrir Internet Explorer y facilitan el desarrollo de secuencias de comandos de macros.
Ahora el archivo Excel está listo para interactuar con Internet Explorer. El siguiente paso sería incorporar scripts de macros que facilitarían la extracción 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 InternetExplorer Dim doc As New HTMLDocument
Paso 2) Para abrir Internet Explorer usando VBA, escriba es decir, visible = verdadero y pulse F5.
Sub test() Dim ie As New InternetExplorer Dim doc As New HTMLDocument Ie.visible=true
El módulo tendría el siguiente aspecto: –
¿Cómo abrir un sitio web en Internet Explorer usando VBA?
Estos son los pasos para abrir un sitio web en Internet Explorer usando VBA
Paso 1) Una vez que pueda acceder a Internet Explorer con Excel VBA, el siguiente paso sería acceder a un sitio web con VBA. Esto se facilita mediante el atributo Navigate, en el que la URL debe pasar como comillas dobles en el atributo. Siga los pasos que se muestran a continuación.
Sub test() Dim, ie As New InternetExplorer Dim doc As New HTMLDocument Dim ecoll As Object ie.Visible = True ie.navigate"https://demo.guru99.com/test/web-table-element.php" Do DoEvents Loop Until ie.readyState = READYSTATE_COMPLETE
Paso 2) – Presione F5 para ejecutar la macro. Se abrirá la siguiente página web 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?
Supongamos que el comerciante diario desea acceder a los datos del sitio web a diario. Cada vez que el comerciante diario presiona el botón, debería extraer automáticamente los datos del mercado a Excel.
Desde el sitio web mencionado anteriormente, sería necesario inspeccionar un elemento y observar cómo están estructurados los datos.
Paso 1) Acceda al siguiente código fuente de HTML presionando control + Shift + I
<table class="datatable"> <thead> <tr> <th>Company</th> <th>Group</th> <th>Pre Close (Rs)</th> <th>Current Price (Rs)</th> <th>% Change</th> </tr>
El código fuente sería el siguiente: –
Sub test() Dim ie As New InternetExplorer Dim doc As New HTMLDocument Dim ecoll As Object ie.Visible = True ie.navigate "https://demo.guru99.com/test/web-table-element.php" Do DoEvents Loop Until ie.readyState = READYSTATE_COMPLETE Set doc = ie.document
Como se puede observar, 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 una 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) Inicializar el documento HTML en la subrutina
El módulo VBA tendría el siguiente aspecto: –
Paso 3) Inicializar el elemento de colección presente en el documento HTML
El módulo VBA tendría el siguiente aspecto: –
Sub test() Dim ie As New InternetExplorer Dim doc As New HTMLDocument Dim ecoll As Object ie.Visible = True ie.navigate "https://demo.guru99.com/test/web-table-element.php" Do DoEvents Loop Until ie.readyState = READYSTATE_COMPLETE Set doc = ie.document Set ecoll = doc.getElementsByTagName("table")
Paso 4) Inicialice las celdas de la hoja de Excel con la ayuda de un bucle anidado como se muestra
El módulo VBA tendría el siguiente aspecto: –
Sub test() Dim ie As New InternetExplorer Dim doc As New HTMLDocument Dim ecoll As Object ie.Visible = True ie.navigate "https://demo.guru99.com/test/web-table-element.php" Do DoEvents Loop Until ie.readyState = READYSTATE_COMPLETE Set doc = ie.document Set ecoll = doc.getElementsByTagName("table")
El 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 macro script esté listo, pase y asigne la subrutina al botón Excel y salga del módulo de VBA. Etiquete el botón como actualización o cualquier nombre adecuado que pueda inicializarse. Para este ejemplo, el botón se inicializa como una actualización.
Paso 5) Presione el botón de actualización para obtener el resultado mencionado a continuación
Paso 6) Compara los resultados en excel con los resultados de internet explorer
Resumen
- La extracción de datos permite al usuario extraer solo la información que desea. Para encontrar las mejores herramientas para este propósito, eche un vistazo a esta lista de herramientas de web scraping que pueden ayudarlo a extraer de manera eficiente la información deseada de varios sitios web.
- El scraping se puede realizar utilizando Internet Explorer.
- El proceso de scraping 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 el raspado.