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

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

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

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

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

Проблемът

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

Подходът

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

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

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

Първи стъпки

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

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