Python request module windows

Содержание
  1. HTTP-библиотека requests в Python.
  2. Простая в использовании HTTP-библиотека для Python.
  3. Установка модуля requests в виртуальное окружение:
  4. Содержание:
  5. Создание HTTP запроса к WEB-странице.
  6. Код ответа сервера ( status code ).
  7. Получение контента WEB-страницы в виде текста.
  8. Получение контента в виде байтов.
  9. Отслеживание перенаправлений, атрибут Response.history .
  10. Использование библиотеки Requests в Python
  11. Как установить Requests
  12. Импортирование модуля Requests
  13. Делаем запрос
  14. Работаем с кодом ответа
  15. Получаем содержимое страницы
  16. Работаем с заголовками
  17. Кодирование
  18. Пользовательские заголовки
  19. Переадресация и история
  20. Осуществление POST-запроса HTTP
  21. Ошибки и исключения
  22. Дополнительные материалы
  23. requests 2.25.1
  24. Navigation
  25. Project links
  26. Statistics
  27. Maintainers
  28. Classifiers
  29. Project description
  30. Requests
  31. Installing Requests and Supported Versions
  32. Supported Features & Best–Practices
  33. Python: модуль requests
  34. Создание запроса
  35. Передача аргументов в запросе
  36. Содержимое объекта response
  37. Необработанное содержимое объекта response
  38. Изменение заголовков
  39. Более сложные запросы POST
  40. POST для файлов составной кодировки
  41. Коды состояний в requests
  42. Заголовки в requests
  43. Таймауты
  44. Ошибки и исключения

HTTP-библиотека requests в Python.

Простая в использовании HTTP-библиотека для Python.

Модуль requests — это элегантная и простая HTTP-библиотека для Python, созданная для людей. Модуль позволяет чрезвычайно легко отправлять HTTP/1.1 запросы. Нет необходимости вручную составлять URL-адреса или кодировать данные для PUT и POST запросов (в настоящее время можно использовать метод Request.json )

Установка модуля requests в виртуальное окружение:

Содержание:

Создание HTTP запроса к WEB-странице.

Сделать HTTP-запрос очень просто. Сначала необходимо импортировать модуль requests . Далее попробуем запросить контент веб-страницы. Для примера запросим методом GET общедоступную HTTP страницу с временной шкалой сайта GitHub:

В результате запроса получили объект ответа под названием resp . Далее, из этого объекта можно получить всю необходимую информацию о этой странице.

Простой API запросов означает, что все формы HTTP-запросов столь же очевидны. Например, вот как вы делаете запрос HTTP POST:

Создание других типов HTTP-запросов, таких как PUT, DELETE, HEAD и OPTIONS все это так же просто и очевидно.

При работе с библиотекой requests необходимо уяснить следующее:

Всякий раз, когда вызываются методы requests.get() или requests.post() и т. д., то делаются две важные вещи.

  1. Создается объект Request , который будет отправлен на сервер для запроса ресурса указанного в URL .
  2. Создается объект Response , который генерируется после того, как запрос получает ответ от сервера.

Объект Response содержит всю информацию, возвращаемую сервером, а также объект запроса, который вы создали изначально

Код ответа сервера ( status code ).

Можно проверить код состояния ответа сервера следующим способом:

Модуль requests также поставляется со встроенным объектом поиска кода состояния requests.codes для удобства использования:

Если сделан плохой запрос (ошибка клиента 4XX или ответ на ошибку сервера 5XX), то можно поднять его с помощью объекта ответа Response.raise_for_status() :

Но если вызвать Response.raise_for_status() для ответа сервера со статусом 200, то в результате получим None :

Получение контента WEB-страницы в виде текста.

Извлекать/читать контента/текста ответа сервера также легко как делать запросы. Еще раз рассмотрим временную шкалу GitHub:

Запросы будут автоматически декодировать содержимое с сервера. Большинство кодировок юникода легко декодируются.

Когда посылается запрос, модуль requests делает обоснованные предположения о кодировке ответа на основе HTTP-заголовков. При доступе к атрибуту resp.text используется кодировка, прочитанная модулем requests во время запроса к серверу. Если сервер не предоставляет кодировку страницы в заголовках ответа или кодировка не распознана, то по умолчанию requests использует кодировку ‘utf-8’. Можно узнать, какую кодировку использует конкретный запрос, и изменить ее, используя атрибут resp.encoding :

Если изменить кодировку, то запросы будут использовать новое значение resp.encoding всякий раз, когда вызывается resp.text . Бывают случаи, когда заголовок ответа сервера выдает неправильную кодировку (отличную от той которая указана в HTML разметке) и в этой ситуации, необходимо применить специальную логику, чтобы определить, какой будет кодировка контента. Например, языки разметки HTML и XML имеют возможность указывать свою кодировку в своем теле. В подобных ситуациях необходимо использовать resp.content , чтобы найти указанную кодировку, а затем установить resp.encoding . Это позволит извлекать данные HTML-страницы resp.text с правильной кодировкой.

Читайте также:  Asus eee pc 1005pe linux

Получение контента в виде байтов.

Можно получить доступ к телу ответа в байтах для нетекстовых запросов, например для загрузки изображений:

Кодировки gzip и передача-кодировки deflate автоматически декодируются.

Например, чтобы воссоздать изображение из двоичных данных, возвращаемых запросом, можно использовать следующий код:

Отслеживание перенаправлений, атрибут Response.history .

По умолчанию модуль requests будет обрабатывать перенаправление для всех типов запросов, кроме HEAD (по умолчанию отключено). Для отслеживания всех перенаправления можно использовать атрибут .history объекта Response .

Список Response.history содержит объекты Response , созданные для выполнения запроса. Список отсортирован от самого старого до самого последнего ответа.

Например, GitHub перенаправляет все HTTP-запросы на HTTPS:

Если используется запросы GET, OPTIONS, POST, PUT, PATCH или DELETE, то можно отключить обработку перенаправления с помощью аргумента allow_redirects :

Если используется HEAD запрос, то также можно включить отслеживание перенаправления:

Использование библиотеки Requests в Python

Для начала давайте разберемся, что же вообще такое библиотека Requests.

Requests — это HTTP-библиотека, написанная на Python (под лицензией Apache2). Она спроектирована для взаимодействия людей с эим языком. Это означает, что вам не нужно вручную добавлять строки запроса в URL-адреса или заносить данные в форму для POST -запроса. Если это кажется вам бессмысленным, не волнуйтесь. В нужное время все прояснится.

Что же делает библиотека Requests?

Библиотека Requests дает вам возможность посылать HTTP/1.1-запросы, используя Python. С ее помощью вы можете добавлять контент, например заголовки, формы, многокомпонентные файлы и параметры, используя только простые библиотеки Python. Также вы можете получать доступ к таким данным.

В программировании библиотека — это набор или, точнее сказать, предварительно настроенный набор подпрограмм, функций и операций, которые в дальнейшем может использовать ваша программа. Эти элементы часто называют модулями, которые хранятся в объектном формате.

Библиотеки очень важны, потому что вы можете загрузить модуль и использовать все, что он предлагает, без явной связи с вашей программой. Они действительно автономны, так что вы можете создавать свои собственные программы с ними, и все же они остаются отделенными от ваших программ.

Таким образом, о модулях можно думать как о неких шаблонах кода.

Повторимся еще раз, Requests — это библиотека языка Python.

Как установить Requests

Сразу сообщим вам хорошую новость: существует множество способов для установки Requests. С полным списком можно ознакомиться в официальной документации библиотеки Requests.

Вы можете использовать pip, easy_install или tarball.

Если вам нужен исходный код, вы можете найти его на GitHub.

Мы для установки библиотеки воспользуемся менеджером pip.

В интерпретаторе Python введите следующую команду:

Импортирование модуля Requests

Для работы с библиотекой Requests в Python вам необходимо импортировать соответствующий модуль. Вы можете это сделать, просто поместив следующий код в начало вашей программы:

Разумеется, предварительно этот модуль должен быть установлен и доступен для интерпретатора.

Делаем запрос

Когда вы пингуете веб-сайт или портал для получения информации, то это как раз и называется созданием запроса.

Для получения веб-страницы вам нужно написать что-то в таком духе:

Работаем с кодом ответа

Перед тем как вы будете что-то делать с веб-сайтом или URL, хорошей идеей будет проверить код ответа, который вернул вам сервер. Это можно сделать следующим образом:

Читайте также:  Виды наклеек windows 10

Получаем содержимое страницы

После того как сервер вам ответил, вы можете получить нужный вам контент. Это также делается при помощи функции get библиотеки Requests.

Работаем с заголовками

Используя словари Python, вы можете просмотреть заголовки ответа сервера. Особенностью работы библиотеки Requests является то, что для получения доступа к заголовкам вы можете использовать в ключах словаря как заглавные, так и строчные буквы.

Если вызываемого заголовка нет, будет возвращено значение None .

Кодирование

Библиотека Requests автоматически декодирует любой контент, извлеченный из сервера. Хотя большинство наборов символов Unicode в любом случае легко декодируются.

Когда вы делаете запрос к серверу, библиотека Requests делает обоснованное предположение о кодировке ответа. Это делается на основании заголовков HTTP. Предполагаемая кодировка будет использоваться при доступе к файлу r.text .

С помощью этого файла вы можете определить, какую кодировку использует библиотека Requests, и при необходимости изменить ее. Это возможно благодаря атрибуту r.encoding , который вы найдете в файле.

Когда вы измените значение кодировки, в дальнейшем библиотека Requests при вызове вами r.text будет использовать новый тип кодировки.

Пользовательские заголовки

Если вы хотите добавить пользовательские заголовки в HTTP-запрос, вы должны передать их через словарь в параметр заголовков.

Переадресация и история

Библиотека Requests автоматически поддерживает переадресацию при выполнении команд GET и OPTION .

Например, GitHub из соображений безопасности автотоматически переадресует все HTTP -запросы на HTTPS .

Вы можете отслеживать статус переадресации при помощи метода history , который реализован для объекта response .

Осуществление POST-запроса HTTP

Также с помощью библиотеки Requests вы можете работать и с POST -запросами:

Но вы также можете выполнять и другие HTTP -запросы, такие как PUT , DELETE , HEAD , и OPTIONS .

При помощи этих методов можно сделать массу разных вещей. Например, при помощи следующего кода вы можете создать репозиторий GitHub:

Ошибки и исключения

Есть ряд ошибок и исколючений, с которыми вам надо ознакомиться при использовании библиотеки Requests.

  • При проблемах с сетью, например с DNS , или отказе соединения, библиотека Requests вызовет исключение ConnectionError .
  • При недопустимом ответе HTTP библиотека Requests вызвоет исключение HTTPError , но это довольно редкий случай.
  • Если время запроса истекло, возникнет исключение Timeout .
  • Когда при запросе будет превышено заранее заданное количество переадресаций, возникнет исключение TooManyRedirects .

Все исключения, вызываемые библиотекой Requests, наследуются от объекта requests.exceptions.RequestException .

Дополнительные материалы

Более подробно про билиотеку Requests вы можете почитать, пройдя по следующим ссылкам:

requests 2.25.1

pip install requests Copy PIP instructions

Released: Dec 16, 2020

Python HTTP for Humans.

Statistics

View statistics for this project via Libraries.io, or by using our public dataset on Google BigQuery

License: Apache Software License (Apache 2.0)

Requires: Python >=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*

Maintainers

Classifiers

  • Development Status
    • 5 — Production/Stable
  • Intended Audience
    • Developers
  • License
    • OSI Approved :: Apache Software License
  • Natural Language
    • English
  • Programming Language
    • Python
    • Python :: 2
    • Python :: 2.7
    • Python :: 3
    • Python :: 3.5
    • Python :: 3.6
    • Python :: 3.7
    • Python :: 3.8
    • Python :: 3.9
    • Python :: Implementation :: CPython
    • Python :: Implementation :: PyPy

Project description

Requests

Requests is a simple, yet elegant HTTP library.

Requests allows you to send HTTP/1.1 requests extremely easily. There’s no need to manually add query strings to your URLs, or to form-encode your PUT & POST data — but nowadays, just use the json method!

Requests is one of the most downloaded Python package today, pulling in around 14M downloads / week — according to GitHub, Requests is currently depended upon by 500,000+ repositories. You may certainly put your trust in this code.

Читайте также:  Linux mint full disk encryption

Installing Requests and Supported Versions

Requests is available on PyPI:

Requests officially supports Python 2.7 & 3.5+.

Supported Features & Best–Practices

Requests is ready for the demands of building robust and reliable HTTP–speaking applications, for the needs of today.

  • Keep-Alive & Connection Pooling
  • International Domains and URLs
  • Sessions with Cookie Persistence
  • Browser-style TLS/SSL Verification
  • Basic & Digest Authentication
  • Familiar dict –like Cookies
  • Automatic Content Decompression and Decoding
  • Multi-part File Uploads
  • SOCKS Proxy Support
  • Connection Timeouts
  • Streaming Downloads
  • Automatic honoring of .netrc
  • Chunked HTTP Requests

Python: модуль requests

requests — HTTP библиотека Python. Ближайший аналог — urllib2 .

Содержит в себе встроенную библиотеку urllib3 .

Установить requests можно спомощью PIP:

Создание запроса

Теперь r является объектом Response :

Таким образом мы можем выполнять все стандартные запросы — PUT , DELETE , HEAD and OPTIONS :

Передача аргументов в запросе

Часто необходимо передать какие-то значениями аргументам в URL. При составлении такого запроса вручную — данные передаются в виде ключ:значение в URL после вопросительного знака, например — httpbin.org/get?key=val. В requests вы можете передать их в виде словаря. В следующем примере мы хотим передать key1=value1 и key2=value2 в URL httpbin.org/get:

Данные были корректно обработа и переданы, что можно увидеть вызвав атрибут url объекта r :

Учтите, что любое значение в словаре, которое является Null не будет передано.

Что бы передать список объектов в виде значения — вы должны добавить квадратые скобки [] к ключу:

Содержимое объекта response

Мы так же можем прочитать содержимое ответа сервера:

Необработанное содержимое объекта response

В случае, если вам необходимо получить необработанные (raw) данные от сервера — вы можете воспользоваться представлением raw . При этом — убедитесь, что параметр stream для Requests установлен в True :

Однако, наиболее правильным подходом для получения и сохранения таких данных будет следующий способ:

Изменение заголовков

Если вы хотите добавить какие-то заголовки в HTTP-запрос — просто доавбьте передачу словаря с ними в параметр headers :

Более сложные запросы POST

Возможно, вам требуется отправлять более сложные запросы, например — данные форм, как формы в HTML. Что бы сделать это — просто передайте словарь с данными параметру data :

Иногда вам может потребоваться передать данные не в виде формы. Если вы передадите строку вместо словаря — данные будут добдавлены напрямую.

Например, GitHub API v3 принимает POST/PATCH в формате JSON:

POST для файлов составной кодировки

С помощью requests очень просто загрузить multipart-encoded файлы:

Вы так же можете указать имя файла, тип контента и заголовки явным образом:

При желании — вы даже можете передать обычную строку, которая будет получена как файл:

Коды состояний в requests

Вы так же можете проверить полученный код состояния:

Кроме того, в requests имеются специальный способ проверки кодов состояния:

Для работы с кодами ошибок — можно использовать метод raise_for_status :

И использовать его в конструкции try/except :

Заголовки в requests

Мы можем прочитать заголовки в овтете сервера в виде словаря Python:

Или получить только отдельное поле заголовка:

Таймауты

Мы можем указать requests использовать таймаут подключения с помощью параметра timeout :

Ошибки и исключения

В случае проблем с подключением (ошибка DNS, сброс соединения и так далее) — requests вызовет исключение ConnectionError .

В случае некорректных заголовков HTTP — будет вызвано исключение HTTPError .

Оцените статью