Enter Search Query:

Aprende a hacer bots con Selenium

Aprende a hacer bots con Selenium

Aprende a hacer bots con Selenium

«El código, lo pueden adaptar a su lógica.»

 


¿Qué es Selenium?

Selenium es una librería la cual usamos para automatizar lo que haríamos normalmente en el navegador. Les dejo una pequeña descripción que tienen en su sitio oficial:

Vamos a entrar en un ejemplo práctico, donde veremos cómo utilizar.

Cabe aclarar que Python al ser multiplataforma, es indiferente si usamos Linux, Mac, Windows u otro sistema operativo.

Para descargar Selenium, lo podemos hacer en ésta web: Enlace de descarga

Underc0de - Descargando seleniumUna vez descargado, podemos instalar simplemente con nuestro Python(recuerden, deben estar definidas en las variables de entorno):

Underc0de - Instalando selenium
Luego de la instalación, procedemos con el código  .
Realizaremos un bot que realice un post 1000 veces(compartir) en Facebook.


Configurando e Importando Selenium.

Existe un paso muy importante, es el de descargar el webdriver de Mozilla Firefox o en su defecto, el de Google Chrome. El webdriver de Mozilla Firefox se llama Geckodriver y el de Chrome se llama ChromeDriver.

Una vez descargado procedemos a:
1) Configurarlo como variable de entorno / solución más óptima si van a trabajar con Python + Selenium muchas veces.
2) Pegarlo en una carpeta y simplemente pasarle la ruta a nuestro script.

Parra éste ejemplo, utilizaremos la segunda opción; también utilizaremos Geckodriver(webdriver de Firefox).
Procedemos a importar algunas declaraciones de importaciones básicas para importar módulos de Selenium.

Underc0de - Importando librerias

Luego de importar correctamente nuestra librería, debemos importar nuestro Geckodriver en una línea del script(solo si no se ha establecido como variable de entorno; caso opuesto, debemos omitir el siguiente paso).

Underc0de - Llamada de Gecko

Recuerden, esa es la ruta donde tenemos el Geckodriver, en su caso, deberán insertar la ruta donde lo dejaron.
Como realizaremos un bot para Facebook, debemos ingresar en nuestra cuenta, en ese caso, creamos una función llamada «executeBot()» a la cual insertamos nuestra lógica.

Underc0de - Accediendo a nuestra cuenta

Solo estamos configurando dos variables, email y contraseña, no estamos insertando en el formulario de login en Facebook, lo que hacemos es acceder a cualquier url que deseemos.

Debemos tener en cuenta que driver vendría siendo nuestro objeto de tipo browser.

Ahora bien, ya teniendo nuestros datos, debemos insertarlos en el formulario y además, presionar en el botón de entrar.
Tenemos que tener un concepto clave antes de continuar. Xpath es lo que utiliza Selenium para que pueda saber dónde va a ingresar datos.

Xpath sirve precisamente para recopilar inputs, botones, clases, id’s los cuales necesitaremos para utilizar Selenium.

Para obtener los xpath, debemos utilizar el inspector de elementos de Chrome / Firefox.

Lo haremos con inspector de firebug, haciendo clic derecho a los inputs y al botón donde tenemos que extraer los xpath’s e insertarlos en nuestro código.

Underc0de - Xpath del correo electronico

Underc0de - Xpath de la contraseña

Underc0de - Xpath del boton

Habiendo obtenido cada xpath, procedemos a pegar en las siguientes líneas de código.

Underc0de - Insertando los xpaths


Explicando los métodos.

  • find_element_by_xpath(): Indicamos al navegador que encuentre el xpath que deseamos.
  • send_keys(): Utilizado para insertar contenido en un campo editable(inputs por ejemplo).
  • click(): Presionar click en alguna parte de la página web(indicar xpath).

Teniendo la sesión iniciada, lo que buscamos es compartir un enlace de facebook, procedemos de la siguiente forma:

Underc0de - Compartiendo contenido

Underc0de - Compartiendo contenido

La imagen anterior, mustra el típico botón azul de «Publicar en Facebook», lo único que hace es obtener el xpath y luego de eso, pasarlo a nuestro método «find_element_by_xpath» para evitar inconvenientes con el método «click()».

En el campo no colocamos nada, en la url ya estamos pasando el enlace: «https://www.facebook.com/sharer.php?u=ENLACE«, también podríamos obtener el xpath a ese textarea e insertar nuestro contenido.

El xpath de ese textarea es: //*[@id=»u_0_s»]


Testeando el bot.

Underc0de - Testeando el bot

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from time import sleep
from selenium.common.exceptions import TimeoutException
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support.ui import Select
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions
from selenium.common.exceptions import NoSuchElementException
driver = webdriver.Firefox(executable_path='C:/Users/Mortal_Poison/Downloads/geckodriver-v0.19.0-win64/geckodriver.exe')
def executeBot():
        input_email_id = "[email protected]"
        input_pwd = "our_password"
        # Get the page. In this case is loggin attempt of Facebook.
        driver.get('https://www.facebook.com/login.php?login_attempt=1&lwv=110')
        print("...Facebook is open...")
        # We find the xpath for insert our email address.
        email = driver.find_element_by_xpath("/html/body/div[1]/div[3]/div[1]/div/div/div[2]/form/div/div[1]/input")
        # Put mail.
        email.send_keys(input_email_id)
        print("Email put.")
        # We find the xpath for insert our password.
        password = driver.find_element_by_xpath("//input[@id='pass']")
        # Put password.
        password.send_keys(input_pwd)
        print("Password put...")
        # We find xpath of button Login.
        button = driver.find_element_by_xpath("//button[@id='loginbutton']")
        # We click on button of login.
        button.click()
        # Open session.
        print("Facebook account is open.")
        x = 0
        while x<1000:
                driver.get("https://www.facebook.com/sharer.php?u=youtube.com/viinvideoshd")
                postbutton = driver.find_element_by_xpath('//*[@id="u_0_1v"]')
                postbutton.click()
                print("Shared!." , x)
                x = x+1
        #driver.get("https://www.facebook.com/Underc0de/")
        #post_textarea = driver.find_element_by_xpath('/html/body/div[1]/div[3]/div[1]/div/div[2]/div[1]/div/div[2]/div/div[1]/div/button[1]')
        #post_textarea.click()
        #print("Liked page.")
executeBot()
# https://www.youtube.com/viinvideoshd
# https://www.viinacademy.com
# https://underc0de.org -> Mortal_Poison

Agradecemos a Mortal_Posion por compartir el artículo haciendo bots con selenium


Comentarios

Comentarios

8 octubre, 2017

Posts Relacionados

0 comentarios

Comentarios en: Aprende a hacer bots con Selenium

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *