Automatice el llenado de formularios web con Python y Selenium

 

Hoy en día todo el mundo quiere obtener algunos datos de usted, por lo que para crear una nueva cuenta, participar en un sorteo u obtener un libro electrónico gratuito, debe completar su información en un formulario.

Esto no es un gran problema si lo hace solo una vez, pero las cosas se vuelven tediosas cuando tiene que repetir los mismos pasos una y otra vez, por lo que la mejor solución es automatizarlo con Python.

Automaticemos el llenado de formularios web con Python. Primero, veremos cómo completar un formulario con datos que creamos en una lista de Python, y luego le mostraré cómo generar datos falsos para completar múltiples formularios.

Cómo automatizar el llenado de formularios web con Python

Para automatizar formularios web con Python, usaremos una biblioteca llamada Selenium. Siga las instrucciones a continuación para instalarlo.

Nota: Todos los métodos de Selenium que vamos a aprender en esta guía se pueden encontrar en mi Hoja de trucos de automatización ( PDF gratuito )

1. Instalar selenio

Para instalar Selenium, abra una terminal y ejecute el siguiente comando.

pip instalar selenio

Eso instalará Selenium 4, que es la versión que usaremos para este tutorial.

Luego necesitamos descargar chromedriver:

  1. Verifique su versión de Google Chrome (en Chrome, haga clic en tres puntos, haga clic en "ayuda" y luego seleccione "acerca de Google Chrome")
  2. Descargue el Chromedriver correcto aquí (después de cualquier actualización de Chrome, debe descargar el archivo Chromedriver nuevamente)
  3. Descomprima el controlador y copie la ruta donde está dejando el archivo Chromedriver.

Rellenar formularios de Google

Importemos las bibliotecas que usaremos para esta automatización.

from selenium import webdriver 
from selenium.webdriver.chrome.service import Tiempo de importación del servicio

Luego creamos un pathlugar donde se encuentra nuestro archivo chromedriver, websiteque vamos a automatizar y driverque nos ayudará a interactuar con el sitio web a través de Selenium.

Sitio web : para esta demostración simple, vamos a utilizar una plantilla básica llamada "Información de contacto" de Google Form que puede encontrar aquí . Copia el enlace.

En caso de que el enlace deje de funcionar, vaya a Formularios de Google y seleccione la plantilla a continuación para generar el formulario y obtener su propio enlace.

Nota: si crea su propio formulario, asegúrese de desactivar la opción "Limitar a 1 respuesta" dentro de Configuración, para que podamos completar tantos formularios como queramos.

Aquí están las variables que creamos para comenzar a trabajar con Selenium.

path = '/Users/.../chromedriver' # pegue su ruta aquí
service = Service(executable_path=path)
website = 'https://forms.gle/GRgxTrG8FfXUCLE99' # pegue su enlace
driver = webdriver.Chrome(service= Servicio)

Después de esto, abrimos el sitio web con Selenium usando el driver.get()

conductor.get(sitio web)

Además, agregamos una espera, por lo que dejamos que el sitio web cargue toda la información. Para ello, importamos el timemódulo.

tiempo de importación
time.sleep(3)

En este punto, el código debería verse así:

Ahora, para completar la información con Selenium, debemos inspeccionar el sitio web. Inspeccionemos el campo "Nombre". Para hacerlo, haga clic derecho en cualquier sección en blanco en el primer bloque y haga clic en "Inspeccionar".

Las herramientas del desarrollador se abrirán con el documento HTML del sitio web.

Independientemente de qué elemento esté resaltado en su computadora, vamos a usar el que tiene el data-paramsnombre de atributo porque dentro está el nombre del campo (por ejemplo, Nombre, Correo electrónico, Dirección, Número de teléfono, Comentarios).

Ahora vamos a crear el XPath del campo "Nombre". Aquí está la sintaxis de un XPath:

Además de eso, también usamos la contains()función, por lo que nuestro XPath será:

//div[contiene(@parámetros de datos, "Nombre")]

Ahora tenemos que inspeccionar el campo donde se encuentra el marcador de posición "Tu respuesta".

A diferencia de la mayoría de los sitios web, Google Form sigue un patrón inconsistente, algunos campos como "Correo electrónico" tienen la <input>etiqueta, mientras que otros campos como "Dirección" tienen la <textarea>etiqueta.

El XPath final del campo con el marcador de posición "Tu respuesta" variará para aquellos con la etiqueta <input>y .<textarea>

//div[contiene(@parámetros de datos, "Nombre")]//área de texto //div[contiene(@parámetros de datos, "Nombre")]//entrada

Para juntarlos usamos el condicional “o”|

//div[contiene(@parámetros de datos, "Nombre")]//área de texto | //div[contiene(@parámetros de datos, "Nombre")]//entrada

Ahora usamos .find_element.send_keyspara completar los datos.

Cree una lista con datos y complete todos los campos

Hay diferentes bibliotecas de Python fakerque pueden ayudarnos a generar datos falsos para nosotros (te mostraré cómo fakerfunciona al final), pero para mantener esto simple, generemos datos en una lista nosotros mismos y luego colóquelos en un diccionario.

campos = ['Nombre', 'Email', 'Dirección', 'Número de teléfono', 'Comentarios'] 
datos = ['Frank', 'frank@example.com', '123 St', '987654321', 'Hola Mundo']
my_form = dict ( zip (campos, datos))

Ahora para llenar estos datos en todos los campos de nuestro formulario ponemos el .find_element.send_keysdentro de un bucle for.

Enviar el formulario

Finalmente, tenemos que hacer clic en el botón “Enviar”.

Para hacer clic en "Enviar" con Selenium, inspeccionamos el botón para crear su XPath y luego usamos el .clickmétodo para hacer clic en él.

Nota: si tiene su navegador en otro idioma, probablemente el valor dentro del text()atributo estaría en ese idioma. Por ejemplo, mi navegador está en español entonces tengo que cambiar parte del XPath a //span[text()=”Enviar”].

Aquí está el código que hemos escrito hasta ahora.

¡Felicidades! Ahora ya sabes cómo rellenar formularios web. Ahora puede llevar esto al siguiente nivel enviando cientos de formularios con datos falsos.

Cree datos falsos y envíe cientos de formularios

Ahora que conoce los conceptos básicos, puede saltar al minuto 13:26 de mi video a continuación para aprender cómo generar datos falsos y enviar cientos de formularios con Python.

FUENTE




Comentarios

Entradas populares de este blog

correo electrónico con Python y Streamlit