이커머스에서 가격 결정은 빠르게 이루어집니다. 경쟁사가 가격을 5% 인하하면 몇 시간 내에 고객들이 이를 알아차립니다. 먼저 알아차리는 기업이 승리합니다.
기존에는 가격 모니터링 시스템을 구축하기 위해 proxy 인프라를 유지 관리하고, 안티봇 시스템에 대응하며, 대상 사이트마다 맞춤형 스크래퍼를 작성해야 했습니다. FourA는 이러한 복잡성을 단 한 번의 API 호출로 해결합니다.
The Problem
수동 가격 확인은 확장성이 없습니다. 50개의 경쟁사를 가진 소규모 이커머스 비즈니스라도 수백 개의 상품 페이지를 추적해야 합니다. 하루에 세 번씩만 확인해도 매일 1,000회가 넘는 request가 발생하며, 각 request는 차단되거나, rate limit에 걸리거나, 사이트 리뉴얼로 인해 작동하지 않을 수 있습니다.
The Approach
FourA를 활용한 프로덕션 환경 수준의 가격 모니터링 파이프라인은 다음과 같습니다.
1. Define Your Product Catalog
경쟁사 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 and Parse
FourA가 TLS 핑거프린팅, 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. Track Changes Over Time
결과를 데이터베이스나 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. Schedule with Cron
시장의 가격 변동성에 따라 매시간 또는 몇 시간마다 추적기를 실행합니다.
Why This Works
- 유지 관리할 인프라가 없습니다. proxy 서버, 브라우저 팜, IP 로테이션 로직이 필요하지 않습니다.
- 보안 조치 변경에 적응합니다. FourA의 proxy 유형은 경로가 차단되면 다른 경로를 통해 자동으로 재시도합니다.
- 선형적으로 확장됩니다. 100개의 상품을 추가하더라도 아키텍처 변경 없이 단지 100번의 API 호출만 추가하면 됩니다.
Getting Started
위의 전체 파이프라인(알림 로직 제외)은 50줄 미만의 Python 코드로 실행됩니다. 그리고 50개의 상품에 대해 작동하기 시작하면, 500개로 확장하는 것은 단지 목록을 늘리는 것뿐입니다. API 호출도 동일하고, 파싱도 동일하며, 일정 예약도 동일합니다. 이것이 핵심입니다.
전체 예제 코드는 How-To 가이드에서 확인할 수 있으며, API 문서에서 커스터마이징에 필요한 모든 매개변수를 다룹니다.