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

Código:
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.

Código:
#!/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
Código:
from selenium import webdriver

Importamos Time
Código:
import time

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

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

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

Esperamos 2 segundos a que se cargue la página de autentificación
Código:
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
Código:
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
Código:
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
Código:
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
Código:
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
Código:
driver.find_element_by_link_text('Chistes').click()

Esperamos 2 segundos a que se cargue la sección chistes
Código:
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
Código:
driver.find_element_by_class_name('new_thread_button').click()

Esperamos 5 segundos a que se cargue la caja para hacer los post
Código:
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
Código:
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
Código:
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
Código:
driver.find_element_by_name('submit').click()

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

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

Con esto habremos conseguido identificarnos y realizar un post.
Saludos.
Responder


Mensajes en este tema
Web scraping con python y selenium. - por chujalt - 07-03-2021, 21:44

Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)