GET или HTTP POST, также получите данные от домашней страницы (смесь HTML,
CSS, JavaScript и всего прочего, что Google решит разместить на своей домашней
странице).
Я не хочу, чтобы вы зависли в telnet. Чтобы его закрыть, введите следующее:
q
Стандартные веб-библиотеки Python
В Python 2 модули веб-клиентов и веб-серверов были слегка разбросаны. Одна из
целей Python 3 заключается в том, чтобы разместить эти модули в двух пакетах
(как вы помните из главы 5, пакет — это всего лишь папка для хранения файлов
модулей).
http управляет всеми деталями клиент-серверного взаимодействия HTTP:
y client выполняет всю работу на стороне клиента;
y server помогает вам написать веб-сервер;
y cookies и cookiejar управляют cookies, которые сохраняют данные между
посещениями;
urllib работает на базе http:
y request обрабатывает клиентские запросы;
y response обрабатывает ответы сервера;
y parse разбивает URL на части.
Веб-клиенты
261
Воспользуемся стандартной библиотекой, чтобы получить что-нибудь с сайта.
URL в следующем примере возвращает случайную текстовую цитату — это что-то
вроде печенья с предсказанием:
>>> import urllib.request as ur
>>> url = 'http://www.iheartquotes.com/api/v1/random'
>>> conn = ur.urlopen(url)
>>> print(conn)
<http.client.HTTPResponse object at 0x1006fad50>
Из официальной документации (http://bit.ly/httpresponse-docs) мы можем узнать,
что conn является объектом класса HTTPResponse, содержащим несколько методов,
и его метод read() предоставит нам информацию о веб-странице:
>>> data = conn.read()
>>> print(data)
b'You will be surprised by a loud noise.\r\n\n[codehappy]
http://iheartquotes.com/fortune/show/20447\n'
Этот небольшой фрагмент кода открыл соединение TCP/IP с удаленным сер-
вером цитат, создал запрос HTTP и получил HTTP-ответ. Ответ содержит не толь-
ко данные о странице (цитату). Одна из наиболее важных частей ответа — это код
статуса HTTP:
>>> print(conn.status)
200
Значение 200 означает, что все прошло гладко. Существуют десятки кодов статуса
HTTP, объединенных в пять диапазонов в соответствии с их первой цифрой (сотни):
1xx (информация). Сервер получил запрос, но имеет некоторую дополнительную
информацию для клиента;
2xx (успех). Сработало, каждый код успеха, кроме 200, сообщает дополнитель-
ные детали;
3xx (перенаправление). Ресурс был перемещен, поэтому ответ возвращает кли-