Selenium Tutorial de VBA Excel: ejemplo de Chrome Web Scraping

¿Qué es el raspado de datos usando selenio?

Selenium Se puede clasificar como la herramienta de automatización que facilita el raspado de información de las páginas web HTML para realizar el raspado web utilizando Google Chrome.

Cómo preparar la macro de Excel antes de realizar el raspado de datos usando Selenium?

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.

Prepare la macro de Excel antes de realizar la extracción de datos

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

Prepare la macro de Excel antes de realizar la extracción de datos

Paso 3) Insertar un nuevo módulo.

Prepare la macro de Excel antes de realizar la extracción de datos

Paso 4) Inicialice una nueva subrutina y asígnele el nombre test2.

Sub test2()
End sub

Los siguientes serían los resultados en el módulo: –

Prepare la macro de Excel antes de realizar la extracción de datos

Paso 5) Acceda a la opción de referencia en la pestaña de herramientas y haga referencia Selenium Biblioteca de tipos. Las siguientes bibliotecas deben estar relacionadas con el módulo, ya que ayudan a abrir Google Chrome y facilitan el desarrollo de secuencias de comandos de macros.

Prepare la macro de Excel antes de realizar la extracción de datos

Ahora el archivo Excel está listo para interactuar con Internet Explorer. Los próximos pasos serían incorporar un script de macro que facilitaría la extracción de datos en HTML.

Como abrir Google Chrome usando VBA?

Aquí están los pasos para abrir. Google Chrome usando VBA

Paso 1) Declare e inicialice las variables en la subrutina como se muestra a continuación

Sub test2()
Dim driver as new webdriver
Dim rowc, cc, columnC as integer

Paso 2) Para abrir Google Chrome usando Selenium y VBA, escriba driver.start “chrome” y presione F5.

El siguiente sería el código.

Sub test2()
Dim driver as new webdriver
Dim rowc, cc, columnC as integer
Driver.start "Chrome"
Application.Wait Now+Timevalue("00:00:20")
End sub

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

Abierto Google Chrome Usando VBA

¿Cómo abrir un sitio web en Google Chrome usando VBA?

Una vez que pueda acceder a Google Chrome mediante VBA, el siguiente paso será incorporar el acceso a un sitio web mediante VBA. Esto se facilita mediante la función get, en la que la URL debe pasarse entre comillas dobles en el atributo.

Siga los siguientes pasos como se muestra

El módulo tendría el siguiente aspecto: –

Abrir sitio web en Google Chrome Usando VBA

Presione F5 para ejecutar la macro.

La siguiente página web se abrirá en Google Chrome como se muestra

Sub test2()
Dim driver as new webdriver
Dim rowc, cc, columnC as integer
Driver.start "Chrome"
Driver.get "http://demo.guru99.com/test/web-table-element.php"
Application.Wait Now+Timevalue("00:00:20")
End sub

Abrir sitio web en Google Chrome Usando VBA

Ahora la macro de Excel está lista para realizar las tareas de extracción. El siguiente paso mostrará cómo se puede extraer la información aplicando Selenium y 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. 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: –

Como se puede ver, los datos están estructurados como una única tabla HTML. Por lo tanto, para extraer todos los datos de la tabla HTML, se requerirá el diseño de una macro que extraiga la información del encabezado de la tabla HTML y los datos correspondientes asociados con la tabla. Realice las siguientes tareas como se muestra: –

Paso 1) Formule un bucle for que recorra la información del encabezado HTML como una colección. El controlador de Selenium tiene que encontrar la información del encabezado de la tabla HTML. Para ello, utilizamos los métodos FindElementByClass() y FindElementByTag() para realizar la tarea como se muestra

El módulo VBA tendría el siguiente aspecto: –

Sub test2()
Dim driver As New WebDriver
Dim rowc, cc, columnC As Integer
rowc = 2
Application.ScreenUpdating = False
driver.Start "chrome"
driver.Get "http://demo.guru99.com/test/web-table-element.php"
For Each th In driver.FindElementByClass("dataTable").FindElementByTag("thead").FindElementsByTag("tr")
cc = 1
For Each t In th.FindElementsByTag("th")
Sheet2.Cells(1, cc).Value = t.Text
cc = cc + 1
Next t
Next th

Paso 2) A continuación, el controlador de Selenium buscará los datos de la tabla utilizando un enfoque similar al mencionado anteriormente. Debe escribir el siguiente código:

Sub test2()
Dim driver As New WebDriver
Dim rowc, cc, columnC As Integer
rowc = 2
Application.ScreenUpdating = False
driver.Start "chrome"
driver.Get"http://demo.guru99.com/test/web-table-element.php"
For Each th In driver.FindElementByClass("dataTable").FindElementByTag("thead").FindElementsByTag("tr")
cc = 1
For Each t In th.FindElementsByTag("th")
Sheet2.Cells(1, cc).Value = t.Text
cc = cc + 1
Next t
Next th
For Each tr In driver.FindElementByClass("dataTable").FindElementByTag("tbody").FindElementsByTag("tr")
columnC = 1
For Each td In tr.FindElementsByTag("td")
Sheet2.Cells(rowc, columnC).Value = td.Text
columnC = columnC + 1
Next td
rowc = rowc + 1
Next tr
Application.Wait Now + TimeValue("00:00:20")
End Sub

El módulo vba tendría el siguiente aspecto: –

El Excel se puede inicializar mediante el atributo Range de la hoja de Excel o mediante el atributo cells de la hoja de Excel. Para reducir la complejidad del script VBA, los datos de la colección se inicializan en el atributo cells de Excel de la hoja 2 presente en el libro de trabajo. Además, el atributo text ayuda a colocar la información de texto bajo la etiqueta HTML.

Sub test2()
Dim driver As New WebDriver
Dim rowc, cc, columnC As Integer
rowc = 2
Application.ScreenUpdating = False
driver.Start "chrome"
driver.Get"http://demo.guru99.com/test/web-table-element.php"
For Each th In driver.FindElementByClass("dataTable").FindElementByTag("thead").FindElementsByTag("tr")
cc = 1
For Each t In th.FindElementsByTag("th")
Sheet2.Cells(1, cc).Value = t.Text
cc = cc + 1
Next t
Next th
For Each tr In driver.FindElementByClass("dataTable").FindElementByTag("tbody").FindElementsByTag("tr")
columnC = 1
For Each td In tr.FindElementsByTag("td")
Sheet2.Cells(rowc, columnC).Value = td.Text
columnC = columnC + 1
Next td
rowc = rowc + 1
Next tr
Application.Wait Now + TimeValue("00:00:20")
End Sub

El módulo vba tendría el siguiente aspecto: –

Extraiga información del sitio web utilizando VBA

Paso 3) 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 actualización.

Extraiga información del sitio web utilizando VBA

Paso 4) Presione el botón de actualización para obtener el resultado mencionado a continuación

Extraiga información del sitio web utilizando VBA

Paso 5) Comparar los resultados en Excel con los resultados de Google Chrome

Extraiga información del sitio web utilizando VBA

Resum

  • Selenium Se puede clasificar como la herramienta de automatización que facilita el raspado de información de las páginas web HTML para realizar el raspado web utilizando Google Chrome.
  • El raspado de Internet debe realizarse con cuidado.
  • Normalmente va en contra de los términos del sitio web extraer información.
  • Cuando el raspado se realiza a través de Selenium, se ofrece compatibilidad con múltiples navegadores.
  • En otras palabras, el raspador puede realizar tareas similares a las de raspar. Firefox, Internet Explorer también.