Está en la página 1de 14

5/9/2021 Cómo hacer data scraping con VBA y Selenium - macros

0
Inicio Entradas 
Conociendo Excel desde otra perspectiva

Cómo hacer data scraping con VBA y


Selenium
Inicio  macros  Cómo hacer data scraping con VBA y Selenium

Sin comentarios Publicada en macros Por AngeldeOdin Publicada el enero 18, 2021
Etiquetada como cute, excel, macro, macros, tablas, vba

+1

Antes de empezar, hay que aclarar qué es en VBA el data scraping si usamos Selenium. Primero,
Selenium puede ser clasificado como una herramienta de automatización que facilita el scraping
desde páginas web HTML para realizar un scraping web (o bien, web scraping) utilizando Google
Chrome. Si no la tienes instalada, la puedes encontrar aquí

Hoy lo que vamos a ver es cómo preparar un macro de Excel antes de hacer un data scraping
Chatear con Excel CUTE
usando Selenium, cómo abrir Google Chrome por medio de VBA, así como abrir un sitio web en
Normalmente responde en unos minutos
Chrome por medio de VBA y cómo hacer un scraping de información, igual por medio de VBA.
Hola, ¿en qué podemos ayudarte?
Antes de iniciar.

Iniciar sesión en Messenger


Hay un error muy común a la hora de querer ejecutar Selenium en Windows 10, y esto se debe a un
driver que no viene en la versión necesaria. Si al correr lo que viene abajo te presenta el error
“automation error” debes hacer lo siguiente:
Continuar como invitado
1. Encuentra tu carpeta de Selenium: Regularmente en “C:\Users\tu_usuario\AppData\Local\SeleniumBasic\Scripts”.
2. En los scripts, ejecuta el que se llama “StartChrome.vbs”. Al
Si continuar como invitado,
abre sin problema, aceptas
continua las las
con Condiciones decaso
macros; en
Facebook. Obtén información sobre cómo recopilamos,
contrario, instala el driver que solicita el script.
usamos y compartimos tus datos en la Política de datos,
así como el uso que hacemos de las cookies y
¿Cómo prearar un macro de Excel antes de hacer datasimilares
tecnologías scraping usando
en la Política Selenium?
de cookies.

Para poder hacer un data scraping tenemos que cumplir con ciertos pre-requisitos en el macro del
archivo antes de empezar en Excel. Estos requisitos son:

Política de cookies.

https://excelcute.com/vba-data-scraping-selenium/ 1/14
5/9/2021 Cómo hacer data scraping con VBA y Selenium - macros

Abrir VBA Excel, acceder a la pestaña de «Desarrollador» de Excel y buscar la opción de «Visual
Basic»:

Insertaremos un nuevo módulo:

Chatear con Excel CUTE


Normalmente responde en unos minutos

Hola, ¿en qué podemos ayudarte?

Iniciar sesión en Messenger

Continuar como invitado

Al continuar como invitado, aceptas las Condiciones de


Facebook. Obtén información sobre cómo recopilamos,
usamos y compartimos tus datos en la Política de datos,
así como el uso que hacemos de las cookies y
tecnologías similares en la Política de cookies.
Ahora vamos a iniciar una nueva subrutina y la nombraremos (en este caso se llamará «test2»):

Sub data_scrapping()
End sub
Política de cookies.

https://excelcute.com/vba-data-scraping-selenium/ 2/14
5/9/2021 Cómo hacer data scraping con VBA y Selenium - macros

Lo siguiente serán los resultados en el módulo:

Accederemos a la opción de referencia bajo la barra de herramientas y lo referenciaremos como una


librería de tipo Selenium. Estas librerías serán referenciadas al módulo ya que ayuda al abrir Google
Chrome y facilita el desarrollo para escribir macros.

Chatear con Excel CUTE


Normalmente responde en unos minutos

Hola, ¿en qué podemos ayudarte?

Iniciar sesión en Messenger


Con esto el archivo de Excel estará listo para interactuar con el navegador de internet. Los
siguientes pasos serán para incorporar un script de macro que facilitará el raspado de datos en
HTML. Continuar como invitado

Cómo abrir Microsoft Chrome usando VBAAl continuar como invitado, aceptas las Condiciones de
Facebook. Obtén información sobre cómo recopilamos,
usamos y compartimos tus datos en la Política de datos,
Primero vamos a declarar e iniciar las variables en esta así
subrutina:
como el uso que hacemos de las cookies y
tecnologías similares en la Política de cookies.

Sub data_scrapping()
Dim wb As Workbook, sh As Worksheet
Dim driver As New WebDriver
Dim rTable As Integer, cTable As Integer, i As Integer
Política de cookies.

https://excelcute.com/vba-data-scraping-selenium/ 3/14
5/9/2021 Cómo hacer data scraping con VBA y Selenium - macros

Dim tr As Variant, th As Variant, t As Variant

'Variables de libro y hoja


Set wb = ThisWorkbook
Set ws = wb.Sheets(1)

' Variables de fila y columna definidas


rTable = 2
cTable = 1
i = 1

Set ws = Nothing
Set wb = Nothing

End Sub

Para abrir Edge Chrome por medio de Selenium y VBA, escribiremos «write driver.start «chrome»»
y presionaremos F5. Este vendría a ser el código que necesitaremos:

Sub data_scrapping()
Dim wb As Workbook, sh As Worksheet
Dim driver As New WebDriver
Chatear con Excel CUTE
Dim rTable As Integer, cTable As Integer, i AsNormalmente
Integer responde en unos minutos
Dim tr As Variant, th As Variant, t As Variant
Hola, ¿en qué podemos ayudarte?

'Variables de libro y hoja


Set wb = ThisWorkbook Iniciar sesión en Messenger
Set ws = wb.Sheets(1)

Continuar como invitado


' Variables de fila y columna definidas
rTable = 2
Al continuar como invitado, aceptas las Condiciones de
cTable = 1
Facebook. Obtén información sobre cómo recopilamos,
i = 1 usamos y compartimos tus datos en la Política de datos,
así como el uso que hacemos de las cookies y
tecnologías similares en la Política de cookies.
'Iniciamos selenium
driver.Start "Chrome"
Application.Wait Now + TimeValue("00:00:05")

Política de cookies.

https://excelcute.com/vba-data-scraping-selenium/ 4/14
5/9/2021 Cómo hacer data scraping con VBA y Selenium - macros

Set ws = Nothing
Set wb = Nothing
driver.Close

End Sub

El módulo dará este resultado:

Chatear con Excel CUTE


Cómo abrir un sitio web en Google Chrome usandoresponde
Normalmente VBA en unos minutos
Hola, ¿en qué podemos ayudarte?
Una vez podamos acceder a Google Chrome usando VBA podremos empezar a incorporar el acceder
a un sitio web por medio de VBA. Esto facilitará la función get, mientras que la URL debe pasar con
Iniciar sesión
doble comillas en el atributo. Para entender esto mejor, el módulo en Messenger
debe verse de esta manera:

Sub data_scrapping() Continuar como invitado


Dim wb As Workbook, sh As Worksheet
Dim driver As New WebDriver
Al continuar como invitado, aceptas las Condiciones de
Dim rTable As Integer, cTable As Integer, i AsFacebook.
IntegerObtén información sobre cómo recopilamos,
Dim tr As Variant, th As Variant, t As Variantusamos y compartimos tus datos en la Política de datos,
así como el uso que hacemos de las cookies y
tecnologías similares en la Política de cookies.
'Variables de libro y hoja
Set wb = ThisWorkbook
Set ws = wb.Sheets(1)

' Variables Política


de fila y columna definidas
de cookies.

https://excelcute.com/vba-data-scraping-selenium/ 5/14
5/9/2021 Cómo hacer data scraping con VBA y Selenium - macros

rTable = 2
cTable = 1
i = 1

'Iniciamos selenium
driver.Start "Chrome"
driver.Get "https://excelcute.com/table-demo/"
Application.Wait Now + TimeValue("00:00:05")

Set ws = Nothing
Set wb = Nothing
driver.Close

End Sub

Presionaremos F5 para ejecutar el macro. La siguiente página web se abrirá en Google Chrome tal y
como se muestra:

Chatear con Excel CUTE


Normalmente responde en unos minutos

Hola, ¿en qué podemos ayudarte?

Iniciar sesión en Messenger

Continuar como invitado

Al continuar como invitado, aceptas las Condiciones de


Facebook. Obtén información sobre cómo recopilamos,
Con esto el macro de Excel está listo para empezar usamos
a realizar tareas de
y compartimos tusscraping.
datos en la El siguiente
Política paso
de datos,
nos mostraría cómo podemos extraer la información siasí aplicamos
como el usoSelenium
que hacemos y de
VBA.
las cookies y
tecnologías similares en la Política de cookies.

Cómo hacer data scraping de un sitio web usando VBA

Supongamos que el day trader quiere acceder a la información del sitio web a diario. Cada vez que
presione el botón, se extraerán los datos de mercado automáticamente a Excel. Del sitio web de
Política de cookies.

https://excelcute.com/vba-data-scraping-selenium/ 6/14
5/9/2021 Cómo hacer data scraping con VBA y Selenium - macros

arriba, sería necesario inspeccionar un elemento y observar cómo es que los datos están
estructurados. Para acceder al código fuente de HTML habrá que presionar CTRL + Shift + I.

<figure class="wp-block-table">
<table>
<thead>
<tr>
<th>a</th>
<th>b</th>
<th>c</th>
</tr>
</thead>
<tbody>
<tr>
<td>a1</td>
<td>b1</td>
<td>c1</td>
</tr>
<tr>
<td>a2</td>
<td>b2</td>
<td>c2</td>
Chatear con Excel CUTE
</tr>
Normalmente responde en unos minutos
<tr>
<td>a3</td> Hola, ¿en qué podemos ayudarte?

<td>b3</td>
<td>c3</td> Iniciar sesión en Messenger
</tr>
</tbody>
</table> Continuar como invitado
</figure>
Al continuar como invitado, aceptas las Condiciones de
Facebook. Obtén información sobre cómo recopilamos,
Tal y como se puede ver, los datos están estructurados
usamoscomo una solatustabla
y compartimos datosHTML. Por de
en la Política lo datos,
tanto, para
extraer todos los datos de la tabla HTML, se necesitaríaasídiseñar un que
como el uso macro quede
hacemos extraiga lay
las cookies
información de encabezado de la tabla HTML y la información
tecnologíascorrespondiente
similares en la Políticaasociada
de cookies.con la
tabla. Ahora habrá que seguir estos pasos:

Formular un ciclo «for» que se ejecute a través de la información de encabezado HTML como una colección. El
driver selenium tiene que encontrar la información de encabezado de la tabla HTML. Para hacer esto, vamos a

Política de cookies.

https://excelcute.com/vba-data-scraping-selenium/ 7/14
5/9/2021 Cómo hacer data scraping con VBA y Selenium - macros

utilizar los métodos FindElementByClass() y FindElementByTag() para hacer la función tal y como se muestra. El
módulo VBA se vería de la siguiente forma:

' Data scrapping de encabezados


For Each th In driver.FindElementByClass("wp-block-
table").FindElementByTag("thead").FindElementsByTag("tr")
i = 1
For Each t In th.FindElementsByTag("th")
ws.Cells(1, i).Value = t.Text
i = i + 1
Next t
Next th

Después, el driver selenium localizará la tabla de datos usando un acercamiento similar, por lo que
habrá que escribir el siguiente código:

' Data scrapping de filas


For Each tr In driver.FindElementByClass("wp-block-
table").FindElementByTag("tbody").FindElementsByTag("tr")
cTable = 1
For Each td In tr.FindElementsByTag("td")
Chatear
ws.Cells(rTable, cTable).Value = td.Text con Excel CUTE
Normalmente responde en unos minutos
cTable = cTable + 1
Next td Hola, ¿en qué podemos ayudarte?
rTable = rTable + 1
Next tr
Iniciar sesión en Messenger

Excel puede iniciarse mediante el atributo de rango de la hoja de Excel o a través de los atributos de
las celdas de la hoja de Excel. Para reducir la complejidad del script de como
Continuar VBA, la colección de datos es
invitado
iniciada a los atributos de las celdas de Excel de la hoja 1 presentes en el libro de trabajo. El atributo
de texto ayuda a obtener la información del texto puesta bajo la etiqueta HTML.
Al continuar como invitado, aceptas las Condiciones de
Facebook. Obtén información sobre cómo recopilamos,
Sub data_scrapping() usamos y compartimos tus datos en la Política de datos,
así como el uso que hacemos de las cookies y
Dim wb As Workbook, sh As Worksheet tecnologías similares en la Política de cookies.
Dim driver As New WebDriver
Dim rTable As Integer, cTable As Integer, i As Integer
Dim tr As Variant, th As Variant, t As Variant

'Variables de libro
Política y hoja
de cookies.

https://excelcute.com/vba-data-scraping-selenium/ 8/14
5/9/2021 Cómo hacer data scraping con VBA y Selenium - macros

Set wb = ThisWorkbook
Set ws = wb.Sheets(1)

' Variables de fila y columna definidas


rTable = 2
cTable = 1
i = 1

'Iniciamos selenium
driver.Start "Chrome"
driver.Get "https://excelcute.com/table-demo/"
Application.Wait Now + TimeValue("00:00:05")

' Data scrapping de encabezados


For Each th In driver.FindElementByClass("wp-block-
table").FindElementByTag("thead").FindElementsByTag("tr")
i = 1
For Each t In th.FindElementsByTag("th")
ws.Cells(1, i).Value = t.Text
i = i + 1
Next t
Next th
Chatear con Excel CUTE
Normalmente responde en unos minutos
' Data scrapping de encabezados
Hola, ¿en qué podemos ayudarte?
For Each tr In driver.FindElementByClass("wp-block-
table").FindElementByTag("tbody").FindElementsByTag("tr")
cTable = 1 Iniciar sesión en Messenger
For Each td In tr.FindElementsByTag("td")
ws.Cells(rTable, cTable).Value = td.Text
cTable = cTable + 1 Continuar como invitado
Next td
rTable = rTable + 1 Al continuar como invitado, aceptas las Condiciones de
Facebook. Obtén información sobre cómo recopilamos,
Next tr
usamos y compartimos tus datos en la Política de datos,
así como el uso que hacemos de las cookies y
Set ws = Nothing tecnologías similares en la Política de cookies.

Set wb = Nothing
driver.Close

End Sub
Política de cookies.

https://excelcute.com/vba-data-scraping-selenium/ 9/14
5/9/2021 Cómo hacer data scraping con VBA y Selenium - macros

Con lo cual el módulo de VBA se vería de la siguiente forma:

Chatear con Excel CUTE


Normalmente responde en unos minutos

Hola, ¿en qué podemos ayudarte?

Una vez el macro script esté listo, pasa y asigna la subrutina al botón de Excel y sal del módulo de
VBA. Cambiaremos el nombre del botón a «Actualizar» o cualquier nombre
Iniciar sesión enque sea adecuado. Para
Messenger
este ejemplo quedará como Actualizar:

Continuar como invitado

Al continuar como invitado, aceptas las Condiciones de


Facebook. Obtén información sobre cómo recopilamos,
usamos y compartimos tus datos en la Política de datos,
así como el uso que hacemos de las cookies y
Con click derecho, asignaremos la macro al botón con tecnologías
la opcionsimilares
«Asignar
en laMacro»
Política de cookies.

Política de cookies.

https://excelcute.com/vba-data-scraping-selenium/ 10/14
5/9/2021 Cómo hacer data scraping con VBA y Selenium - macros

Chatear con Excel CUTE


Normalmente responde en unos minutos

Hola, ¿en qué podemos ayudarte?

Iniciar sesión en Messenger

Presionaremos el botón para obtener los datos de salida. Continuar como invitado

Al continuar como invitado, aceptas las Condiciones de


Facebook. Obtén información sobre cómo recopilamos,
usamos y compartimos tus datos en la Política de datos,
así como el uso que hacemos de las cookies y
tecnologías similares en la Política de cookies.

Política de cookies.

https://excelcute.com/vba-data-scraping-selenium/ 11/14
5/9/2021 Cómo hacer data scraping con VBA y Selenium - macros

Ahora solo quedará comparar los resultados en Excel con los resultados de Google Chrome para
saber que todo ha salido bien.

Chatear con Excel CUTE


Normalmente responde en unos minutos

Cualquier duda nos leemos abajo. Hola, ¿en qué podemos ayudarte?

+1 Iniciar sesión en Messenger

Comparte la información más cute:


Continuar como invitado
 Facebook  WhatsApp  LinkedIn
Al continuar como invitado, aceptas las Condiciones de
Facebook. Obtén información sobre cómo recopilamos,
Relacionado usamos y compartimos tus datos en la Política de datos,
así como el uso que hacemos de las cookies y
tecnologías similares en la Política de cookies.

Política de cookies.

https://excelcute.com/vba-data-scraping-selenium/ 12/14
5/9/2021 Cómo hacer data scraping con VBA y Selenium - macros

Enviar Whatsapp desde VBA Excel. Mejora el desempeño de tus macros Ejemplo de Modulo de Clase VBA
diciembre 30, 2019 VBA en Excel con estos 9 tips mayo 21, 2020
En «macros» abril 9, 2020 En «macros»
En «macros»

 Power Automate: Subir archivo desde Microsoft Power Automate: ¿Cómo revisar si una propiedad existe en el
Forms objeto? 

Deja una respuesta


Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Comentario

Chatear con Excel CUTE


Normalmente responde en unos minutos

Hola, ¿en qué podemos ayudarte?

Iniciar sesión en Messenger

Continuar como invitado


Nombre *

Al continuar como invitado, aceptas las Condiciones de


Facebook. Obtén información sobre cómo recopilamos,
usamos y compartimos tus datos en la Política de datos,
así como el uso que hacemos de las cookies y
Correo electrónico *
tecnologías similares en la Política de cookies.

Web
Política de cookies.

https://excelcute.com/vba-data-scraping-selenium/ 13/14
5/9/2021 Cómo hacer data scraping con VBA y Selenium - macros

Publicar el comentario

Copyright © 2020 EXCEL CUTE. Aviso de privacidad.


¿Necesitas ayuda? Contactame

Chatear con Excel CUTE


Normalmente responde en unos minutos

Hola, ¿en qué podemos ayudarte?

Iniciar sesión en Messenger

Continuar como invitado

Al continuar como invitado, aceptas las Condiciones de


Facebook. Obtén información sobre cómo recopilamos,
usamos y compartimos tus datos en la Política de datos,
así como el uso que hacemos de las cookies y
tecnologías similares en la Política de cookies.

Política de cookies.

https://excelcute.com/vba-data-scraping-selenium/ 14/14

También podría gustarte