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.