Extracción de datos 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 de Excel, un archivo de Word o, por ejemplo, a cualquier aplicación de Microsoft Office. Ayuda a canalizar información crítica de la página web.
El raspado de datos se vuelve simple cuando se trabaja diariamente en un proyecto basado en la investigación, y dicho proyecto depende puramente de Internet y el sitio web. Para ilustrar más sobre el tema, tomemos el ejemplo de un operador diurno 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.
En este tutorial, aprenderás:
- ¿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 utilizando VBA?
¿Cómo preparar la macro de Excel antes de realizar el Raspado de datos con Internet Explorer?
Hay ciertos requisitos previos que se deben realizar 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 desarrollador de excel.
Paso 2) Seleccione la opción Visual Basic en la cinta de 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 herramienta 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 scripts de macro.
Ahora el archivo de Excel está listo para interactuar con Internet Explorer. El siguiente paso sería incorporar scripts de macro que facilitaran 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 InternetExplorer Dim doc As New HTMLDocument
Paso 2) Para abrir Internet explorer usando VBA, escriba p.ej. visible = verdadero y pulse F5.
Sub test()Dim ie As New InternetExplorer Dim 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?
Aquí, hay pasos para abrir el sitio web en Internet exploer usando VBA
Paso 1) Una vez que pueda acceder a Internet explorer usando Excel VBA, el siguiente paso incorporaría el acceso a un sitio web usando VBA. Esto se ve facilitado por el atributo Navigate, en el que la URL tiene que pasar como comillas dobles en el atributo. Siga los pasos que se muestran a continuación.
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ía tal como se muestra
Ahora, la macro de Excel está lista con respecto a 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 utilizando VBA?
Supongamos que el operador diurno desea acceder a los datos del sitio web diariamente. Cada vez que el operador diario presione el botón, debe extraer automáticamente los datos del mercado a excel.
Desde el sitio 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
<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 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 se puede ver, los datos están estructurados como una sola tabla HTML. Por lo tanto, para extraer datos completos de la tabla html, se requeriría el diseño de una macro que recopila los datos en forma de colección.
La colección se pegaría en excel. Para lograr los resultados deseados, realice los pasos mencionados 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) Inicialice 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 de un 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")
El excel se puede inicializar utilizando el atributo range de la hoja de excel o a través del atributo cells de la hoja de excel. Para reducir la complejidad del script de VBA, los datos de recopilación se inicializan en el atributo 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 actualizar o cualquier nombre adecuado que se pueda inicializar en él. En este ejemplo, el botón se inicializa como una actualización.
Paso 5) Presione el botón actualizar 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 extraer solo la información que 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, entrega 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.