4xx (ошибка клиента). Некоторые проблемы на стороне клиента вроде знаме-
нитой ошибки 404 (ресурс не найден). Код 418 (I’m a teapot) был первоапрель-
ской шуткой;
5xx (ошибка сервера). Код 500 — это общая ошибка. Вы можете встретить ошиб-
ку 502 (ошибочный шлюз), если произошел разрыв связи между веб-сервером
и машинным интерфейсом.
Веб-серверы могут отправлять данные назад в том формате, который им нра-
вится. Обычно это HTML (а также немного CSS и JavaScript), но в нашем при-
мере с печеньем с предсказанием это простой текст. Формат данных указывается
262
Глава 9. Распутываем Всемирную паутину
значением заголовка ответа HTTP Content-Type, который мы также видели в при-
мере с google.com:
>>> print(conn.getheader('Content-Type'))
text/plain
Строка text/plain является MIME-типом и означает, что данные пришли в про-
стом текстовом формате. MIME-тип для HTML, который отправил пример с google.
com, — это text/html. В этой главе я покажу вам еще несколько MIME-типов.
Из любопытства взглянем, какие еще заголовки HTTP были нам отправлены:
>>> for key, value in conn.getheaders():
... print(key, value)
...
Server nginx
Date Sat, 24 Aug 2013 22:48:39 GMT
Content-Type text/plain
Transfer-Encoding chunked
Connection close
Etag "8477e32e6d053fcfdd6750f0c9c306d6"
X-Ua-Compatible IE=Edge,chrome=1
X-Runtime 0.076496
Cache-Control max-age=0, private, must-revalidate
Помните тот пример работы с telnet, который я показывал ранее? Теперь наша
библиотека Python может разбирать заголовки этих HTTP-запросов и размещать
их в словарь. Date и Server кажутся довольно очевидными, некоторые другие — нет.
Полезно знать, что HTTP имеет набор стандартных заголовков вроде Content-Type
и множество опциональных.
За пределами стандартной
библиотеки: requests
В начале главы 1 вы увидели программу, которая получает доступ к YouTube API
с помощью стандартных библиотек urllib.request и json. После него был другой
пример, который использовал стороннюю библиотеку requests. Он был короче
и проще для понимания.
Я считаю, что для большинства задач, связанных с разработкой веб-клиентов,
проще использовать библиотеку requests. Вы можете просмотреть ее документацию
по адресу http://docs.python-requests.org/ (она довольно хорошо написана), чтобы
получить более подробную информацию. Я покажу вам основные принципы рабо-
ты с этой библиотекой в данном разделе и буду использовать ее на протяжении
всей книги для решения задач, связанных с веб-клиентами.
Для начала вам нужно установить библиотеку requests в свое окружение Python.