HTML Diff
0 added 0 removed
Original 2026-01-01
Modified 2026-03-10
1 <p>В языке программирования Python существует библиотека requests. Это стандартный инструмент, который используют для составления HTTP-запросов. Согласно документации, библиотека Requests позволяет:</p>
1 <p>В языке программирования Python существует библиотека requests. Это стандартный инструмент, который используют для составления HTTP-запросов. Согласно документации, библиотека Requests позволяет:</p>
2 <p>• создавать запросы посредством наиболее популярных HTTP-методов; • редактировать заголовки запросов и данных с помощью строки запроса, а также содержимого сообщения; • анализировать данные запросов и откликов; • создавать авторизированные запросы; • настраивать запросы с целью предотвращения сбоев и замедлений в работе приложения.</p>
2 <p>• создавать запросы посредством наиболее популярных HTTP-методов; • редактировать заголовки запросов и данных с помощью строки запроса, а также содержимого сообщения; • анализировать данные запросов и откликов; • создавать авторизированные запросы; • настраивать запросы с целью предотвращения сбоев и замедлений в работе приложения.</p>
3 <h2>Установка библиотеки requests на Python</h2>
3 <h2>Установка библиотеки requests на Python</h2>
4 <p>Работа начинается с установки библиотеки requests. Для этого подойдёт следующая команда:</p>
4 <p>Работа начинается с установки библиотеки requests. Для этого подойдёт следующая команда:</p>
5 <p>Если вы используете виртуальную среду Pipenv, команда будет немного другой:</p>
5 <p>Если вы используете виртуальную среду Pipenv, команда будет немного другой:</p>
6 $ pipenv install requests<p>Когда установка выполнена, вы можете переходить в среду разработки и полноценно использовать requests в приложении, предварительно выполнив импорт requests:</p>
6 $ pipenv install requests<p>Когда установка выполнена, вы можете переходить в среду разработки и полноценно использовать requests в приложении, предварительно выполнив импорт requests:</p>
7 <p>Итак, подготовительные действия выполнены, поэтому можно переходить к изучению requests. Начать лучше с запроса GET.</p>
7 <p>Итак, подготовительные действия выполнены, поэтому можно переходить к изучению requests. Начать лучше с запроса GET.</p>
8 <h2>Python Requests и метод GET</h2>
8 <h2>Python Requests и метод GET</h2>
9 <p>Как вы, наверное, знаете, существуют HTTP-методы GET и POST. Они определяют, какие конкретно действия выполнятся при формировании HTTP-запроса. Есть и другие методы: POST, DELETE, HEAD, PUT, PATCH и OPTIONS. И для каждого из них определена своя сигнатура.</p>
9 <p>Как вы, наверное, знаете, существуют HTTP-методы GET и POST. Они определяют, какие конкретно действия выполнятся при формировании HTTP-запроса. Есть и другие методы: POST, DELETE, HEAD, PUT, PATCH и OPTIONS. И для каждого из них определена своя сигнатура.</p>
10 <p>Самый популярный запрос - GET. Он указывает, что осуществляется попытка извлечь данные из какого-нибудь ресурса. Для выполнения этого запроса используют команду requests.get().</p>
10 <p>Самый популярный запрос - GET. Он указывает, что осуществляется попытка извлечь данные из какого-нибудь ресурса. Для выполнения этого запроса используют команду requests.get().</p>
11 <p>Вот, например, как выглядит запрос GET в отношении Root REST API на GitHub:</p>
11 <p>Вот, например, как выглядит запрос GET в отношении Root REST API на GitHub:</p>
12 requests.get('https://api.github.com') &lt;Response [200]&gt;<h2>Объект Response - получаем ответ на запрос в Python</h2>
12 requests.get('https://api.github.com') &lt;Response [200]&gt;<h2>Объект Response - получаем ответ на запрос в Python</h2>
13 <p>Response - мощный объект, предназначенный для анализа результатов запроса.</p>
13 <p>Response - мощный объект, предназначенный для анализа результатов запроса.</p>
14 response = requests.get('https://api.github.com')<p>В вышеописанном примере мы использовали get() для захвата определённого значения, являющегося частью объекта Response, с последующим помещением этого значения в переменную response. Теперь мы получили возможность использовать переменную response для изучения данных, полученных в результате отправки запроса GET.</p>
14 response = requests.get('https://api.github.com')<p>В вышеописанном примере мы использовали get() для захвата определённого значения, являющегося частью объекта Response, с последующим помещением этого значения в переменную response. Теперь мы получили возможность использовать переменную response для изучения данных, полученных в результате отправки запроса GET.</p>
15 <h2>HTTP-коды состояний</h2>
15 <h2>HTTP-коды состояний</h2>
16 <p>Первые данные, которые мы получим посредством Response, будут коды состояния. Они сообщают о статусе нашего запроса.</p>
16 <p>Первые данные, которые мы получим посредством Response, будут коды состояния. Они сообщают о статусе нашего запроса.</p>
17 <p>К примеру, статус 200 OK означает, что запрос был успешно выполнен. А известная всем ошибка 404 NOT FOUND скажет нам, что запрашиваемый ресурс найден не был. Таких статусных информационных кодов существует довольно много.</p>
17 <p>К примеру, статус 200 OK означает, что запрос был успешно выполнен. А известная всем ошибка 404 NOT FOUND скажет нам, что запрашиваемый ресурс найден не был. Таких статусных информационных кодов существует довольно много.</p>
18 <p>Давайте с помощью .status_code, увидим код состояния, возвращаемый с сервера.</p>
18 <p>Давайте с помощью .status_code, увидим код состояния, возвращаемый с сервера.</p>
19 &gt;&gt;&gt; response.status_code 200<p>В нашем случае .status_code вернул 200, что означает успешно выполненный запрос. Кстати, иногда полученная информация используется при написании кода:</p>
19 &gt;&gt;&gt; response.status_code 200<p>В нашем случае .status_code вернул 200, что означает успешно выполненный запрос. Кстати, иногда полученная информация используется при написании кода:</p>
20 if response.status_code == 200: print('Success!') elif response.status_code == 404: print('Not Found.')<h2>Получаем содержимое страницы в Requests</h2>
20 if response.status_code == 200: print('Success!') elif response.status_code == 404: print('Not Found.')<h2>Получаем содержимое страницы в Requests</h2>
21 <p>Нередко ответ на GET-запрос включает в себя довольно ценную информацию. Эта информация находится в теле сообщения и её называют payload. Применяя атрибуты и методы библиотеки Response, мы сможем получить payload в разных форматах.</p>
21 <p>Нередко ответ на GET-запрос включает в себя довольно ценную информацию. Эта информация находится в теле сообщения и её называют payload. Применяя атрибуты и методы библиотеки Response, мы сможем получить payload в разных форматах.</p>
22 <p>Если хотим получить содержимое запроса в байтах, нужно использовать .content.</p>
22 <p>Если хотим получить содержимое запроса в байтах, нужно использовать .content.</p>
23 &gt;&gt;&gt; response = requests.get('https://api.github.com') &gt;&gt;&gt; response.content<p>Применение .content обеспечивает нам доступ к любым данным в теле запроса. Но нередко надо конвертировать полученные данные в строку с кодировкой UTF-8. Для этого выполняем команду response.text. По умолчанию requests пытается узнать текущую кодировку по заголовкам HTTP. Но мы можем указать нужную кодировку путём добавления перед .text .encoding.</p>
23 &gt;&gt;&gt; response = requests.get('https://api.github.com') &gt;&gt;&gt; response.content<p>Применение .content обеспечивает нам доступ к любым данным в теле запроса. Но нередко надо конвертировать полученные данные в строку с кодировкой UTF-8. Для этого выполняем команду response.text. По умолчанию requests пытается узнать текущую кодировку по заголовкам HTTP. Но мы можем указать нужную кодировку путём добавления перед .text .encoding.</p>
24 &gt;&gt;&gt; response.encoding = 'utf-8' # Optional: requests infers this internally &gt;&gt;&gt; response.text<h2>Заголовки HTTP в Requests</h2>
24 &gt;&gt;&gt; response.encoding = 'utf-8' # Optional: requests infers this internally &gt;&gt;&gt; response.text<h2>Заголовки HTTP в Requests</h2>
25 <p>HTTP-заголовки ответов на запросы тоже могут дать нам полезную информацию. Например, тип содержимого ответного payload либо ограничения по времени для кэширования ответа. Чтобы посмотреть заголовок, надо заглянуть в атрибут .headers. Вот, как это может выглядеть:</p>
25 <p>HTTP-заголовки ответов на запросы тоже могут дать нам полезную информацию. Например, тип содержимого ответного payload либо ограничения по времени для кэширования ответа. Чтобы посмотреть заголовок, надо заглянуть в атрибут .headers. Вот, как это может выглядеть:</p>
26 &gt;&gt;&gt; response.headers {'Server': 'GitHub.com', 'Date': 'Mon, 10 Dec 2018 17:49:54 GMT', 'Content-Type': 'application/json; charset=utf-8', 'Transfer-Encoding': 'chunked', 'Status': '200 OK', 'X-RateLimit-Limit': '60', 'X-RateLimit-Remaining': '59', 'X-RateLimit-Reset': '1544467794', 'Cache-Control': 'public, max-age=60, s-maxage=60', 'Vary': 'Accept', 'ETag': 'W/"7dc470913f1fe9bb6c7355b50a0737bc"', 'X-GitHub-Media-Type': 'github.v3; format=json', 'Access-Control-Expose-Headers': 'ETag, Link, Location, Retry-After, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval, X-GitHub-Media-Type', 'Access-Control-Allow-Origin': '*', 'Strict-Transport-Security': 'max-age=31536000; includeSubdomains; preload', 'X-Frame-Options': 'deny', 'X-Content-Type-Options': 'nosniff', 'X-XSS-Protection': '1; mode=block', 'Referrer-Policy': 'origin-when-cross-origin, strict-origin-when-cross-origin', 'Content-Security-Policy': "default-src 'none'", 'Content-Encoding': 'gzip', 'X-GitHub-Request-Id': 'E439:4581:CF2351:1CA3E06:5C0EA741'}<p>Заголовок .headers возвращает словарь и предоставляет доступ к значению HTTP-заголовка по ключу. К примеру, чтобы посмотреть тип содержимого ответного payload, надо использовать Content-Type.</p>
26 &gt;&gt;&gt; response.headers {'Server': 'GitHub.com', 'Date': 'Mon, 10 Dec 2018 17:49:54 GMT', 'Content-Type': 'application/json; charset=utf-8', 'Transfer-Encoding': 'chunked', 'Status': '200 OK', 'X-RateLimit-Limit': '60', 'X-RateLimit-Remaining': '59', 'X-RateLimit-Reset': '1544467794', 'Cache-Control': 'public, max-age=60, s-maxage=60', 'Vary': 'Accept', 'ETag': 'W/"7dc470913f1fe9bb6c7355b50a0737bc"', 'X-GitHub-Media-Type': 'github.v3; format=json', 'Access-Control-Expose-Headers': 'ETag, Link, Location, Retry-After, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval, X-GitHub-Media-Type', 'Access-Control-Allow-Origin': '*', 'Strict-Transport-Security': 'max-age=31536000; includeSubdomains; preload', 'X-Frame-Options': 'deny', 'X-Content-Type-Options': 'nosniff', 'X-XSS-Protection': '1; mode=block', 'Referrer-Policy': 'origin-when-cross-origin, strict-origin-when-cross-origin', 'Content-Security-Policy': "default-src 'none'", 'Content-Encoding': 'gzip', 'X-GitHub-Request-Id': 'E439:4581:CF2351:1CA3E06:5C0EA741'}<p>Заголовок .headers возвращает словарь и предоставляет доступ к значению HTTP-заголовка по ключу. К примеру, чтобы посмотреть тип содержимого ответного payload, надо использовать Content-Type.</p>
27 &gt;&gt;&gt; response.headers['Content-Type'] 'application/json; charset=utf-8'<p>Согласно специфике HTTP, заголовки являются нечувствительными к регистру. Таким образом, при получении доступа к заголовкам мы можем не беспокоиться о том, какие буквы использованы: строчные либо прописные.</p>
27 &gt;&gt;&gt; response.headers['Content-Type'] 'application/json; charset=utf-8'<p>Согласно специфике HTTP, заголовки являются нечувствительными к регистру. Таким образом, при получении доступа к заголовкам мы можем не беспокоиться о том, какие буквы использованы: строчные либо прописные.</p>
28 <p>Это лишь базовые знания по теме библиотеки Requests в Python и HTTP-заголовков. Если хотите знать больше, вам могут быть полезны следующие статьи: - "<a>Requests в Python - Примеры выполнения HTTP-запросов</a>"; - "<a>Краткое руководство по библиотеке Python Requests</a>".</p>
28 <p>Это лишь базовые знания по теме библиотеки Requests в Python и HTTP-заголовков. Если хотите знать больше, вам могут быть полезны следующие статьи: - "<a>Requests в Python - Примеры выполнения HTTP-запросов</a>"; - "<a>Краткое руководство по библиотеке Python Requests</a>".</p>
29  
29