Tất cả bài viết

Xây dựng hệ thống theo dõi giá theo thời gian thực với FourA

Giá của đối thủ cạnh tranh thay đổi theo từng giờ. Dưới đây là cách xây dựng hệ thống theo dõi giá tự động trên hàng trăm trang sản phẩm chỉ với một API call duy nhất và Python cơ bản.

Các quyết định về giá trong thương mại điện tử diễn ra rất nhanh chóng. Một đối thủ cạnh tranh giảm giá 5% và chỉ trong vài giờ, khách hàng đã nhận ra điều đó. Những công ty chiến thắng là những bên nhận biết đầu tiên.

Việc xây dựng một hệ thống theo dõi giá trước đây từng đòi hỏi phải duy trì hạ tầng proxy, đối phó với các hệ thống chống bot và viết các scraper tùy chỉnh cho từng trang web mục tiêu. FourA thu gọn sự phức tạp đó vào một API call duy nhất.

Vấn đề

Kiểm tra giá thủ công không thể mở rộng quy mô. Ngay cả một doanh nghiệp thương mại điện tử nhỏ với 50 đối thủ cạnh tranh cũng cần theo dõi hàng trăm trang sản phẩm. Với tần suất ba lần kiểm tra mỗi ngày, con số đó là hơn 1.000 request hàng ngày, mỗi request đều có nguy cơ bị chặn, bị rate limit hoặc bị lỗi do trang web thay đổi giao diện.

Cách tiếp cận

Dưới đây là cấu trúc của một pipeline theo dõi giá sẵn sàng cho môi trường production với FourA:

1. Định nghĩa danh mục sản phẩm

Bắt đầu với một danh sách có cấu trúc gồm các URL của đối thủ cạnh tranh và các CSS selector nơi hiển thị giá:

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 và Parse

FourA xử lý các phần phức tạp: TLS fingerprinting, proxy rotation và JavaScript rendering. Mã nguồn của bạn chỉ cần gửi một URL và nhận lại 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. Theo dõi thay đổi theo thời gian

Lưu trữ kết quả trong cơ sở dữ liệu hoặc file CSV. Đánh dấu các thay đổi lớn để gửi cảnh báo:

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. Lập lịch với Cron

Chạy trình theo dõi mỗi giờ hoặc vài giờ một lần tùy thuộc vào mức độ biến động giá trên thị trường của bạn.

Tại sao giải pháp này hiệu quả

  • Không cần duy trì hạ tầng. Không cần máy chủ proxy, không cần browser farm, không cần logic xoay vòng IP.
  • Tự động thích ứng với các thay đổi về bảo mật. Loại proxy của FourA tự động thử lại qua các tuyến đường khác nhau khi một tuyến bị chặn.
  • Mở rộng quy mô tuyến tính. Thêm 100 sản phẩm khác chỉ đơn giản là thực hiện thêm 100 API call mà không cần thay đổi kiến trúc.

Bắt đầu

Toàn bộ pipeline ở trên (không tính logic cảnh báo) hoạt động với chưa đầy 50 dòng code Python. Và một khi nó đã hoạt động ổn định cho 50 sản phẩm, việc mở rộng lên 500 sản phẩm chỉ là kéo dài danh sách. API call giữ nguyên, việc parse giữ nguyên và việc lập lịch cũng giữ nguyên. Đó chính là điểm mấu chốt.

Mã nguồn ví dụ đầy đủ có sẵn trong hướng dẫn How-To, và tài liệu API sẽ bao gồm mọi tham số bạn cần để tùy chỉnh.