El selenio se puede clasificar como la herramienta de automatización que facilita el raspado de información de las páginas web HTML para realizar raspado web utilizando Google Chrome.
En este tutorial, aprenderá:
¿Qué es el raspado de datos con selenio?
¿Cómo preparar la macro de Excel antes de realizar el raspado de datos con selenio?
¿Cómo abrir Google Chrome usando VBA?
¿Cómo abrir un sitio web en Google Chrome usando VBA?
¿Cómo extraer información del sitio web usando VBA?
¿Cómo preparar la macro de Excel antes de realizar el raspado de datos con selenio?
Hay ciertos requisitos previos que deben realizarse 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 de desarrollador de Excel.
Paso 2) Seleccione la opción Visual Basic en la cinta Desarrollador.
Paso 3) Inserte un nuevo módulo.
Paso 4) Inicialice una nueva subrutina y asígnele el nombre test2.
Subprueba2 ()Fin 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 a la biblioteca de tipos de selenio. Las siguientes bibliotecas deben ser referenciadas al módulo, ya que ayuda a abrir Google Chrome y facilita el desarrollo de secuencias de comandos de macros.
Ahora el archivo de Excel está listo para interactuar con Internet Explorer. Los siguientes pasos serían incorporar una secuencia de comandos de macro que facilitaría el raspado de datos en HTML.
¿Cómo 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
Subprueba2 ()Atenuar el controlador como nuevo controlador webDim rowc, cc, columnC como entero
Paso 2) Para abrir google chrome usando selenium y VBA, escribe driver.start "chrome" y presiona F5 .
El siguiente sería el código.
Subprueba2 ()Atenuar el controlador como nuevo controlador webDim rowc, cc, columnC como enteroDriver.start "Chrome"Aplicación.Espera ahora + valor de tiempo ("00:00:20")Fin 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 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 comillas dobles en el atributo.
Siga los siguientes pasos como se muestra
El módulo se vería de la siguiente manera: -
Presione F5 para ejecutar la macro.
La siguiente página web se abriría en google chrome como se muestra
Subprueba2 ()Atenuar el controlador como nuevo controlador webDim rowc, cc, columnC como enteroDriver.start "Chrome"Driver.get "http://demo.guru99.com/test/web-table-element.php"Aplicación.Espera ahora + valor de tiempo ("00:00:20")Fin sub
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?
Suponga que el operador diario desea acceder a los datos del sitio web a diario. Cada vez que el trader diario presiona el botón, haga clic en el botón, debe extraer automáticamente los datos del mercado a Excel.
Desde la web anterior, sería necesario inspeccionar un elemento y observar cómo se estructuran los datos. Acceda al siguiente código fuente de HTML presionando control + Shift + I
Empresa
Grupo
Cierre previo (Rs)
Precio actual (Rs)
% de cambio
El código fuente sería el siguiente: -
Como puede verse, 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. Realice las siguientes tareas como se muestra: -
Paso 1) Formule un bucle for que se ejecute a través de 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 se vería de la siguiente manera: -
Subprueba2 ()Controlador atenuado como nuevo WebDriverDim rowc, cc, columnC como enterofilac = 2Application.ScreenUpdating = Falsocontrolador. Inicie "chrome"driver.Obtenga "http://demo.guru99.com/test/web-table-element.php"Para cada th En driver.FindElementByClass ("dataTable"). FindElementByTag ("thead"). FindElementsByTag ("tr")cc = 1Para cada t en th.FindElementsByTag ("th")Sheet2.Cells (1, cc) .Value = t.Textcc = cc + 1Siguiente tSiguiente 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 el siguiente código: -
Subprueba2 ()Controlador atenuado como nuevo WebDriverDim rowc, cc, columnC como enterofilac = 2Application.ScreenUpdating = Falsocontrolador. Inicie "chrome"driver.Obtenga "http://demo.guru99.com/test/web-table-element.php"Para cada th En driver.FindElementByClass ("dataTable"). FindElementByTag ("thead"). FindElementsByTag ("tr")cc = 1Para cada t en th.FindElementsByTag ("th")Sheet2.Cells (1, cc) .Value = t.Textcc = cc + 1Siguiente tSiguiente thPara cada tr En driver.FindElementByClass ("dataTable"). FindElementByTag ("tbody"). FindElementsByTag ("tr")columnC = 1Para cada td en tr.FindElementsByTag ("td")Sheet2.Cells (rowc, columnC) .Value = td.TextcolumnaC = columnaC + 1Siguiente tdfilac = filac + 1Siguiente trApplication.Wait Now + TimeValue ("00:00:20")End Sub
El módulo vba se vería de la siguiente manera: -
Excel se puede inicializar mediante el atributo Range de la hoja de Excel o mediante el atributo de celdas de la hoja de Excel. Para reducir la complejidad 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.
Subprueba2 ()Controlador atenuado como nuevo WebDriverDim rowc, cc, columnC como enterofilac = 2Application.ScreenUpdating = Falsocontrolador. Inicie "chrome"driver.Obtenga "http://demo.guru99.com/test/web-table-element.php"Para cada th En driver.FindElementByClass ("dataTable"). FindElementByTag ("thead"). FindElementsByTag ("tr")cc = 1Para cada t en th.FindElementsByTag ("th")Sheet2.Cells (1, cc) .Value = t.Textcc = cc + 1Siguiente tSiguiente thPara cada tr En driver.FindElementByClass ("dataTable"). FindElementByTag ("tbody"). FindElementsByTag ("tr")columnC = 1Para cada td en tr.FindElementsByTag ("td")Sheet2.Cells (rowc, columnC) .Value = td.TextcolumnaC = columnaC + 1Siguiente tdfilac = filac + 1Siguiente trApplication.Wait Now + TimeValue ("00:00:20")End Sub
El módulo vba se vería de la siguiente manera: -
Paso 3) 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 actualización o cualquier nombre adecuado que pueda inicializarse en él. 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) Compare los resultados en Excel con los resultados de Google Chrome
Resumen:
El selenio se puede clasificar como la herramienta de automatización que facilita el raspado de información de las páginas web HTML para realizar raspado web utilizando Google Chrome.
El raspado en Internet debe realizarse con cuidado.
Normalmente, es contrario a los términos del sitio web extraer información.
Cuando el raspado se realiza a través de selenio, ofrece compatibilidad con varios navegadores.
En otras palabras, el raspador puede realizar tareas similares de raspado a través de Firefox, Internet Explorer también.