• Парсер каталогу запчастин з антибот-захистом та нормалізацією даних у PostgreSQL + дифф-оновлення

    19 годин тому
    • Бажаний бюджет до 650.01 USD
    • Очікує виконавця...
  • Вихідна ситуація: у відділі постачання ведемо власний каталог автозапчастин та замінників. Постачальник публікує актуальні ціни, залишки та застосовність у закритому B2B-каталозі, де сторінки рендеруються через JS, частина запитів йде в XHR, є антибот (перевірки заголовків, rate-limit, періодичні CAPTCHA), а картки товару змінюють структуру. Потрібен стійкий парсер, який регулярно оновлює дані та фіксує зміни, щоб ми не порівнювали все вручну.

    Технічне середовище та вступні: Linux (Ubuntu 22.04), Python 3.11, PostgreSQL 15. Розгортання в Docker Compose. Доступ до B2B через логін-пароль та 2FA за одноразовим кодом з email (IMAP доступ дамо). Проксі надамо, але їхня якість різна. Зберігаємо 2 мови опису (RU/EN), валюти можуть бути різні.

    Що має вийти: сервіс, який за розкладом збирає з B2B-каталогу категорії та товари, тягне за кожним товаром артикул, бренд, назву, ціни за складами, залишки, терміни поставки, застосовність/аналоги, посилання на зображення, характеристики (ключ-значення), а також позначає зняті з продажу позиції. Дані повинні зберігатися в PostgreSQL у нормалізованій схемі з історією змін (цін/залишків) та можливістю вивантаження у CSV.

    Етапи виконання:
    1) Аналіз джерела та протоколу: визначити точки входу, XHR-ендпоінти, параметри фільтрів/пагінації, ліміти, сигнатури запитів, поведінка антибота, стратегії ретраїв.
    2) Реалізація логіну та сесій: авторизація, обробка 2FA через IMAP, зберігання сесії, автоматичне продовження, безпечне зберігання секретів через env.
    3) Збір даних: обхід категорій, пагінація, збирання карток, завантаження зображень лише за потребою (прапор), вилучення характеристик та аналогів, нормалізація валют/одиниць виміру.
    4) Сховище: PostgreSQL схема (мінімум товари, пропозиції/склади, залишки, ціни-історія, аналоги, характеристики, медіа), міграції, індекси, upsert-логіка та дифф-оновлення.
    5) Стійкість: проксі-rotation, обмеження швидкості, backoff, детект блокувань, перемикання на альтернативний маршрут (XHR vs HTML), докладні логи та метрики виконання.
    6) Експорт та звіти: CLI команди для вивантаження CSV за фільтрами (бренд, категорія, дата), звіт про зміни за період (скільки товарів змінилося за ціною/залишками).

    Обмеження:
    - CAPTCHA вирішувати через зовнішні платні послуги не можна. Якщо з'являється CAPTCHA, завдання парсера - коректно зафіксувати подію, переключити проксі/пауза та продовжити без ручного введення, наскільки це можливо.
    - Навантаження на сайт: не більше 1 запиту в секунду на один проксі, максимум 3 паралельні воркери.
    - Код без прив'язки до GUI, керування через CLI та конфіг.

    Вимірні критерії приймання:
    - Прогін, що повторюється, на тестовому наборі з 5 категорій повинен зібрати не менше 95% товарів, знайдених через вбудований пошук на сайті (похибка допускається через тимчасові блокування, але повинна бути у звіті).
    - Для 100 випадково обраних товарів дані в БД збігаються з сайтом за артикулом, брендом, ціною та залишком (перевіримо вручну за списком).
    - При другому прогоні без змін у джерелі не створюються зайві дублікати та історія цін/залишків не поповнюється.
    - Логи містять: кількість оброблених сторінок, товарів, помилок за типами, середній час відповіді, кількість блокувань/ретраїв.
    - Docker Compose піднімає все однією командою, є README з інструкціями запуску, змінними оточенням та прикладами CLI.

    Переважні інструменти: Playwright (Python) для JS/антибот-обходу + requests/httpx там, де можливо; Alembic для міграцій; структуровані логи (json)
Ваша пропозиція

Ви ще не залишили пропозицію до цього замовлення.
Натисніть «Запропонувати послугу», щоб надіслати свою пропозицію.

Потрібне схоже завдання?

Якщо завдання схоже на ваше, можна переглянути готові послуги в категорії або створити власне завдання з потрібним бюджетом, строками та вимогами.

Завдання «Парсер каталогу запчастин з антибот-захистом та нормалізацією даних у PostgreSQL + дифф-оновлення» можна використати як орієнтир для свого брифа: що потрібно зробити, який результат потрібен і який бюджет вказати.