В этом модуле мы погрузимся в работу с сетью в Python, используя самую популярную библиотеку requests. Вы научитесь отправлять HTTP-запросы (GET и POST), передавать параметры и заголовки, обрабатывать ответы сервера, работать с JSON-данными и правильно реагировать на ошибки соединения.
Задания построены от простого к сложному: начиная с импорта библиотеки и простых запросов, заканчивая обработкой исключений и парсингом сложных структур данных.
Обратите внимание: для выполнения заданий не требуется реальное подключение к интернету, мы моделируем работу с кодом. Внимательно читайте описания и подсказки. Удачи!
- Модуль 1: Основы синтаксиса Python
- Модуль 2: Переменные и типы данных
- Модуль 3: Операторы
- Арифметические операторы (+, -, *, /).
- Целочисленное деление и остаток (// и %).
- Возведение в степень (**).
- Операторы сравнения.
- Логические операторы (and, or, not).
- Операторы присваивания (=, +=, -=).
- Операторы принадлежности (in, not in).
- Операторы идентичности (is, is not).
- Битовые операторы.
- Тернарный оператор.
- Модуль 4: Ввод и вывод данных
- Модуль 5: Условные конструкции
- Модуль 6: Циклы
- Модуль 7: Строки
- Модуль 8: Списки
- Модуль 9: Кортежи
- Модуль 10: Словари
- Модуль 11: Множества
- Модуль 12: Функции
- Модуль 13: Встроенные функции
- Модуль 14: Работа с файлами
- Модуль 15: Обработка исключений
- Модуль 16: Модули и пакеты
- Модуль 17: ООП - Основы
- Модуль 18: ООП - Продвинутый уровень
- Модуль 19: Декораторы
- Модуль 20: Генераторы и итераторы
- Модуль 21: Регулярные выражения
- Модуль 22: Дата и время
- Модуль 23: Математические операции
- Модуль 24: Работа с сетью
- Модуль requests (HTTP запросы).
- GET и POST запросы.
- Обработка ответов.
- Работа с API.
- Модуль 25: Асинхронное программирование
- Модуль 26: Многопоточность
- Модуль 27: Тестирование
- Модуль 28: Базы данных
- Модуль 29: Алгоритмы и структуры данных
- Модуль 30: Продвинутые возможности
Первый запрос к серверу
Чтобы начать работу, необходимо импортировать библиотеку. Затем выполните простой GET-запрос к указанному сайту. Заполните пропуски в коде.
import input1S
url = 'https://www.google.com'
response = input2S.input3S(url)
print(response.status_code)Составные части ответа
Объект ответа (Response) содержит много полезной информации. Сопоставьте атрибут или метод объекта `response` с тем, что он возвращает.
response.contentresponse.status_coderesponse.textresponse.json()Классификация кодов состояния HTTP
Сервер общается с нами с помощью кодов. Распределите коды состояния по категориям: Успех (Success), Ошибка клиента (Client Error) и Ошибка сервера (Server Error).
Поиск с параметрами
��оберите код, который выполняет поиск на сайте, передавая параметры запроса через словарь. URL должен быть задан в переменной, параметры — в словаре, и затем выполнен запрос.
response = requests.get(url, params=payload)payload = {'query': 'python', 'page': 1}url = 'https://example.com/search'import requestsresponse = requests.get(url, data=payload)payload = 'query=python&page=1'Анализ кода с проверкой статуса
Проанализируйте код. Представьте, что сервер вернул ошибку **404 (Not Found)**. Что выведет данный скрипт?
import requests
# Представим, что сервер вернул 404
# response.status_code == 404
if response.ok:
print("Данные получены")
elif response.status_code == 404:
print("Ресурс не найден")
else:
print("Произошла ошибка")Отправка POST запроса с JSON
Нам нужно отправить данные о новом пользователе на сервер методом 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)Исправление ошибки в заголовках
Программист пытался отправить запрос с кастомным 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)Безопасный запрос с обработкой ошибок
Расставьте строки кода так, чтобы запрос выполнялся внутри блока 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 ответа
Представьте, что мы сделали запрос к 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'])