Всички публикации

Създаване на инструмент за проследяване на цени в реално време с FourA

Цените на конкурентите се променят на всеки час. Ето как да създадете автоматизиран инструмент за проследяване на цени в стотици продуктови страници с една единствена API заявка и базов Python.

Решенията за ценообразуване в електронната търговия се вземат бързо. Конкурент намалява цената си с 5% и в рамките на часове клиентите забелязват. Компаниите, които печелят, са тези, които забелязват първи.

Създаването на система за мониторинг на цените преди изискваше поддръжка на proxy инфраструктура, справяне с anti-bot системи и писане на персонализирани scrapers за всеки целеви сайт. FourA съкращава тази сложност до една единствена API заявка.

Проблемът

Ръчната проверка на цените не е мащабируема. Дори малък бизнес за електронна търговия с 50 конкуренти трябва да проследява стотици продуктови страници. При три проверки на ден това са над 1000 requests дневно, всяка от които потенциално блокирана, с наложен rate limit или счупена от промяна в дизайна на сайта.

Подходът

Ето как изглежда един готов за производствена среда pipeline за мониторинг на цени с FourA:

1. Дефинирайте своя продуктов каталог

Започнете със структуриран списък с URLs на конкуренти и 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 заявки без нужда от архитектурни промени.

Начало

Целият pipeline по-горе (без логиката за известяване) работи в под 50 реда на Python. И след като заработи за 50 продукта, мащабирането до 500 е просто по-дълъг списък. API заявката остава същата, парсването остава същото и планирането остава същото. Това е цялата идея.

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