Calificación:
  • 0 voto(s) - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5
Aporte Web scraping con python y selenium
#1
Saludos.

Vamos a utilizar python y selenium (que es una librería de python) para loguearnos y escribir un post en un foro, todo ello de manera automática.

El script está probado en este mismo foro y funciona perfectamente, aunque en el que se publica aquí he puesto una dirección ficticia.

Lo que vamos a necesitar es, además de tener python instalado, instalarnos la librería selenium

sudo pip install selenium

y tener el controlador geckodriver, lo podeís bajar de AQUÍ.

Este trabajo está hecho bajo entorno linux y hay que tener ciertas nociones de html porque selenium busca entre los tags para poder trabajar. Lo que busca son elementos por name, id, texto del enlace, texto parcial del enlace, xpath, CSS, tagname y Classname.

Voy a poner en script completo y luego iremos linea por linea.

#!/usr/bin/env python    
from selenium import webdriver
import time
driver = webdriver.Firefox(executable_path='/home/chujalt/geckodriver')
driver.get('https://paginaweb.com')
link = driver.find_element_by_link_text('Iniciar sesión').click()
time.sleep(2)
driver.find_element_by_id('quick_login_username').send_keys("Pepito")
driver.find_element_by_id('quick_login_password').send_keys("contraseña_de_Pepito")
driver.find_element_by_name('submit').click()
time.sleep(5)
driver.find_element_by_link_text('Chistes').click()
time.sleep(2)
driver.find_element_by_class_name('new_thread_button').click()
time.sleep(5)
driver.find_element_by_name('subject').send_keys("Chiste de Pepito")
driver.find_element_by_xpath("//iframe").send_keys("Hola, este es mi primer chiste")
driver.find_element_by_name('submit').click()
time.sleep(2)
driver.close()

Importamos webdriver de selenium
from selenium import webdriver

Importamos Time
import time

Vamos a trabajar con Firefox y le decimos donde está el ejecutable geckodriver
driver = webdriver.Firefox(executable_path='/home/chujalt/geckodriver')

Le decimos la página web a abrir
driver.get('https://paginaweb.com')

Buscamos un enlace que tenga el texto "Iniciar sesión" y que lo pulse
link = driver.find_element_by_link_text('Iniciar sesión').click()

Esperamos 2 segundos a que se cargue la página de autentificación
time.sleep(2)

En el formulario, la id de la caja de texto donde va el usuario es "quick_login_username" y le enviamos nuestro usuario
driver.find_element_by_id('quick_login_username').send_keys("Pepito")

En el formulario, la id de la caja de texto donde va la contraseña es "quick_login_password" y le enviamos nuestra contraseña
driver.find_element_by_id('quick_login_password').send_keys("contraseña_de_Pepito")

En el formulario, el botón de enviar el name es "submit" y hacemos click en él
driver.find_element_by_name('submit').click()

Esperamos 5 segundos a que la autentificación se realice y se vuelva a cargar la página
time.sleep(5)

Vamos a postear un chiste, por lo que vamos a ir a la sección chistes, buscamos un enlace con el texto "Chistes" y hacemos click en él
driver.find_element_by_link_text('Chistes').click()

Esperamos 2 segundos a que se cargue la sección chistes
time.sleep(2)

El botón para crear un nuevo hilo es una class con el nombre "new_thread_button" lo buscamos y hacemos click en él
driver.find_element_by_class_name('new_thread_button').click()

Esperamos 5 segundos a que se cargue la caja para hacer los post
time.sleep(5)

En la caja para hacer posts, la caja de texto para poner el título del post tiene el name "subject", lo buscamos y enviamos el título
driver.find_element_by_name('subject').send_keys("Chiste de Pepito")

El post en si está en un iframe, lo buscamos por el path, que puede ser absoluto o relativo (es este caso relativo), y le enviamos el texto
driver.find_element_by_xpath("//iframe").send_keys("Hola, este es mi primer chiste")

Hacemos click en el botón de envío cuyo name es submit
driver.find_element_by_name('submit').click()

Esperamos 2 segundos para que se realice la grabación del post
time.sleep(2)

Y cerramos el navegador y la aplicación
driver.close()

Con esto habremos conseguido identificarnos y realizar un post.
Saludos.
[Imagen: chuck.gif]
Responder



Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)