Модуль urllib.request Python

Модуль urllib.request позволяет получать данные по URL с помощью стандартной библиотеки Python.

from urllib import request

Для многих проектов сторонние библиотеки, такие как Requests, удобнее. Используйте urllib.request, когда нужна только стандартная библиотека.

Открытие URL

urlopen возвращает объект ответа.

from urllib import request

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

Чтение данных ответа

Тело ответа возвращается в виде 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

Добавление таймаута

При открытии реальных сетевых URL задавайте таймаут, чтобы программа не ждала бесконечно.

from urllib import request

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

WARNING

Сетевые вызовы могут завершаться ошибкой по многим причинам. Обрабатывайте исключения вроде urllib.error.URLError и будьте осторожны при получении ненадежных URL.

Ссылки по теме