Wszystkie wpisy

Budowa monitora cen w czasie rzeczywistym z FourA

Ceny konkurencji zmieniają się co godzinę. Oto jak zbudować automatyczny monitor cen dla setek stron produktów za pomocą jednego wywołania API i prostego kodu w Pythonie.

Decyzje cenowe w e-commerce zapadają szybko. Konkurent obniża cenę o 5% i w ciągu kilku godzin klienci to zauważają. Wygrywają te firmy, które dowiedzą się o tym pierwsze.

Budowanie systemu monitorowania cen wymagało kiedyś utrzymywania infrastruktury proxy, walki z systemami antybotowymi i pisania dedykowanych scraperów dla każdej witryny. FourA sprowadza całą tę złożoność do jednego wywołania API.

Problem

Ręczne sprawdzanie cen się nie skaluje. Nawet mały sklep e-commerce z 50 konkurentami musi śledzić setki stron produktów. Przy trzech sprawdzeniach dziennie daje to ponad 1000 requestów na dobę, z których każdy może zostać zablokowany, objęty rate limit lub przestać działać przez zmianę wyglądu strony.

Podejście

Oto jak wygląda gotowy do wdrożenia produkcyjnego proces monitorowania cen z FourA:

1. Zdefiniuj katalog produktów

Zacznij od ustrukturyzowanej listy adresów URL konkurencji i selektorów CSS, w których pojawiają się ceny:

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. Pobieranie i parsowanie

FourA zajmuje się najtrudniejszymi zadaniami: fingerprintingiem TLS, rotacją proxy i renderowaniem JavaScript. Twój kod po prostu wysyła URL i odbiera 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. Śledzenie zmian w czasie

Zapisuj wyniki w bazie danych lub pliku CSV. Oznaczaj znaczące zmiany, aby wyzwalać alerty:

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. Harmonogramowanie za pomocą Cron

Uruchamiaj monitor co godzinę lub co kilka godzin, w zależności od zmienności cen na Twoim rynku.

Dlaczego to działa

  • Brak infrastruktury do utrzymania. Brak serwerów proxy, farm przeglądarek czy logiki rotacji adresów IP.
  • Dostosowanie do zmian w zabezpieczeniach. Typ proxy w FourA automatycznie ponawia próby przez inne trasy, gdy jedna zostanie zablokowana.
  • Skalowanie liniowe. Dodanie kolejnych 100 produktów to po prostu 100 kolejnych wywołań API, bez konieczności wprowadzania zmian w architekturze.

Jak zacząć

Cały powyższy proces (bez logiki alertów) mieści się w niecałych 50 liniach kodu w Pythonie. A kiedy działa już dla 50 produktów, skalowanie do 500 wymaga jedynie wydłużenia listy. Wywołanie API pozostaje bez zmian, parsowanie pozostaje bez zmian i harmonogramowanie pozostaje bez zmian. O to właśnie chodzi.

Pełny przykładowy kod jest dostępny w poradniku How-To, a dokumentacja API opisuje każdy parametr potrzebny do jego dostosowania.