Módulo urllib.request do Python
O módulo urllib.request permite buscar dados de URLs usando a biblioteca padrão do Python.
from urllib import request
Para muitos projetos, bibliotecas de terceiros como Requests são mais convenientes. Use urllib.request quando quiser uma solução apenas com a biblioteca padrão.
Abrindo uma URL
urlopen retorna um objeto de resposta.
from urllib import request
response = request.urlopen('data:text/plain,Hello%20Python')
print(response.headers.get_content_type())
text/plain
Lendo dados da resposta
Os corpos da resposta são retornados 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
Adicionando um timeout
Ao abrir URLs reais de rede, defina um timeout para o programa não esperar para sempre.
from urllib import request
response = request.urlopen('data:text/plain,ok', timeout=5)
print(response.read().decode('utf-8'))
ok
WARNING
Chamadas de rede podem falhar por muitos motivos. Trate exceções como urllib.error.URLError e tenha cuidado ao buscar URLs não confiáveis.