Selenio

Localización de elementos mediante selectores CSS con selenio

Localización de elementos mediante selectores CSS con selenio
Ubicar y seleccionar elementos de la página web es la clave para el web scraping con Selenium. Para localizar y seleccionar elementos de la página web, puede utilizar selectores CSS en Selenium.En este artículo, le mostraré cómo ubicar y seleccionar elementos de páginas web usando selectores CSS en Selenium con la biblioteca Selenium python. Entonces empecemos.

Requisitos previos:

Para probar los comandos y ejemplos de este artículo, debe tener,

1) Una distribución de Linux (preferiblemente Ubuntu) instalada en su computadora.
2) Python 3 instalado en su computadora.
3) PIP 3 instalado en su computadora.
4) Python virtualenv paquete instalado en su computadora.
5) Navegadores web Mozilla Firefox o Google Chrome instalados en su computadora.
6) Debe saber cómo instalar el controlador Firefox Gecko o el controlador web de Chrome.

Para cumplir con los requisitos 4, 5 y 6, lea mi artículo Introducción al selenio con Python 3 en Linuxhint.com.

Puede encontrar muchos artículos sobre otros temas en LinuxHint.com. Asegúrese de revisarlos si necesita ayuda.

Configuración de un directorio de proyectos:

Para mantener todo organizado, cree un nuevo directorio de proyectos selenium-css-selector / como sigue:

$ mkdir -pv selenium-css-selector / drivers

Navega al selenium-css-selector / directorio del proyecto de la siguiente manera:

$ cd selenium-css-selector /

Cree un entorno virtual de Python en el directorio del proyecto de la siguiente manera:

$ virtualenv .venv

Active el entorno virtual de la siguiente manera:

$ fuente .venv / bin / activar

Instale la biblioteca Selenium Python usando PIP3 de la siguiente manera:

$ pip3 instalar selenium

Descargue e instale todos los controladores web necesarios en el conductores / directorio del proyecto. He explicado el proceso de descarga e instalación de controladores web en mi artículo Introducción al selenio con Python 3. Si necesita ayuda, busque en LinuxHint.com para ese articulo.

Obtenga CSS Selector usando Chrome Developer Tool:

En esta sección, le mostraré cómo encontrar el selector de CSS del elemento de la página web que desea seleccionar con Selenium utilizando la herramienta de desarrollo incorporada del navegador web Google Chrome.

Para obtener el selector de CSS con el navegador web Google Chrome, abra Google Chrome y visite el sitio web del que desea extraer los datos. Luego, presione el botón derecho del mouse (RMB) en un área vacía de la página y haga clic en Inspeccionar para abrir el Herramienta para desarrolladores de Chrome.

También puede presionar + Cambiar + I para abrir el Herramienta para desarrolladores de Chrome.

Herramienta para desarrolladores de Chrome debe ser abierto.

Para encontrar la representación HTML de su elemento de página web deseado, haga clic en el Inspeccionar() icono como se marca en la captura de pantalla a continuación.

Luego, coloque el cursor sobre el elemento de la página web que desee y presione el botón izquierdo del mouse (LMB) para seleccionarlo.

La representación HTML del elemento web que ha seleccionado se resaltará en el Elementos pestaña de Herramienta para desarrolladores de Chrome como puede ver en la captura de pantalla a continuación.

Para obtener el selector de CSS de su elemento deseado, seleccione el elemento de la Elementos pestaña de Herramienta para desarrolladores de Chrome y haga clic derecho (RMB) en él. Luego, seleccione Dupdo > Selector de copias como se marca en la captura de pantalla a continuación.

He pegado el selector de CSS en un editor de texto. El selector de CSS se ve como se muestra en la captura de pantalla a continuación.

Obtenga CSS Selector usando la herramienta de desarrollo de Firefox:

En esta sección, le mostraré cómo encontrar el selector de CSS del elemento de la página web que desea seleccionar con Selenium utilizando la herramienta de desarrollo incorporada del navegador web Mozilla Firefox.

Para obtener el selector de CSS con el navegador web Firefox, abra Firefox y visite el sitio web del que desea extraer los datos. Luego, presione el botón derecho del mouse (RMB) en un área vacía de la página y haga clic en Inspeccionar elemento (Q) para abrir el Herramienta de desarrollo de Firefox.

Herramienta de desarrollo de Firefox debe ser abierto.

Para encontrar la representación HTML de su elemento de página web deseado, haga clic en el Inspeccionar() icono como se marca en la captura de pantalla a continuación.

Luego, coloque el cursor sobre el elemento de la página web que desee y presione el botón izquierdo del mouse (LMB) para seleccionarlo.

La representación HTML del elemento web que ha seleccionado se resaltará en el Inspector pestaña de Herramienta de desarrollo de Firefox como puede ver en la captura de pantalla a continuación.

Para obtener el selector de CSS de su elemento deseado, seleccione el elemento de la Inspector pestaña de Herramienta de desarrollo de Firefox y haga clic derecho (RMB) en él. Luego, seleccione Dupdo > Selector de CSS como se marca en la captura de pantalla a continuación.

El selector de CSS de su elemento deseado debería verse así.

Extracción de datos usando CSS Selector con Selenium:

En esta sección, le mostraré cómo seleccionar elementos de la página web y extraer datos de ellos usando selectores CSS con la biblioteca Selenium Python.

Primero, cree una nueva secuencia de comandos de Python ex00.py y escriba las siguientes líneas de códigos.

desde el controlador web de importación de selenio
de selenio.webdriver.común.claves importar claves
de selenio.webdriver.común.por importación Por
opciones = webdriver.ChromeOptions ()
opciones.headless = Verdadero
browser = webdriver.Chrome (ruta_ejecutable = "./ drivers / chromedriver ", opciones = opciones)
navegador.get ("https: // www.unixtimestamp.com / ")
timestamp = navegador.find_element_by_css_selector ('h3.texto-peligro: n-ésimo niño (3) ')
print ('Marca de tiempo actual:% s'% (marca de tiempo.texto.dividir (") [0]))
navegador.cerca()

Una vez que haya terminado, guarde el ex00.py Secuencia de comandos de Python.

La línea 1-3 importa todos los componentes de selenio necesarios.

La línea 5 crea un objeto Opciones de Chrome y la línea 6 habilita el modo sin cabeza para el navegador web Chrome.

Line 8 crea un Chrome navegador objeto usando el conductor cromado binario del conductores / directorio del proyecto.

La línea 10 le dice al navegador que cargue el sitio web unixtimestamp.com.

La línea 12 busca el elemento que tiene los datos de la marca de tiempo de la página usando el selector CSS y lo almacena en el marca de tiempo variable.

La línea 13 analiza los datos de la marca de tiempo del elemento y los imprime en la consola.

Así es como la estructura HTML de los datos de marca de tiempo de UNIX en unixtimestamp.com parece.

La línea 14 cierra el navegador.

Ejecute la secuencia de comandos de Python ex00.py como sigue:

$ python3 ex00.py

Como puede ver, los datos de la marca de tiempo se imprimen en la pantalla.

Aquí, he usado el navegador.find_element (Por, selector) método.

Como estamos usando selectores CSS, el primer parámetro será Por.CSS_SELECTOR y el segundo parámetro será el propio selector de CSS.

En vez de navegador.find_element () método, también puede utilizar navegador.find_element_by_css_selector (selector) método. Este método solo necesita un selector de CSS para funcionar. El resultado será el mismo.

La navegador.find_element () y navegador.find_element_by_css_selector () Los métodos se utilizan para buscar y seleccionar un solo elemento de la página web. Si desea buscar y seleccionar varios elementos usando los selectores CSS, entonces debe usar navegador.find_elements () y navegador.find_elements_by_css_selector () métodos.

La navegador.find_elements () El método toma los mismos argumentos que el navegador.find_element () método.

La navegador.find_elements_by_css_selector () El método toma el mismo argumento que el navegador.find_element_by_css_selector () método.

Veamos un ejemplo de extracción de una lista de nombres usando selectores CSS del generador de nombres aleatorios.info con selenio.

Como puede ver, la lista desordenada tiene el nombre de la clase lista de nombres. Entonces, podemos usar el selector de CSS .nameList li para seleccionar todos los nombres de la página web.

Veamos un ejemplo de selección de múltiples elementos de la página web usando selectores CSS.

Crea una nueva secuencia de comandos de Python ex01.py y escriba las siguientes líneas de códigos en él.

desde el controlador web de importación de selenio
de selenio.webdriver.común.claves importar claves
de selenio.webdriver.común.por importación Por
opciones = webdriver.ChromeOptions ()
opciones.headless = Verdadero
browser = webdriver.Chrome (ruta_ejecutable = "./ drivers / chromedriver ", opciones = opciones)
navegador.get ("http: // generador-de-nombres-aleatorios.info / ")
nombres = navegador.find_elements (Por.CSS_SELECTOR, '.nameList li ')
por nombre en nombres:
imprimir (nombre.texto)
navegador.cerca()

Una vez que haya terminado, guarde el ex01.py Secuencia de comandos de Python.

La línea 1-8 es la misma que en ex00.py Secuencia de comandos de Python. Entonces, no voy a volver a explicarlos aquí.

La línea 10 le dice al navegador que cargue el generador de nombres aleatorios del sitio web.info.

La línea 12 selecciona la lista de nombres usando el navegador.find_elements () método. Este método usa el selector de CSS .nameList li para encontrar la lista de nombres. Luego, la lista de nombres se almacena en el nombres variable.

En las líneas 13 y 14, un por El bucle se usa para iterar a través del nombres enumerar e imprimir los nombres en la consola.

La línea 16 cierra el navegador.

Ejecute la secuencia de comandos de Python ex01.py como sigue:

$ python3 ex01.py

Como puede ver, los nombres se extraen de la página web y se imprimen en la consola.

En lugar de usar el navegador.find_elements () método, también puede utilizar el navegador.find_elements_by_css_selector () el método como antes. Este método solo necesita un selector de CSS para funcionar. El resultado será el mismo.

Conceptos básicos de los selectores de CSS:

Siempre puede encontrar el selector de CSS de un elemento de página web utilizando la herramienta para desarrolladores de Firefox o el navegador web Chrome. Es posible que este selector de CSS generado automáticamente no sea lo que desea. A veces, es posible que deba escribir su selector de CSS.

En esta sección, voy a hablar sobre los conceptos básicos de los selectores de CSS para que pueda comprender qué está seleccionando un determinado selector de CSS de una página web y escribir su selector de CSS personalizado si es necesario.

Si desea seleccionar un elemento de la página web usando el ID mensaje, el selector de CSS será #mensaje.

El selector de CSS .verde seleccionará un elemento usando un nombre de clase verde.

Si desea seleccionar un elemento (clase msg) dentro de otro elemento (clase envase), el selector de CSS será .envase .msg

El selector de CSS .msg.éxito seleccionará el elemento que tiene dos clases CSS msg y éxito.

Para seleccionar todos los pag etiquetas, puede utilizar el selector de CSS pag.

Para seleccionar solo el pag etiquetas dentro del div etiquetas, puede utilizar el selector de CSS div p

Para seleccionar el pag etiquetas que son los hermanos directos de la div etiquetas, puede utilizar el selector de CSS div> p

Para seleccionar todos los lapso y pag etiquetas, puede utilizar el selector de CSS p, lapso

Para seleccionar el pag etiqueta inmediatamente después de la div etiqueta, puede utilizar el selector de CSS div + p

Para seleccionar el pag etiqueta después de la div etiqueta, puede utilizar el selector de CSS div ~ p

Para seleccionar todos los pag etiquetas que tienen el nombre de la clase msg, puedes usar el selector de CSS pag.msg

Para seleccionar todos los lapso etiquetas que tienen el nombre de la clase msg, puedes usar el selector de CSS lapso.msg

Para seleccionar todos los elementos que tienen el atributo href, puedes usar el selector de CSS [href]

Para seleccionar el elemento que tiene el atributo nombre y el valor de la nombre atributo es nombre de usuario, puedes usar el selector de CSS [nombre = ”nombre de usuario”]

Para seleccionar todos los elementos que tienen el atributo alt y el valor de la alt atributo que contiene la subcadena vscode, puedes usar el selector de CSS [alt ~ = ”vscode”]

Para seleccionar todos los elementos que tienen la href atributo y el valor del href el atributo comienza con la cadena https, puedes usar el selector de CSS [href ^ = ”https”]

Para seleccionar todos los elementos que tienen la href atributo y el valor del href atributo que termina con la cadena .com, puedes usar el selector de CSS [href $ = ”.com ”]

Para seleccionar todos los elementos que tienen la href atributo y el valor del href atributo tiene la subcadena Google, puedes usar el selector de CSS [href * = ”google”]

Si desea seleccionar el primero li etiqueta dentro de la ul etiqueta, puede utilizar el selector de CSS ul li: primer hijo

Si desea seleccionar el primero li etiqueta dentro de la ul etiqueta, también puede utilizar el selector de CSS ul li: enésimo hijo (1)

Si desea seleccionar el último li etiqueta dentro de la ul etiqueta, puede utilizar el selector de CSS ul li: último hijo

Si desea seleccionar el último li etiqueta dentro de la ul etiqueta, también puede utilizar el selector de CSS ul li: enésimo último hijo (1)

Si desea seleccionar el segundo li etiqueta dentro de la ul etiqueta comenzando desde el principio, puede usar el selector de CSS ul li: enésimo hijo (2)

Si desea seleccionar el tercer li etiqueta dentro de la ul etiqueta comenzando desde el principio, puede usar el selector de CSS ul li: enésimo hijo (3)

Si desea seleccionar el segundo li etiqueta dentro de la ul etiqueta comenzando desde el final, puede usar el selector de CSS ul li: enésimo último hijo (2)

Si desea seleccionar el tercer li etiqueta dentro de la ul etiqueta comenzando desde el final, puede usar el selector de CSS ul li: enésimo último hijo (3)

Estos son los selectores de CSS más comunes. Te encontrarás usando estos casi en todos los proyectos de Selenium. Hay muchos más selectores de CSS. Puede encontrar una lista de todos ellos en w3schools.com Referencia de selectores CSS.

Conclusión:

En este artículo, he mostrado cómo ubicar y seleccionar elementos de una página web usando selectores CSS con Selenium. También he discutido los conceptos básicos de los selectores de CSS. Debería poder utilizar los selectores de CSS cómodamente para sus proyectos de Selenium.

Puertos de código abierto de motores de juegos comerciales
Las recreaciones gratuitas, de código abierto y de motores de juegos multiplataforma se pueden usar para jugar títulos de juegos antiguos y también al...
Los mejores juegos de línea de comandos para Linux
La línea de comandos no es solo su mayor aliado cuando usa Linux, también puede ser la fuente de entretenimiento porque puede usarla para jugar muchos...
Las mejores aplicaciones de mapeo de gamepad para Linux
Si te gusta jugar juegos en Linux con un gamepad en lugar de un sistema de entrada de teclado y mouse típico, hay algunas aplicaciones útiles para ti....