Use el módulo de solicitudes para publicar datos de formulario en Python
Este tutorial describe el módulo de requests
de Python e ilustra cómo podemos usar este módulo para publicar datos de formulario en Python.
Use el módulo requests
para publicar datos de formulario en Python
Python se puede usar para acceder a páginas web y también para publicar contenido en las páginas web.
Ya sea que haya diferentes módulos como httplib
, urllib
, httplib2
, etc., el módulo requests
en Python es el más simple y puede escribir programas poderosos que involucran los métodos GET
y POST
.
La biblioteca de requests
es uno de los aspectos principales de Python para crear solicitudes HTTP a una URL definida.
Introducción al método de solicitud POST
El HTTP de la World Wide Web admite el método de solicitud POST
. Al considerar el formato, el método de solicitud POST
solicita que un servidor web acepte los datos incluidos en el cuerpo del mensaje de solicitud, aparentemente almacenándolos.
A menudo lo usamos para cargar un archivo o enviar un formulario web finalizado. Por ejemplo, post()
envía una solicitud POST
a una URL específica. También podemos usarlo cuando necesitamos enviar algunos datos al servidor.
Datos clave sobre la solicitud POST
- No tiene restricciones en la longitud de los datos y se configura según sea necesario.
- No vive en el historial del navegador.
- Nunca se almacena en caché.
- No puede ser un marcador.
Instalación del Módulo requests
en Python
El módulo de requests
que se necesita para usar el método post()
se puede instalar usando el siguiente comando:
python -m pip install requests
O
pip install requests
Podemos usar el siguiente comando si pipenv
administra paquetes de Python.
pipenv install requests
Una vez que se instala el módulo de requests
, se puede importar y utilizar en el programa de la siguiente manera:
import requests
Ahora, ¿cómo usar el método requests.post()
? ¿Cuál es la sintaxis para ello? Aprendamos a continuación.
Sintaxis:
requests.post(url, data={key: value}, json={key: value}, args)
Aquí, args
es igual a 0
o más de los argumentos nombrados como los siguientes parámetros:
Parámetro | Descripción |
---|---|
url |
La URL de la solicitud es una parte importante. |
data |
Opcional. Se envía un diccionario, una lista de tuplas, bytes o un objeto de archivo a la URL especificada. |
json |
Opcional. Un objeto JSON para dirigir a la URL especificada. |
files |
Opcional. Un directorio de archivos para pasar a la URL especificada. |
allow_redirects |
Opcional. Un valor booleano para habilitar o deshabilitar la redirección. El valor predeterminado es True , lo que significa permitir redireccionamientos. |
auth |
Opcional. Una tupla para habilitar una autenticación HTTP específica. El valor por defecto es Ninguno . |
cert |
Una cadena o tupla que especifica un archivo certificado o clave . Opcional donde el valor por defecto es Ninguno . |
cookies |
El diccionario de cookies para enviar a la URL especificada es opcional y el valor predeterminado es Ninguno . |
headers |
Opcional, Predeterminado Ninguno , un diccionario de encabezados HTTP para enviar a la URL definida. |
proxies |
Opcional, predeterminado Ninguno , un diccionario de protocolo para la URL del proxy. |
stream |
Una indicación booleana de la respuesta, ya sea False (descargado) o True (Transmitido). Opcional, predeterminado False . |
timeout |
Opcional, un número que indica el tiempo que esperó el cliente para realizar una conexión y/o enviar una respuesta. El valor por defecto es Ninguno . Significa que la solicitud continuará hasta que se cierre la conexión. |
verify |
Una indicación booleana o de cadena para verificar o no el certificado TLS del servidor. Opcional. El valor por defecto es verdadero". |
Aplicaciones del Método post()
La cerca de código a continuación demuestra el uso del método post()
donde el usuario publica datos en el sitio web httpbin a través del método post()
y obtiene una respuesta sobre cómo se publica.
import requests
values = {"username": "user", "password": "test"}
result = requests.post("https://httpbin.org/post", data=values)
print(result.text)
Producción:
Se recibe un objeto de respuesta
, que contiene mucha información. Primero, el objeto formulario
con las claves y valores donde nombre de usuario
es usuario
y contraseña
es prueba
. Luego, el objeto de encabezado
contiene algunas propiedades: Siguiente
, JSON
, origen
y URL
.
Para publicar un archivo codificado en varias partes, realice una solicitud POST
de varias partes enviando un archivo al servidor usando la propiedad de archivo
del método post()
.
import requests
files = {"file": open("test.txt", "rb")}
url = "https://httpbin.org/post"
result = requests.post(url, files=files)
print(result.text)
Producción:
Como salida, se devolvió un objeto de datos vacío y se obtuvo el objeto de archivos, un atributo de archivo cuyo valor es el contenido del archivo (el contenido del archivo test.txt
creado en el directorio de trabajo que era Test Text
).
Para realizar solicitudes POST
dentro de una sesión, configure una cookie en una URL y luego realice una solicitud nuevamente para evaluar si la cookie está configurada. Las sesiones también son útiles cuando un usuario necesita enviar los mismos datos en todas las solicitudes. Por ejemplo:
import requests
s = requests.Session()
s.cookies.update({"month-visit": "July"})
request01 = s.get("http://httpbin.org/cookies")
print(request01.text)
# outputs details on the "month-visit" cookie
request02 = s.get("http://httpbin.org/cookies", cookies={"year-visit": "2022"})
print(request02.text)
# outputs details on "month-visit" and "year-visit" cookie
request03 = s.get("http://httpbin.org/cookies")
print(request03.text)
# outputs details on the "month-visit" cookie
Producción:
Como en el resultado, la cookie de sesión de visita mensual
se pasa con las tres solicitudes. Pero la cookie de visita anual
solo se pasa durante la segunda solicitud.
No hay una cookie de visita anual
en la tercera solicitud. Por lo tanto, esto confirma que las cookies u otros datos establecidos en solicitudes individuales no pasarán con otras solicitudes de sesión.
Al considerar los beneficios de post()
, es más seguro que el método GET
porque la información ingresada por el usuario nunca es visible en la cadena de consulta de URL o en los registros del servidor.
Hay un límite mucho mayor en la cantidad de datos que podemos enviar, y una persona puede enviar un texto o datos binarios como cargar un archivo usando el método POST
.
Nimesha is a Full-stack Software Engineer for more than five years, he loves technology, as technology has the power to solve our many problems within just a minute. He have been contributing to various projects over the last 5+ years and working with almost all the so-called 03 tiers(DB, M-Tier, and Client). Recently, he has started working with DevOps technologies such as Azure administration, Kubernetes, Terraform automation, and Bash scripting as well.
Artículo relacionado - Python Requests
- Cadena de consulta con parámetros para solicitudes en Python
- Establecer agente de usuario usando solicitudes en Python
- Establecer reintentos máximos para solicitudes en Python
- Hacer una llamada API con token en Python
- Ignorar la verificación del certificado de seguridad SSL en las solicitudes de Python
- Python solicita paginación