Curl es una utilidad de línea de comandos que se utiliza como cliente HTTP. Es popular para realizar solicitudes HTTP desde la línea de comandos. cURL se puede usar para escribir scripts para web scraping, verificar el estado del sitio y descargar archivos desde la línea de comandos.
Es increíblemente simple y se puede usar en muchos lenguajes de programación. Este artículo explica qué es cURL y cómo usarlo en Python.
¿Qué es cURL?
De acuerdo a sitio de Internet, cURL significa «URL del cliente». Es una herramienta de línea de comandos y una biblioteca para transferir datos utilizando diferentes protocolos de red de capa de aplicación, como HTTP, HTTPS, FTP e IMAP.
Es increíblemente popular y se usa en más de 10 mil millones de instalaciones en dispositivos como radios, televisores, enrutadores, impresoras y computadoras. cURL es completamente gratuito y de código abierto. Su código fuente está disponible en GitHub.
caso de uso cURL
cURL es muy útil y versátil. A continuación se muestran los casos de uso más populares para cURL. Aunque la lista no es exhaustiva, estos son algunos de los casos más comunes:
- API de prueba: Puede verificar si la API está funcionando correctamente, devolviendo los datos correctos para una solicitud determinada. Además, también se puede usar para verificar la velocidad de la API, es decir, qué tan rápido responde a las solicitudes. Puede escribir un script para verificar periódicamente el estado de la API y enviar alertas si algo sale mal.
- Recuperación web: También puede extraer automáticamente datos de sitios web. cURL se puede usar junto con muchos lenguajes de programación y como un comando Bash. Con cURL puede recuperar dinámicamente datos de sitios web. A partir de la respuesta HTML, puede analizar y extraer los datos que necesita. Si está interesado en el raspado web, puede consultar la API de raspado web de Geekflare, que facilita el raspado de datos.
- Descarga de datos: Con cURL puede guardar la respuesta de las solicitudes en un archivo. Estas respuestas pueden ser datos de solicitudes de API o archivos de un servidor. En efecto, al escribir la respuesta en un archivo, descargó el archivo. Dado que cURL es una herramienta de línea de comandos, puede automatizar este proceso para descargar muchos archivos a la vez.
Cómo usar cURL en Python (PycURL)
Instalación de PycURL
Para usar cURL en Python, usamos la biblioteca PycURL. PycURL es una interfaz de Python para la biblioteca cURL. Crea un envoltorio delgado sobre la ya rápida biblioteca cURL. Esto hace que PycURL sea más rápido que otras bibliotecas para realizar consultas como urllib y solicitudes. Para usar PycURL, primero debe instalarlo. Hay instrucciones detalladas aquí, pero una manera fácil de instalarlo es usar pip.
pip install PycURL
En Ubuntu 22.04 tuve que instalar algunas herramientas adicionales antes de instalar PycURL. Use este comando antes de intentar instalar PycURL con pip:
sudo apt install libcurl4-openssl-dev libssl-dev
Haz una solicitud GET simple
Para realizar una solicitud, comience creando un script de Python en el que escribir el código. Abra el archivo con un editor de texto. Voy a usar Vim, pero puedes usar lo que quieras. Para abrir el archivo con Vim, usa el siguiente comando:
vim pycurl.py
Aquí, pycurl.py
es el nombre del archivo en el que escribiré mi código, pero puede nombrar su archivo como quiera.
A continuación, importamos la clase cURL desde el módulo PycURL
from pycurl import Curl
Después de importar PycURL, importamos BytesIO desde io. Lo necesitaremos para crear un búfer para escribir la respuesta desde PycURL.
from io import BytesIO
A continuación, instanciamos una nueva instancia de Curl.
c = Curl()
A continuación, instanciamos BytesIO para crear un nuevo búfer. PycURL no tiene un mecanismo de almacenamiento incorporado para almacenar respuestas. Entonces, necesitamos crear un búfer y decirle dónde escribir los datos.
buffer = BytesIO()
Con el búfer creado, podemos establecer opciones en nuestro objeto cliente. En este caso, queremos establecer dos opciones; la primera es la URL que estamos solicitando. El segundo es donde queremos escribir el cuerpo de la respuesta. Aquí está el código para hacerlo:
c.setopt(c.URL, 'http://pycurl.io/')
c.setopt(c.WRITEDATA, buffer)
Una vez hecho esto, podemos solicitar llamando al método de ejecución del objeto del cliente y luego cerrar la solicitud llamando al método de cierre.
c.perform()
c.close()
Para obtener la respuesta, llamamos al getvalue()
método de objeto de búfer y decodificarlo. Luego podemos imprimirlo en la consola.
body = buffer.getvalue()
print(body.decode('iso-8859-1'))
Su archivo debería verse así:
from pycurl import Curl
from io import BytesIO
# Create a pycUrl instance
c = Curl()
buffer = BytesIO()
c.setopt(c.URL, 'http://pycurl.io/')
c.setopt(c.WRITEDATA, buffer)
# Make the request
c.perform()
# Close the connection
c.close()
body = buffer.getvalue()
print(body.decode('iso-8859-1'))
Después de ejecutar el script, debería obtener el siguiente resultado:
Hacer una solicitud POST
Para realizar una solicitud POST, deberá configurar el POSTFIELDS
Opciones de objeto de cliente cURL. Por ejemplo, aquí hay una solicitud que realiza una solicitud POST a la API de marcador de posición JSON.
from io import BytesIO
from json import dumps
from pycurl import Curl
# Create a pycUrl instance
c = Curl()
buffer = BytesIO()
# Create a data dictionary
data = {
'userId': 1,
'title': 'Lorem Ipsum',
'body': 'Dolor sit amet'
}
# Encode the data to json
encoded_data = dumps(data)
# Set request options
c.setopt(c.URL, 'https://jsonplaceholder.typicode.com/posts')
c.setopt(c.HTTPHEADER, ['Accept: application/json', 'Content-Type: application/json'])
c.setopt(c.POSTFIELDS, encoded_data)
c.setopt(c.WRITEDATA, buffer)
# Make the request
c.perform()
# Close the connection
c.close()
body = buffer.getvalue()
print(body.decode('iso-8859-1'))
En el código anterior, creé un objeto de diccionario con los datos que enviaré como parte de la solicitud. Luego codifiqué los datos en JSON y los envié como carga útil a la solicitud configurando la opción POSTFIELDS en los datos codificados. También especifiqué encabezados para especificar el tipo de contenido de la solicitud y el tipo de datos de respuesta aceptado. Cuando ejecute el código, debería obtener una respuesta como esta.
Escribir respuestas a archivos
También puede pasar un búfer de archivo a la opción cURL WRITEDATA. Esto escribirá los datos de respuesta en el archivo. El siguiente ejemplo ilustra el concepto:
from pycurl import Curl
file_name = 'output.json'
# Opening the file in write mode
with open(file_name, 'wb') as f:
# Creating a Curl instance
c = Curl()
# Set request options
c.setopt(c.URL, 'https://jsonplaceholder.typicode.com/users/1')
c.setopt(c.HTTPHEADER, ['Accept: application/json'])
c.setopt(c.WRITEDATA, f)
# Make the request
c.perform()
# Close the connection
c.close()
print(f'Wrote output to {file_name}')
Alternativas a PycURL
PycURL solo proporciona una capa delgada en la biblioteca cURL. Esto lo hace altamente personalizable ya que tiene más control sobre las funciones de nivel inferior.
Sin embargo, esto hace que sea más difícil de usar y, por lo tanto, está más dirigido al desarrollador avanzado. A menudo, es posible que desee una alternativa más simple a PycURL. En esta sección, discutiremos las alternativas.
#1. Otras bibliotecas
Además de PycURL, Python tiene otras bibliotecas que se pueden usar para realizar solicitudes. Estos incluyen la biblioteca de consultas y la biblioteca urllib. Ambas son alternativas populares y más simples a pycURL.
#2. Otras lenguas
cURL tiene interfaces implementadas en otros lenguajes. Un sitio web popular para la conversión de sitios web cURL es Convertidor de bucle. Con el convertidor cURL, escribe un comando cURL para la consulta que desea realizar y automáticamente convierte su comando a cualquier lenguaje de programación que elija. También puede simplemente llamar al comando cURL directamente en su terminal o escribir un script Bash.
Conclusión
En este artículo, presenté cURL y expliqué cómo usarlo en Python usando el módulo PycURL. También discutimos alternativas a PycURL, como el módulo de solicitud y el uso de diferentes lenguajes para sus programas.
A continuación, verifique el uso del comando cURL con ejemplos en tiempo real.
Si quiere puede hacernos una donación por el trabajo que hacemos, lo apreciaremos mucho.
Direcciones de Billetera:
- BTC: 14xsuQRtT3Abek4zgDWZxJXs9VRdwxyPUS
- USDT: TQmV9FyrcpeaZMro3M1yeEHnNjv7xKZDNe
- BNB: 0x2fdb9034507b6d505d351a6f59d877040d0edb0f
- DOGE: D5SZesmFQGYVkE5trYYLF8hNPBgXgYcmrx
También puede seguirnos en nuestras Redes sociales para mantenerse al tanto de los últimos post de la web:
- Telegram
Disclaimer: En Cryptoshitcompra.com no nos hacemos responsables de ninguna inversión de ningún visitante, nosotros simplemente damos información sobre Tokens, juegos NFT y criptomonedas, no recomendamos inversiones