Модуль requests

Работа с HTTP в Python неоправданно громоздка. Входящий в комплект urllib2 модуль является исчерпывающим за счет большой сложности. Модуль requests от Kenneth Reitz, напротив, намеренно избегает завершенности в пользу упрощения общих случаев использования.

Простой пример

Представьте, что мы пытаемся получить ресурс по адресу: //example.test/ и посмотреть код состояния, его заголовок content-type, а также содержание состояния. Это довольно просто как и с urllib2, так и с Requests:
Python. Requests и urllib

Несмотря на то, что requests и urllib2 очень похожи, между ними существует значительная разница.

  • в requests oтветы автоматически декодируется в Unicode
  • oтветы автоматически сохраняют содержание, так что вы можете получить доступ к ним многократно, в отличие одноразово-читаемых файл-подобных объектов, возвращаемых urllib2.urlopen().

Вторая проблема особенно раздражает, когда печатаем код в Python REPL.

Более сложный пример

Давайте теперь попробуем что-нибудь посложнее, а именно получить ресурс по адресу http://foo.test/secret, который требует базовую проверку подлинности HTTP. Используя предыдущий   в качестве шаблона, казалось бы, нам просто нужно заменить команду на urllib2.urlopen() или requests.get () чем-то, что отсылает имя пользователя и пароль вместе с запросом.

Вот тут-то urllib2 нас подводит.
Python. Urllib

Выглядит довольно сложно по сравнению с requests, где мы просто добавляем ключевой параметр auth:
Python.Requests

Ошибки

С requests также намного удобнее обрабатывать ошибки. Если в проведенном примере выше был использован неверный логин и пароль, urllib2 выдаст urllib2.URLError, а requests вернет нормальный объект ответа, как и ожидалось. Единственное, что требуется для определения, был ли успешным запрос – это булевый атрибут response.ok:

Другие особенности

  • Requests выдает п простой API для HEAD, POST, PUT, PATCH и DELETE.
  • Он обрабатывает многокомпонентные загрузки файлов, а также автоматические кодирующие словари.
  • Подробная документация
  • И многое другое …..

Обратите внимание  requests, когда  нужно будет получить данные по протоколу HTTP!

Домашняя страница requests.

Поделитесь с друзьями:

Оставьте комментарий