Decyzje cenowe w e-commerce zapadają szybko. Konkurent obniża cenę o 5% i w ciągu kilku godzin klienci to zauważają. Wygrywają firmy, które dostrzegą to jako pierwsze.
Budowa systemu monitorowania cen wymagała kiedyś utrzymywania infrastruktury proxy, radzenia sobie z detekcją botów i pisania dedykowanych scraperów dla każdej docelowej witryny. FourA redukuje tę złożoność do pojedynczego wywołania API.
Problem
Ręczne sprawdzanie cen nie skaluje się. Nawet mały sklep internetowy z 50 konkurentami musi śledzić setki stron produktów. Przy trzech sprawdzeniach dziennie daje to ponad 1000 zapytań na dobę, z których każde może zostać zablokowane, objęte rate limitem lub zepsute przez zmianę struktury strony.
Podejście
Oto jak wygląda gotowy do wdrożenia na produkcji pipeline monitorowania cen z FourA:
1. Zdefiniuj swój katalog produktów
Zacznij od ustrukturyzowanej listy adresów URL konkurencji oraz selektorów CSS wskazujących na 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ę trudnymi elementami: fingerprintingiem TLS, rotacją proxy i renderowaniem JavaScriptu. Twój kod po prostu wysyła URL i otrzymuje w odpowiedzi 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. Śledź zmiany w czasie
Zapisuj wyniki w bazie danych lub pliku CSV. Oznaczaj istotne zmiany, aby generować 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. Zaplanuj zadanie w Cron
Uruchamiaj tracker co godzinę lub co kilka godzin, zależnie od zmienności cen na Twoim rynku.
Dlaczego to działa
- Brak infrastruktury do utrzymania. Bez serwerów proxy, farm przeglądarek i logiki rotacji IP.
- Dostosowanie do zmian zabezpieczeń. Typ proxy w FourA automatycznie ponawia próby przez inne trasy, gdy jedna zostanie zablokowana.
- Liniowe skalowanie. Dodanie kolejnych 100 produktów to po prostu 100 kolejnych wywołań API, bez konieczności zmian w architekturze.
Pierwsze kroki
Cały powyższy potok (nie licząc logiki powiadomień) mieści się w niecałych 50 liniach kodu w Pythonie. A gdy działa już dla 50 produktów, skalowanie do 500 wymaga jedynie dłuższej listy. Wywołanie API, parsowanie i harmonogram zadań pozostają bez zmian. O to właśnie chodzi.
Pełny przykładowy kod jest dostępny w przewodniku How-To, a dokumentacja API opisuje każdy parametr potrzebny do jego dostosowania.