Сбор фотокаталога через API — практический проект на Python для тех, кто уже умеет писать небольшие программы. Помогите редактору общественной фототеки превратить предварительный просмотр первой страницы в полный отфильтрованный каталог CSV. Вы создадите повторно используемый клиент для подготовленного локального HTTP API и сохраните предыдущий полный экспорт при сбое последующего запроса.
Две пошаговые лабораторные работы проведут вас от чтения одного ответа до обхода всех курсоров, удаления повторов ID и публикации полного результата. В самостоятельном задании те же методы применяются к другой коллекции, размеру страницы и условиям отбора. Каждый модуль начинается в собственной подготовленной среде. Ориентируйтесь примерно на 110–150 минут: это оценка автора, а не время, измеренное при работе новичков.
Чему вы научитесь
После завершения курса вы сможете:
- запрашивать записи JSON по HTTP, кодировать параметры запроса, задавать тайм-аут и отличать успешные ответы от ошибок HTTP;
- обращаться с курсорами пагинации как с непрозрачными значениями и продолжать до
nullвnext_cursor, даже после пустых или неполных страниц; - сохранять одну запись на каждый стабильный ID фотографии, не объединяя разные фотографии с одинаковым названием;
- точно фильтровать по категории и ориентации с учётом регистра и записывать все пять полей в корректный CSV UTF-8, оставляя только заголовок при отсутствии совпадений;
- отклонять неудачный запрос или цикл повторяющихся курсоров с ненулевым кодом завершения, сохраняя предыдущий полный результат;
- публиковать успешный экспорт через уникальный временный файл в каталоге вывода, не перезаписывая посторонние соседние файлы;
- использовать ту же программу с другим предоставленным URL коллекции, размером страницы, фильтрами и путём вывода.
Для кого этот курс
Курс предназначен для изучающих Python, которые хотят применить знакомые циклы и коллекции для создания полезного API-клиента и повторно используемого файла данных.
Предварительные требования: Функции, коллекции, циклы, исключения и базовый вывод в файлы на Python, а также основы работы с терминалом. Подойдёт проект списка покупок для пикника или эквивалентный опыт. HTTP, структура ответов JSON, кодирование URL, курсоры, кавычки CSV и замена через временный файл объясняются в пошаговых лабораторных работах.
Учебная среда: LabEx предоставляет редактор Python и терминал в браузере, а также специально созданный локальный демонстрационный API. В каталоге используются синтетические иллюстрации и вымышленные сведения об авторах. Исходные данные, код службы и медиаматериалы остаются неизменными; для упражнений по сбоям и восстановлению разрешены только явно описанные демонстрационные элементы управления ошибками и циклами курсоров. Надписи и вывод среды выполнения остаются на английском языке.
Часто задаваемые вопросы
Нужны ли внешний аккаунт или ключ API?
Нет. Запросы отправляются подготовленной локальной демонстрационной службе. Вы не обращаетесь к размещённому у провайдера фотосервису, не собираете данные с внешних сайтов и не реализуете аутентификацию.
Буду ли я создавать сайт или скачивать фотографии?
Нет. Вы пишете клиент Python и экспортируете метаданные фотографий в CSV. Предоставленные иллюстрации помогают узнавать записи; скачивание изображений, рисование и веб-разработка в проект не входят.
Что произойдёт, если сбор прервётся на середине?
Клиент должен завершиться с ошибкой и сохранить существующий полный экспорт. После восстановления демонстрационной службы вы начинаете новый конечный пакет с самого начала. Автоматические повторные попытки и продолжение прерванных пакетов в курс не входят. Локальная замена файла не гарантирует сохранность при отключении питания или координацию параллельной записи.
Как самостоятельное задание развивает лабораторные работы?
Вы собираете другую коллекцию с иными параметрами и подходящими записями на последней странице. Инструменты, правила пагинации, фильтрация, формат CSV и обработка сбоев уже изучены.

