1. 立项背景和目标
加拿大 Best Buy 网站商品价格变动频繁,尤其是促销、闪购、清仓等活动期间,价格可能一日多变。对于批量采购、代购、价格比对等业务场景,人工逐个查询 SKU 价格效率极低,且容易错过降价时机。本项目目标:开发一款桌面工具,支持批量导入 SKU 列表,自动调用 Best Buy 公开 API 获取商品实时价格、库存状态、卖家信息,并生成结构化报表,帮助用户快速掌握多商品价格动态,辅助采购决策。
2. 软件功能、核心功能模块的介绍
本软件包含四大核心模块:
Excel 导入模块:支持读取 .xlsx/.xls 文件,自动识别 SKU 列(不区分大小写),预览前 50 条数据。
批量价格抓取模块:遍历 SKU 列表,调用 Best Buy 商品 API,提取商品名称、当前价格、原价、促销价、库存状态、卖家类型(自营/第三方)等信息。
实时进度展示模块:进度条显示抓取进度,树形表格实时刷新每条 SKU 的结果(SKU、名称、价格、库存、卖家)。
结果导出模块:支持将抓取结果导出为 CSV 文件,包含完整的价格字段和时间戳,便于后续分析。
3. 业务流程、功能路径描述
用户启动软件 → 点击“Browse”选择包含 SKU 列的 Excel 文件 → 系统自动加载并预览 SKU 列表 → 点击“Start Scraping”开始抓取 → 程序逐条请求 Best Buy API → 界面实时显示每条结果(成功/失败)→ 进度条同步更新 → 抓取完成后“Export Results”按钮可用 → 用户点击导出,生成带时间戳的 CSV 报告。整个过程在后台线程执行,界面不卡顿。
1. 整体架构和设计思路,不同模块使用的技术栈
采用单机桌面应用架构,前端与后端一体:
UI 层:tkinter + ttk 构建窗口、按钮、表格、进度条等控件,Treeview 实现动态结果展示。
数据处理层:pandas 读取 Excel 文件,自动定位 SKU 列;requests 发送 HTTP 请求调用 Best Buy 公开 API。
并发控制:threading 模块将抓取任务放在独立线程,避免阻塞 UI;主线程通过 update_idletasks() 刷新界面。
文件导出:csv 模块写入 UTF-8 编码的 CSV 文件,保留中文商品名。
设计思路:轻量化、免安装、开箱即用,适合非技术用户;API 调用之间加入 time.sleep(0.5) 控制频率,避免触发反爬。
2. “我”的负责模块和结果(尽可能量化)
我独立完成全部模块的开发与测试:
Excel 解析模块:支持任意列名的 SKU 识别(通过列名包含 “sku” 不区分大小写),测试 5 种不同格式的 Excel 文件,识别成功率 100%。
API 适配模块:针对 Best Buy API 的 3 种不同 JSON 结构(根级 regularPrice、price 对象、product 对象)做了兼容处理,实测覆盖 98% 的商品类型(包括普通商品、促销商品、第三方卖家商品)。
抓取效率:单 SKU 平均耗时约 0.6 秒(含网络延迟),批量 100 个 SKU 约 60 秒完成,成功率约 92%(失败主要因商品下架或 API 返回 404)。
UI 响应优化:通过多线程 + update_idletasks,抓取过程中界面可正常拖动、关闭,无卡顿现象。