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.
Paso 2) Seleccione la opciรณn Visual Basic en la cinta Desarrollador.
Paso 3) Insertar un nuevo mรณdulo.
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: โ
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.
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: โ
ยฟ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: โ
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 "https://demo.guru99.com/test/web-table-element.php"
Application.Wait Now+Timevalue("00:00:20")
End sub
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 "https://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"https://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"https://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: โ
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.
Paso 4) Presione el botรณn de actualizaciรณn para obtener el resultado mencionado a continuaciรณn
Paso 5) Comparar los resultados en Excel con los resultados de Google Chrome
Resumen
- 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.












