Все статьи

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

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

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

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

Проблема

Ручной мониторинг цен не масштабируется. Даже небольшому e-commerce бизнесу с 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. Получение и парсинг данных

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 описаны все параметры, необходимые для его настройки.