Модуль requests (HTTP запросы)

Тренажер по Python для пользователей с начальным уровнем подготовки.

Тренажер по Python

В этом модуле мы погрузимся в работу с сетью в Python, используя самую популярную библиотеку requests. Вы научитесь отправлять HTTP-запросы (GET и POST), передавать параметры и заголовки, обрабатывать ответы сервера, работать с JSON-данными и правильно реагировать на ошибки соединения.

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

Обратите внимание: для выполнения заданий не требуется реальное подключение к интернету, мы моделируем работу с кодом. Внимательно читайте описания и подсказки. Удачи!

Список тем

Первый запрос к серверу

id: 40145_task_req_01

Чтобы начать работу, необходимо импортировать библиотеку. Затем выполните простой GET-запрос к указанному сайту. Заполните пропуски в коде.

Заполните пропуски
import input1S

url = 'https://www.google.com'
response = input2S.input3S(url)

print(response.status_code)
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

Составные части ответа

id: 40145_task_req_02

Объект ответа (Response) содержит много полезной информации. Сопоставьте атрибут или метод объекта `response` с тем, что он возвращает.

Сопоставьте строки в правой части с соответствующими строками в левой по порядковому номеру
Возвращает тело ответа как строку (Unicode)
Возвращает тело ответа в байтах (binary)
Числовой код состояния ответа (например, 200)
Метод для десериализации JSON-ответа в словарь Python
response.content
response.status_code
response.text
response.json()
Сообщения
Проверить
Показать подсказку

Классификация кодов состояния HTTP

id: 40145_task_req_03

Сервер общается с нами с помощью кодов. Распределите коды состояния по категориям: Успех (Success), Ошибка клиента (Client Error) и Ошибка сервера (Server Error).

Перетяните элементы в соответствующие блоки
Успех (2xx)
Ошибка клиента (4xx)
Ошибка сервера (5xx)
200 OK
404 Not Found
500 Internal Server Error
201 Created
403 Forbidden
503 Service Unavailable
Сообщения
Проверить
Показать подсказку

Поиск с параметрами

id: 40145_task_req_04

��оберите код, который выполняет поиск на сайте, передавая параметры запроса через словарь. URL должен быть задан в переменной, параметры — в словаре, и затем выполнен запрос.

Перетяните в правильном порядке строки из одного блока в другой
response = requests.get(url, params=payload)
payload = {'query': 'python', 'page': 1}
url = 'https://example.com/search'
import requests
response = requests.get(url, data=payload)
payload = 'query=python&page=1'
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

Анализ кода с проверкой статуса

id: 40145_task_req_05

Проанализируйте код. Представьте, что сервер вернул ошибку **404 (Not Found)**. Что выведет данный скрипт?

Выберите правильный вариант ответа
import requests

# Представим, что сервер вернул 404
# response.status_code == 404

if response.ok:
    print("Данные получены")
elif response.status_code == 404:
    print("Ресурс не найден")
else:
    print("Произошла ошибка")
Сообщения
Проверить
Показать подсказку

Отправка POST запроса с JSON

id: 40145_task_req_06

Нам нужно отправить данные о новом пользователе на сервер методом POST. Данные должны быть отправлены именно в формате JSON. Заполните пропуски, используя банк токенов.

Нужно правильно расставить в пропуски предложенные варианты
import requests

url = 'https://api.service.com/users'
user_data = {'name': 'Alice', 'role': 'admin'}

response = requests.input1S(url, input2S=user_data)

print(response.input3S)
post
json
status_code
get
data
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

Исправление ошибки в заголовках

id: 40145_task_req_07

Программист пытался отправить запрос с кастомным User-Agent, но допустил ошибку в синтаксисе аргумента функции get. Найдите и исправьте строку с запросом.

Найдите ошибку и исправьте
import requests
 
url = 'https://httpbin.org/user-agent'
custom_header = {'User-Agent': 'my-app/1.0'}
response = requests.get(url, header=custom_header)
print(response.text)
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

Безопасный запрос с обработкой ошибок

id: 40145_task_req_08

Расставьте строки кода так, чтобы запрос выполнялся внутри блока try-except, а в случае ошибки HTTP (например, 404 или 500) программа перехватывала исключение.

Расставьте строки в правильном порядке
print(f"HTTP ошибка: {err}")
try:
except requests.exceptions.HTTPError as err:
    response = requests.get('https://api.github.com')
    response.raise_for_status()
Сообщения
Проверить
Показать подсказку

Парсинг JSON ответа

id: 40145_task_req_09

Представьте, что мы сделали запрос к API погоды, и сервер вернул JSON-объект, который превратился в словарь Python `data`.

Напишите, что выведет последний `print`, основываясь на структуре данных. Введите число.

Что должно получиться?
# Имитация ответа от response.json()
data = {
    "weather": [{"main": "Clear", "description": "clear sky"}],
    "main": {
        "temp": 15,
        "feels_like": 12,
        "humidity": 56
    },
    "name": "London"
}

print(data['main']['temp'])
Сообщения
Проверить
Показать подсказку
НайтиКурс.Ру