你将构建什么
一个包含以下内容的 GitHub 仓库:- 一个
skus.json文件,列出要监控的 Amazon 产品 URL - 一个 Python 脚本,将 SKU 列表 POST 到 Bright Data Amazon Scraper API
- 一个 GitHub Actions 工作流,按每日计划运行脚本
- Bright Data 配置为将每个快照交付到你的 S3 桶
前提条件
- 一个 Bright Data 账户,包括 API 密钥(获取你的密钥)
- 一个已配置 Bright Data 交付的 S3 桶。请按照 Amazon 到 S3 交付 完成一次,然后返回。本教程假设交付目标已保存在你的 Amazon Scraper 设置中。
- 一个 GitHub 账户和一个新的(空)仓库
- 本地安装的 Python 3.9+
- 本地安装的 Git
第 1 部分:创建 SKU 列表
在本地克隆你的空 GitHub 仓库,并在仓库根目录创建skus.json 文件:
skus.json
第 2 部分:编写触发脚本
在仓库根目录创建trigger_scrape.py:
trigger_scrape.py
requirements.txt:
- **脚本不等待结果。**它触发脚本然后退出。Bright Data 异步运行爬取,并通过你在 Scraper 设置中保存的交付配置直接将结果交付到 S3。这是整个要点:脚本是一个廉价的、无状态的触发器。
- **API 密钥来自环境变量。**永远不要将密钥提交到仓库。我们将在第 4 部分将其关联到 GitHub Actions Secrets。
第 3 部分:在本地运行
安装依赖项并使用你的密钥运行脚本:价格字段是
final_price,对于缺货或通货不明确的商品,它可以是 null。你的 BI 管道应该显式处理这种情况,而不是在缺少键时崩溃。snapshot_id 而非日期来命名。这是有意为之的:每个快照都是不可变的,你可以按创建时间戳或启用版本控制来按时间顺序遍历桶。我们将在”后续步骤”中讨论命名约定。
第 4 部分:在 GitHub Actions 上调度工作流
现在让我们将触发器从你的笔记本电脑移到每日计划。 创建.github/workflows/daily-scrape.yml:
.github/workflows/daily-scrape.yml
schedule: cron: "0 6 * * *"每天在 06:00 UTC 运行作业。调整 cron 表达式以适应你的时区。GitHub 的计划工作流没有保证的精度,但每日运行通常在计划时间的几分钟内触发。workflow_dispatch在 Actions 选项卡中添加一个 Run workflow 按钮,以便你无需等待计划即可按需启动作业。
- 在你的 GitHub 仓库中,转到 Settings > Secrets and variables > Actions
- 点击 New repository secret
- 将其命名为
BRIGHT_DATA_API_KEY并粘贴你的密钥 - 点击 Add secret
第 5 部分:推送并验证
提交所有内容并推送:恭喜
你已经构建了一个完全自动化的每日价格监控器:- 在 GitHub 中版本控制的 SKU 列表
- 触发 Bright Data 爬取然后退出的 Python 触发脚本
- 按每日 cron 运行并通过仓库密钥进行身份验证的 GitHub Actions 工作流
- 将每个快照异步放入你的桶中的 Bright Data S3 交付
后续步骤
流式传输大型快照
使用
stream_max_lines 在第一条记录准备好后立即开始接收批次。Amazon 异步参考
异步触发端点的完整参数列表,包括
include_errors 和 limit_per_input。监控交付状态
以编程方式从工作流内部检查快照状态和交付结果。
所有交付选项
使用相同的触发调用将 S3 替换为 GCS、Azure、Snowflake 或 SFTP。