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