← 全部文章

使用 FourA 构建实时价格追踪器

竞争对手的价格每小时都在变化。以下是如何通过单次 API 调用和基础 Python,在数百个产品页面上构建自动化价格追踪器。

电商领域的定价决策瞬息万变。竞争对手降价 5%,数小时内客户就会察觉。能够胜出的企业,往往是最先察觉变化的那一批。

在过去,构建价格监控系统需要维护 proxy 基础设施、应对反爬检测,并针对每个目标站点编写定制爬虫。FourA 将这些复杂性收敛为一个单一的 API 调用。

问题所在

手动检查价格无法扩展。即使只有 50 个竞争对手的小型电商,也需要追踪数百个产品页面。按每天检查三次计算,每日请求量就超过 1,000 次,且每次请求都可能面临被封禁、触发 rate limit 或因网站改版而失效的风险。

解决方案

以下是使用 FourA 构建的生产级价格监控流水线:

1. 定义产品目录

首先整理一份包含竞争对手 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. 获取与解析

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. 追踪长期变化

将结果存储在数据库或 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 配置定时任务

根据目标市场的价格波动频率,设置追踪器每小时或每隔几小时运行一次。

方案优势

  • 零基础设施维护。 无需维护代理服务器、浏览器集群或 IP 轮换逻辑。
  • 自适应防护机制变更。 当某个路由受阻时,FourA 的 proxy 类型会自动通过其他路由重试。
  • 线性扩展。 增加 100 个监控商品仅需多发 100 次 API 调用,无需调整底层架构。

开始使用

上述完整流程(不含告警逻辑)用不到 50 行 Python 代码即可实现。一旦能稳定处理 50 个商品,扩展到 500 个也只是拉长列表而已。API 调用方式不变,解析逻辑不变,调度机制亦保持不变。这正是该方案的核心价值所在。

完整示例代码已收录至 操作指南,API 文档则详细说明了自定义配置所需的每个参数。