← Все статьи

Создание трекера цен в реальном времени с FourA

Цены конкурентов меняются каждый час. Рассказываем, как создать автоматический трекер цен для сотен страниц товаров с помощью одного API-вызова и базового Python.

Решения по ценообразованию в e-commerce принимаются быстро. Конкурент снижает цену на 5%, и уже через несколько часов покупатели это замечают. Выигрывают компании, которые узнают об этом первыми.

Раньше для создания системы мониторинга цен требовалось поддерживать собственную proxy-инфраструктуру, бороться с защитой от ботов и писать отдельные парсеры под каждый целевой сайт. FourA сводит эту сложность к одному API-вызову.

Проблема

Ручная проверка цен не масштабируется. Даже небольшому интернет-магазину с 50 конкурентами нужно отслеживать сотни страниц товаров. При трех проверках в день это более 1000 запросов ежедневно, каждый из которых может быть заблокирован, ограничен по rate limit или сломан из-за редизайна сайта.

Подход

Вот как выглядит готовый к продакшену пайплайн мониторинга цен с использованием FourA:

1. Опишите каталог товаров

Начните со структурированного списка URL конкурентов и CSS-селекторов, в которых отображаются цены:

products = [
    {"sku": "WDG-001", "competitor": "Store A", "url": "https://store-a.com/widget", "selector": ".price-current"},
    {"sku": "WDG-001", "competitor": "Store B", "url": "https://store-b.com/products/widget", "selector": "[data-price]"},
]

2. Fetch и Parse

FourA берет на себя сложные задачи: TLS fingerprinting, ротацию proxy и рендеринг JavaScript. Ваш код просто отправляет URL и получает HTML в ответ:

import requests
from bs4 import BeautifulSoup

def get_price(product):
    resp = requests.post("https://eu.api.foura.ai/api/v1/tasks", headers={
        "Authorization": "Bearer YOUR_API_KEY",
        "Content-Type": "application/json"
    }, json={"url": product["url"], "type": "proxy"})
    
    html = resp.json()["content"]
    soup = BeautifulSoup(html, "html.parser")
    el = soup.select_one(product["selector"])
    return float(el.text.strip().replace("$", "").replace(",", "")) if el else None

3. Отслеживайте изменения во времени

Сохраняйте результаты в базе данных или CSV. Отмечайте существенные изменения для отправки алертов:

if abs(new_price - last_price) / last_price > 0.03:  # 3% threshold
    send_alert(f"{product['competitor']} changed {product['sku']} from ${last_price} to ${new_price}")

4. Настройка расписания в Cron

Запускайте трекер каждый час или раз в несколько часов в зависимости от волатильности цен на вашем рынке.

Почему это работает

  • Не нужно обслуживать инфраструктуру. Никаких proxy-серверов, ферм браузеров и логики ротации IP.
  • Адаптация к изменениям защиты. Тип proxy от FourA автоматически повторяет попытки через другие маршруты при блокировке.
  • Линейное масштабирование. Добавление еще 100 товаров требует всего 100 дополнительных API-вызовов без изменения архитектуры.

С чего начать

Весь описанный пайплайн (без учета логики оповещений) занимает менее 50 строк на Python. Когда он заработает для 50 товаров, масштабирование до 500 потребует лишь расширить список. API-вызов, парсинг и расписание остаются прежними. В этом и заключается суть.

Полный пример кода доступен в руководстве How-To, а документация по API описывает все параметры, необходимые для кастомизации.