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.