En ocasiones he tenido que trabajar con recursos en línea desde Python y hace algún tiempo me topé con el paquete de import urllib. Este es un m ódulo que nos permite manejar URLs, realizar solicitudes HTTP entre otras muchas funciones. Hoy quiero mostrarte cómo funciona y qué debes hacer para sacarle el mayor provecho.
¿Qué es import urllib?
Urllib es un módulo que se encarga de enviar y recibir datos entre tu aplicación Python y recursos en línea tales como páginas web o APIs. Import urllib es la manera en la que podemos usar urllib en Python, ya que ese ese el comando que utilizamos para importarlo. Con este puedes acceder a diferentes herramientas que te permiten realizar solicitudes HTTP, gestionar proxies, autenticar usuarios y manejar errores de red.
¿Cómo empezar a usar import urllib?
Con import urllib puedes realizar muchas acciones, desde tareas más básicas como obtener el contenido de una página web:
El siguiente código nos muestra cómo realizar una solicitud HTTP básica con urllib.request:
import urllib.request
url = 'http://python.org/'
with urllib.request.urlopen(url) as response:
html = response.read()
print(html)
Este fragmento accede a la página de Python, descarga su contenido y lo imprime. Fácil, ¿verdad? Pero esto es solo el comienzo.
Gestión de datos y encabezados HTTP
A menudo necesitarás enviar datos a un servidor o personalizar tu solicitud HTTP añadiendo encabezados. Aquí te mostramos un ejemplo de cómo hacerlo:
- Enviar datos con una solicitud POST: Para enviar datos como un formulario HTML, usa el siguiente código:
import urllib.parse
import urllib.request
url = 'http://www.example.com/register'
values = {'name': 'John Doe', 'language': 'Python'}
data = urllib.parse.urlencode(values).encode('ascii')
req = urllib.request.Request(url, data)
with urllib.request.urlopen(req) as response:
result = response.read()
print(result)
- Personalizar encabezados: Algunos servidores requieren encabezados específicos para procesar tu solicitud. Puedes incluirlos así:
headers = {'User-Agent': 'Mozilla/5.0'}
req = urllib.request.Request(url, headers=headers)
Capturar errores con el módulo de import urllib
🔴 ¿Quieres Aprender a Programar con Python? 🔴
Descubre el Full Stack Jr. Bootcamp - Aprende a Programar desde Cero de KeepCoding. La formación más completa del mercado y con empleabilidad garantizada
👉 Prueba gratis el Bootcamp Aprende a Programar desde Cero por una semanaSi accedes y trabajas con recursos en línea, es inevitable enfrentarte a errores como URLs inexistentes o problemas de autenticación. Afortunadamente, urllib ofrece excepciones específicas para manejarlos.
- Capturar errores HTTP: Usa HTTPError y URLError para manejar errores comunes:
from urllib.request import Request, urlopen
from urllib.error import URLError, HTTPError
try:
req = Request('http://www.invalid-url.com')
with urlopen(req) as response:
print(response.read())
except HTTPError as e:
print(f'Error HTTP: {e.code}')
except URLError as e:
print(f'Error de conexión: {e.reason}')
Algunas funcionalidades presentes en import urllib
Si necesitas personalizar aún más tus solicitudes, urllib tiene herramientas con las que puedes hacerlo, a saber.
- Uso de proxies: Configura proxies para tus solicitudes:
from urllib.request import ProxyHandler, build_opener, install_opener
proxy_support = ProxyHandler({'http': 'http://proxy.example.com:8080'})
opener = build_opener(proxy_support)
install_opener(opener)
- Autenticación básica: Para manejar autenticaciones, utiliza HTTPBasicAuthHandler:
from urllib.request import HTTPBasicAuthHandler, build_opener, install_opener
auth_handler = HTTPBasicAuthHandler()
auth_handler.add_password(None, 'http://example.com', 'user', 'password')
opener = build_opener(auth_handler)
install_opener(opener)
Si te interesan estas temáticas y quieres seguir aprendiendo sobre ello, te invitamos a unirte a nuestro bootcamp en programación desde cero para que aun sin conocimientos aprendas los fundamentos más importantes de esta área y puedas conseguir tu primer empleo en el mundo tech. No dudes más y accede a mejores oportunidades laborales, ¡inscríbete ahora!