Сообщить об ошибке.

Объект ответа сервера urllib.response в Python

Объект ответа сервера, статус и заголовки ответа сервера

Модуль urllib.response определяет функции и классы, которые определяют минимальный файловый интерфейс, включая методы .read() и .readline(). Атрибуты и функции, определенные этим модулем, используются внутри модуля urllib.request.

Типичный объект ответа - это экземпляр urllib.response.addinfourl:

Экземпляр urllib.response.addinfourl в дополнение к минимальному файловому интерфейсу имеет следующие атрибуты и функции:

Response.url:

Атрибут Response.url возвращает URL-адрес полученного ресурса, обычно используемый для определения того, был ли редирект.

Response.headers:

Атрибут Response.headers возвращает заголовки ответа в виде экземпляра EmailMessage.

Response.status:

Новое в Python 3.9.

Атрибут Response.status представляет собой код состояния/ответа, возвращаемый сервером.

Response.geturl():

Метод устарел с версии Python 3.9 в пользу Response.url.

Response.info():

Метод устарел с версии Python 3.9 в пользу Response.headers.

Response.code:

Метод устарел с версии Python 3.9 в пользу Response.status.

Response.getstatus():

Метод устарел с версии Python 3.9 в пользу Response.status.

Примеры использования объекта Response:

Поскольку веб-сайт python.org использует кодировку utf-8, как указано в его метатеге, мы будем использовать то же самое для декодирования объекта байтов.

>>> import urllib.request
>>> with urllib.request.urlopen('http://www.python.org/') as response:
...     print(response.read(100).decode('utf-8'))
...
# <!doctype html>
# <!--[if lt IE 7]>   <html class="no-js ie6 lt-ie7 lt-ie8 lt-ie9">   <![endif]-->

Того же результата можно достичь и без использования контекстного менеджера.

>>> import urllib.request
>>> response = urllib.request.urlopen('http://www.python.org/')
>>> print(response.read(100).decode('utf-8'))
# <!doctype html>
# <!--[if lt IE 7]>   <html class="no-js ie6 lt-ie7 lt-ie8 lt-ie9">   <![endif]-->
>>> response.status
# 200
>>> dict(response.headers)
# {'Connection': 'close', 'Content-Length': '49562', 'Server': 'nginx', 
# 'Content-Type': 'text/html; charset=utf-8', 'X-Frame-Options': 'DENY', 
# ...
# 'Strict-Transport-Security': 'max-age=63072000; includeSubDomains'}
>>> response.headers['Content-Type']
# 'text/html; charset=utf-8'
>>> response.url
# 'https://www.python.org/'