Selenio

Automatización del navegador con selenio (Python)

Automatización del navegador con selenio (Python)
SELENIO es una herramienta de código abierto y basada en la web que se utiliza para controlar el navegador web a través de muchos lenguajes de programación. Es una herramienta de terceros y está disponible para muchos lenguajes de programación (p.gramo. Java, Python, C #, PHP, etc.). Tiene el soporte para casi todos los navegadores. En este tutorial, veremos cómo usar Selenium con Python porque Python proporciona un entorno cómodo para usar esta herramienta. La API de Selenium para Python permite que su programa controle directamente su navegador de manera similar a como lo hace un humano. Puede abrir nuevas pestañas para usted, completar su información, enviar formularios, hacer clic en diferentes enlaces y otras acciones similares. Aquí veremos cómo automatizamos nuestro navegador web usando selenium con Python.

Instalación de selenio

Antes de usar SELENIO módulo en python, tenemos que instalarlo. Ejecute el siguiente comando en la terminal para instalarlo.

pip instalar selenio

O

pip3 instalar selenio

Esto instalará SELENIO módulo y ahora está listo para usar.

Controladores web

Antes de automatizar el navegador web con el módulo SELENIUM, se requiere el controlador web del navegador elegido. Para automatizar el navegador Chrome, debemos tener el controlador web Chrome. La ruta, donde se coloca el archivo del controlador web, se pasa como argumento. El controlador web interactúa con el navegador web a través de un protocolo. Vaya al siguiente enlace para descargar controladores web de diferentes navegadores.

https: // www.seleniumhq.org / download /

Empezando

Después de instalar los módulos requeridos, puede abrir la CLI de Python y comenzar a jugar con su navegador. Así que primero importemos webdriver y otros módulos, estos módulos y clases permitirán que su programa Python envíe pulsaciones de teclas y otra información a su navegador.

C: \ Usuarios \ Usama Azad> python
Python 3.6.4 (v3.6.4: d48eceb, 19 de diciembre de 2017, 06:54:40) [MSC v.1900 64 bits (AMD64)] en win32
Escriba "ayuda", "derechos de autor", "créditos" o "licencia" para obtener más información.
>>> desde el controlador web de importación de selenio
>>> de selenio.webdriver.común.claves importar claves
#ruta a sus controladores de Chrome
>>> controlador = webdriver.Chrome ('C: \ chromedriver')

Esto abrirá una nueva ventana del navegador Chrome para ti. Ahora puede obtener selenium para ir a cualquier sitio web usando .método get (). Este método abre el sitio web y esperará a que se cargue, luego puede ingresar su próximo comando.

>>> conductor.get ("https: // www.Facebook.com ")

Cómo buscar elementos en una página web

Podemos encontrar un elemento específico en una página web siguiendo el método.

Localización de elementos usando selenio

Para localizar elementos en una página web usamos 'find_element'método. Los siguientes son los 'find_element'métodos disponibles en SELENIO.

Al usar los métodos anteriores, podemos ubicar un elemento en una página web y usarlo en nuestro código de automatización.

Hacer clic en diferentes elementos de la página web

El método click () en selenio se puede usar para hacer clic en diferentes enlaces y elementos de botón que encontró usando los métodos anteriores. Por ejemplo, desea hacer clic en "Cuenta olvidada?"En la página de Facebook

>>> link_button = controlador.find_element_by_link_text ('Cuenta olvidada?')
>>> botón_enlace.hacer clic()

Enviar claves especiales

Selenium también tiene un módulo que te permite enviar claves especiales (e.g, Enter, Escape, Page Down, Page Up, etc.) mientras navega por la web. Necesita importar este módulo usando el siguiente comando

>>> de selenio.webdriver.común.claves importar claves

Por ejemplo, está leyendo un artículo en Wikipedia sobre la historia de los Estados Unidos, pero es demasiado vago para presionar la tecla de flecha ABAJO después de un tiempo. Puede automatizar enviando esta clave al navegador usando Selenium

desde el controlador web de importación de selenio
de selenio.webdriver.común.claves importar claves
tiempo de importación
driver = webdriver.Chrome ('C: \ chromedriver')
#Abra el enlace del artículo usando el método get
conductor.get ("https: // en.wikipedia.org / wiki / Estados_unidos ")
#Comience desde el inicio de la página
elem = conductor.find_element_by_tag_name ('html')
mientras que es verdadero:
 
hora.dormir (5)
elem.send_keys (claves.ABAJO)

Cómo automatizar el navegador

En esta sección veremos cómo automatizar nuestro navegador web con la ayuda de algunos casos de uso.

Inicie sesión en sitios web de redes sociales automáticamente

Con la automatización web, puede hacer que su proceso de inicio de sesión sea automático. Si consulta sus sitios web de redes sociales a una hora específica (por ejemplo, a las 8 pm) con regularidad, entonces es bueno automatizar este proceso. A continuación se muestra el código para automatizar el proceso de inicio de sesión de dos sitios de redes sociales 'facebook' y 'twitter' usando SELENIO módulo en Python.

# importando webdriver desde el módulo selenium
desde el controlador web de importación de selenio
 
# importar claves especiales de selenio
de selenio.webdriver.común.claves importar claves
 
# creación de un objeto 'controlador' para 'Google-Chrome'
driver = webdriver.Chrome ('ruta al controlador de Chrome')
 
# maximizando la ventana
conductor.maximizar_ventana ()
 
# abriendo facebook
conductor.obtener('http: // www.Facebook.com')
 
# localizar el elemento 'Correo electrónico o teléfono' usando el atributo 'id'
userName = controlador.find_element_by_id ('correo electrónico')
 
# Ingresando el nombre de usuario o el correo electrónico para facebook
nombre de usuario.send_keys ('Ingresar nombre de usuario / correo electrónico')
 
# localizar el elemento 'Contraseña' usando el atributo 'id'
passWord = conductor.find_element_by_id ('pasar')
 
# ingresando contraseña para facebook
contraseña.send_keys ("Ingresar contraseña")
 
# ubicar el elemento 'botón de inicio de sesión' usando el atributo 'id' y presionando 'Enter'
conductor.find_element_by_id ('u_0_b').send_keys (claves.INGRESAR)
 
# abriendo una nueva pestaña para twitter
conductor.execute_script ("ventana.abierto ('http: // www.gorjeo.com ',' tab2 '); ")
 
# cambiando a una nueva pestaña
conductor.switch_to_window ('tab2')
 
# ubicar el elemento 'iniciar sesión' y hacer clic en él
conductor.find_element_by_xpath ('// * [@ id = "doc"] / div / div [1] / div [1] / div [2] / div [1]').hacer clic()
 
# localizar el elemento 'Teléfono, correo electrónico o nombre de usuario'
userName = controlador.find_element_by_xpath ('// * [@ id = "contenedor de página"] / div / div [1] / form /
fieldset / div [1] / input ')
 
# ingresando nombre de usuario para twitter
nombre de usuario.send_keys ('Ingresar nombre de usuario')
 
# ubicar el elemento 'Contraseña'
passWord = conductor.find_element_by_xpath ('// * [@ id = "contenedor de página"] / div / div [1] / form /
fieldset / div [2] / input ')
# ingresando contraseña para twitter
contraseña.send_keys ('Ingresar contraseña')
# ubicando el botón 'iniciar sesión' y haciendo clic en él
conductor.find_element_by_xpath ('// * [@ id = "contenedor de página"] / div / div [1] / form / div [2] / button')
.hacer clic()

El código anterior automatiza el navegador para iniciar sesión en sitios web de redes sociales. Primero que nada creamos un objeto de nuestro navegador favorito. En este caso de uso, hemos tomado 'Chrome' como navegador. Para crear el objeto pasamos la ruta de nuestro 'chromedriver' como argumento. Luego ingresamos la url de facebook e iniciamos sesión en Facebook seleccionando elementos y pasando nombre de usuario y contraseña.

Luego de esto abrimos una nueva pestaña e ingresamos la url de twitter. Después de esto, cambiamos a la nueva pestaña ya que el control del código todavía estaba en la primera pestaña aunque la segunda pestaña estaba abierta. Luego iniciamos sesión en Twitter seleccionando elementos y pasando nombre de usuario y contraseña.

Compra Online Automatización

Otro buen ejemplo de automatización del navegador podría ser la compra online. Por ejemplo, desea comprar una cámara en línea pero los precios son demasiado altos. Verifica todos los días si el precio está en su rango o no. Esta tarea se puede automatizar usando SELENIO y puede evitar la verificación del precio todos los días. El siguiente código le informará por correo si el precio de su producto deseado es asequible o no. Si su producto deseado está a la venta, el programa le notificará a través de un correo electrónico.

# importando webdriver desde el módulo selenium
desde el controlador web de importación de selenio
 
# importando el módulo smtplib para enviar correo
importar smtplib
 
# definir la función de correo para informar a través del correo electrónico
def mail ():
 
# establecer conexión con el servidor de gmail con nombre de dominio y número de puerto. 
Esto difiere con cada proveedor de correo electrónico
conexión = smtplib.SMTP ('smtp.gmail.com ', 587)
 
# saluda al servidor
conexión.ehlo ()
 
# iniciando la conexión TLS encriptada
conexión.starttls ()
 
# inicie sesión en el servidor de gmail con su dirección principal y contraseña
conexión.login ('dirección de correo del remitente', 'contraseña')
 
# enviarse un correo a usted mismo informándole sobre el precio de la cámara
conexión.sendmail ('dirección de correo del remitente', 'dirección de correo del destinatario',
'Asunto: puedes comprar la cámara')
 
# conexión final
conexión.dejar()
# la función de correo termina aquí
 
# lanzamiento de Google Chrome al proporcionar la ruta del controlador cromado como argumento
driver = webdriver.Chrome ('camino al controlador cromado')
 
# minimizando la ventana de cromo
conductor.minimizar_ventana ()
 
# draz de apertura.pk sitio
conductor.obtener('https: // www.daraz.paquete/')
 
# ubicar el elemento de la barra de búsqueda usando el atributo id para buscar la cámara
searchBar = controlador.find_element_by_id ('q')
 
#escritura de cámara en la barra de búsqueda
barra de búsqueda.send_keys ('cámara')
 
# ubicar el elemento del botón de búsqueda usando xpath del elemento
buscar = conductor.find_element_by_xpath ('// * [@ id = "topActionHeader"] / div / div [2] / div / div [2]
/ form / div / div [2] / button ')
 
#haciendo clic en el botón de búsqueda
buscar.hacer clic()
 
# ubicar el elemento de su producto deseado usando el atributo xpath
producto = controlador.find_element_by_xpath ('// * [@ id = "root"] / div / div [3] / div [1] / div / div [1]
/ div [2] / div [1] / div / div / div [2] / div [2] / a ')
 
# haciendo clic en su producto deseado
producto.hacer clic()
 
# ubicar el elemento del precio usando el atributo xpath
precio = conductor.find_element_by_xpath ('// * [@ id = "module_product_price_1"] / div / div / span')
 
# extraer texto del elemento de precio. Esto da el precio del producto como 'Rs. 24,500 '
precio = precio.texto
 
# conversión de precio en cadena
Precio = str (precio)
 
# definir una matriz vacía. Esto se usará para extraer dígitos del precio como '24500'
forma 'Rs. 24,500 '
num = []
 
# leer todas las entradas de la cadena de precios una por una usando el bucle for
por x en precio:
 
# comprobar si la entrada es un dígito o no, ya que solo queremos dígitos en el precio
si x.isdigit ():
 
# agregando solo dígitos a la lista num
num.añadir (x)
 
# uniendo todas las entradas de la lista num. Ahora el precio es una cadena que contiene solo dígitos
precio = ".unirse (num)
 
# conversión de cadena de precio en entero
precio = int (precio)
 
# comprobar si el precio es asequible o no
si el precio <= 25000:
 
# llamar a la función de correo para informarle sobre el precio
correo()
 
# cerrando navegador
conductor.dejar()

El código anterior abre daraz.pk y busca la cámara y te informan por correo electrónico si el precio es asequible. Primero que nada importamos SELENIO y SMTPLIB módulos. Luego definimos la función 'correo' que le envía un correo informándole que el precio es asequible, cuando se llama.

Después de esto, abrimos el navegador Chrome usando chromedriver y buscamos 'daraz.paquete'. Luego ubicamos nuestro producto deseado usando elementos y sus atributos. Cómo se encuentran y ubican los elementos, se ha descrito anteriormente. El precio que obtuvimos fue una cadena, por lo que convertimos esta cadena en un número entero y luego verificamos si el precio es asequible o no. Si el precio es asequible, llame a la función 'correo'.

Creando trabajo Cron

Los dos scripts de automatización anteriores deben ejecutarse una vez al día a una hora específica. Podemos administrar esto usando cron job. Las tareas, que se agregan a crontab, se pueden ejecutar en un momento específico repetidamente. Para agregar las tareas anteriores en crontab, primero ejecute el siguiente comando en la Terminal de Linux.

[correo electrónico protegido]: ~ $ crontab -e

El comando anterior abrirá el archivo crontab para editar. Al final del archivo ingrese el siguiente comando.

0 8 * * * python / ruta / a / python / script

Vemos entradas antes del comando de derecha a izquierda.

Entonces este comando se ejecutará a las 8 en punto todos los días.

Conclusión

En este artículo, discutimos cómo puede usar SELENIO junto con Python para automatizar su navegador usando diferentes técnicas. Puede automatizar su trabajo de rutina diaria, completar formularios, descargar sus cosas y muchas cosas usándolo. Aquí discutimos solo dos ejemplos, pero puede automatizar todas y cada una de las cosas que un humano puede hacer manualmente con el navegador.

Cómo impulsar FPS en Linux?
FPS significa Cuadros por segundo. La tarea de FPS es medir la velocidad de fotogramas en reproducciones de video o actuaciones de juegos. En palabras...
Los mejores juegos de Oculus App Lab
Si es propietario de un visor Oculus, debe estar informado sobre la descarga lateral. Sideloading es el proceso de instalación de contenido que no es ...
Los 10 mejores juegos para jugar en Ubuntu
La plataforma Windows ha sido una de las plataformas dominantes para juegos debido al gran porcentaje de juegos que se están desarrollando hoy para ad...