全部文章

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

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

电子商务中的定价决策瞬息万变。竞争对手降价 5%,几小时内客户就会察觉。胜出的企业往往是那些最先发现变化的企业。

过去,构建价格监控系统需要维护 proxy 基础设施、应对反爬虫系统,并为每个目标网站编写自定义爬虫。FourA 将这些复杂性简化为单次 API 调用。

问题所在

手动检查价格无法扩展。即使是只有 50 个竞争对手的小型电商企业,也需要追踪数百个产品页面。如果每天检查三次,每天就有超过 1,000 次 requests,每一次都可能被拦截、触发 rate limit,或者因网站改版而失效。

解决方案

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

1. 定义产品目录

首先准备一份结构化的竞争对手 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 指纹识别、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 轮换逻辑。
  • 自适应防护变化。 当某条线路被拦截时,FourA 的 proxy 类型会自动通过不同路由进行重试。
  • 线性扩展。 增加 100 个产品只需增加 100 次 API 调用,无需更改架构。

开始使用

上述整个流水线(不含告警逻辑)运行代码不足 50 行 Python。一旦它适用于 50 个产品,扩展到 500 个产品也只需增加列表长度。API 调用保持不变,解析保持不变,定时任务也保持不变。这就是关键所在。

完整的示例代码可在 操作指南 中获取,API 文档 涵盖了自定义所需的所有参数。