Задание: Парсер ссылки с poizon (Дистанционная работа)
## 1. Описание задачи
Мне нужен промежуточный backend-сервис (API) для моего Telegram-бота. В бот отправляют ссылку на товар с китайской платформы POIZON, а ваш сервис должен спарсить страницу и вернуть структурированные данные о товаре (название, цену, фото, размеры и т.д.) в формате JSON.
ВАЖНО: потребуется парсить мобильное приложение! веб сервисы отдают не ту информацию, мне важно получать информацию с внутреннего рынка, а это только мобильное приложение
**Как это будет работать:**
1. Telegram-бот (его пишу отдельно я или другой разработчик) отправляет HTTP-запрос с URL товара на ваш сервис.
2. Ваш сервис парсит страницу POIZON.
3. Ваш сервис возвращает готовый JSON-ответ.
4. Бот отдает эти данные пользователю.
## 2. Что должен делать сервис (функциональные требования)
### 2.1. Единственный эндпоинт
Сервис должен принимать запросы по URL (`/parse`) с параметром `url` (ссылка на товар).```
### 2.2. Какие данные нужно извлечь (обязательно)
Это самый важный пункт. Сервис должен достать со страницы товара следующее:
* **Название товара:** Полное название.
* **Цена:** В китайских юанях (CNY). Было бы отлично, если бы сервис умел конвертировать цену в USD и RUB по текущему курсу (можно использовать бесплатное API для курсов валют).
* **Фотографии:** Массив прямых ссылок на изображения в хорошем качестве.
* **Размеры и наличие:** Список доступных размеров, желательно с соответствием EU/US/UK/см и ценой для каждого размера (если она разная). Статус "в наличии/нет в наличии" для каждого размера.
* **Категория:** Полный путь категории (например, "Обувь > Кроссовки > Nike").
* **Артикул (SKU):** Уникальный код товара.
* **Вес и габариты упаковки:** Если эта информация указана на странице.
* **Общее наличие:** In stock / Out of stock.
### 2.3. Как должен выглядеть ответ
Сервис должен возвращать JSON. Я привел пример в полной версии ТЗ, но структура должна быть понятной и включать все пункты из раздела 2.2.
### 2.4. Обработка ошибок
Сервис должен корректно реагировать на проблемы:
* Если ссылка битая или товара нет → вернуть `404 Not Found`.
* Если POIZON заблокировал запрос или не отвечает → вернуть `503 Service Unavailable`.
* Если прислали ссылку не на POIZON → вернуть `400 Bad Request`.
* Все ошибки нужно логировать (записывать в файл).
## 3. Технические требования (что важно для меня)
### 3.1. Стек технологий
Вы можете выбрать любой удобный вам стек (Python, Node.js, Go, PHP и т.д.), но в отклике, пожалуйста, **обоснуйте свой выбор**. Мне важно, чтобы технология была надежной и подходила для задач парсинга. Например, если выберете Python, буду благодарен за указание конкретных библиотек (aiohttp, requests, BeautifulSoup, Scrapy и т.д.).
### 3.2. Устойчивость к блокировкам (это критично!)
POIZON может блокировать запросы от ботов. Ваш сервис должен это учитывать. Вам нужно продумать механизмы:
* Использование прокси (пул прокси-серверов). Желательно, чтобы прокси можно было легко менять в конфиге.
* Ротация User-Agent и других заголовков.
* Эмуляция поведения реального пользователя (паузы между запросами в пределах одного парсинга).
* Если возможно — использование headless-браузера (например, Puppeteer или Playwright) для обхода сложной защиты.
### 3.3. Инфраструктура и запуск
* Сервис должен запускаться в контейнере Docker. Мне нужен `Dockerfile` и готовый образ.
* Код должен быть выложен в Git-репозиторий (GitHub, GitLab).
* Настройки (ключи от API курсов валют, список прокси, user-agent'ы) должны выноситься в переменные окружения или конфиг-файл.
## 4. Что я должен получить в итоге (результат работы)
1. **Исходный код** всего сервиса в репозитории.
2. **Понятный README.md**, где написано:
* Как установить все зависимости.
* Как настроить прокси и другие параметры.
* Как запустить сервис локально и через Docker.
3. **Документация по API:** хотя бы примеры запросов и ответов (можно curl).
4. **Dockerfile** и, если нужно, `docker-compose.yml` для простого запуска.
5. **Примеры работы:** скриншоты или коллекция в Postman, показывающие, что сервис работает и парсит данные.
## 6. Дополнительно (не обязательно, но приветствуется)
### 6.1. Модуль автовыкупа
Если вы имеете опыт в автоматизации покупок на китайских площадках и готовы в будущем взяться за модуль автовыкупа (оформление заказа на сайте по заданным параметрам) — это огромный плюс. Эта задача будет оплачиваться отдельно, но наличие готового исполнителя на "все руки" для меня очень ценно.
## Откликаясь на проект, пожалуйста, напишите:
1. Каким стеком планируете пользоваться и почему.
2. Есть ли у вас опыт парсинга сложных сайтов (особенно китайских) и борьбы с блокировками.
3. Примерную стоимость и сроки.
4. Ссылки на похожие работы (если есть).