Tutorial de Excel de Selenium VBA: ejemplo de raspado web de Chrome

¿Qué es el Data Scraping usando selenio?

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

¿Cómo preparar la macro de Excel antes de realizar Data Scraping 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

Following 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 a la biblioteca de tipos de Selenium. el siguientewing Se debe hacer referencia a las bibliotecas en el módulo, ya que ayuda a abrir Google Chrome y facilita el desarrollo de scripts 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.

¿Cómo abrir Google Chrome usando VBA?

Estos son 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 following seria el codigo.

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: –

Abra Google Chrome usando VBA

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

Una vez que pueda acceder a Google Chrome usando VBA, el siguiente paso sería incorporar el acceso a un sitio web usando VBA. Esto se ve facilitado por la función get en la que la URL debe pasar como double comillas en el atributo.

Sigue el siguientewing pasos como se muestra

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

Abrir un sitio web en Google Chrome usando VBA

Presione F5 para ejecutar la macro.

El following La página web se abriría 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 un sitio web en Google Chrome usando VBA

Ahora la macro de Excel está lista para realizar las tareas de raspado. El siguiente paso mostraría cómo se puede extraer la información aplicando selenio 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 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 extraiga la información del encabezado de la tabla HTML y los datos correspondientes asociados con la tabla. Realiza el siguientewing tareas como se muestran: –

Paso 1) Formule un bucle for que recorra la información del encabezado HTML como una colección. El controlador de selenio tiene que encontrar la información del encabezado de la tabla HTML. Para hacer esto, utilizamos el método 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 selenio ubicaría los datos de la tabla utilizando un enfoque similar, como se mencionó anteriormente. Tienes que escribir lo siguiente.wing 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 Rango de la hoja de Excel o mediante el atributo de celdas de la hoja de Excel. Para reducir la complexidad del script VBA, los datos de la colección se inicializan en el atributo de celdas de Excel de la hoja 2 presente en el libro de trabajo. Además, el atributo de texto ayuda a colocar la información de texto debajo de 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) Compara los resultados en excel con los resultados de google chrome

Extraiga información del sitio web utilizando VBA

Resumen

  • Selenium se puede clasificar como la herramienta de automatización que facilita la extracción de información de las páginas web HTML para realizar la extracción 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 scraping se realiza a través de selenium, ofrece soporte para múltiples navegadores.
  • En otras palabras, la scraper puede realizar tareas similares de raspar Firefox, Internet Explorer también.