Módulo urllib.request de Python

El módulo urllib.request te permite obtener datos desde URL usando la biblioteca estándar de Python.

from urllib import request

Para muchos proyectos, bibliotecas de terceros como Requests son más cómodas. Usa urllib.request cuando quieras una solución que solo dependa de la biblioteca estándar.

Abrir una URL

urlopen devuelve un objeto de respuesta.

from urllib import request

response = request.urlopen('data:text/plain,Hello%20Python')
print(response.headers.get_content_type())
text/plain

Leer datos de respuesta

Los cuerpos de respuesta se devuelven como bytes.

from urllib import request

response = request.urlopen('data:text/plain,Hello%20Python')
content = response.read()
print(type(content).__name__)
print(content.decode('utf-8'))
bytes
Hello Python

Añadir un tiempo de espera

Cuando abras URL reales de red, establece un tiempo de espera para que tu programa no espere para siempre.

from urllib import request

response = request.urlopen('data:text/plain,ok', timeout=5)
print(response.read().decode('utf-8'))
ok

WARNING

Las llamadas de red pueden fallar por muchas razones. Maneja excepciones como urllib.error.URLError y ten cuidado al obtener URL no confiables.

Enlaces relacionados