Простой Python. современный стиль программирования - читать онлайн бесплатно полную версию книги . Страница 202

енту новый URL;

 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.