开始试用
返回

如何用 Python 构建亚马逊价格追踪器

用你偏好的 AI 总结本文
试用我们的高级代理

无限量测试我们的优质代理,畅享卓越质量。

  • 移动代理和住宅代理
  • ZIP 级别定位
  • 静态 IP 和轮换 IP
  • 内置质量过滤器
立即试用

网络爬虫 可以帮助你监控 Amazon 价格,而无需每天手动查看同一个产品页面。在本教程中,你将构建一个简单的 使用 Python 构建 Amazon 价格追踪器 用于采集产品标题、价格、库存状态和页面 URL,然后将结果保存到 CSV 文件。

该示例使用 Python、Requests、BeautifulSoup 以及真实的 Amazon 商品页面结构。你还会明白为什么 Amazon 价格追踪往往需要额外的校验:价格可能因地区而异,页面可能出现 CAPTCHA,选择器也可能随商品版式的不同而变化。

对于小规模测试,一个基础脚本就足够了。对于大批量或对地理位置敏感的跟踪, 干净的住宅代理、粘性会话以及 ZIP 邮编级别的定位 可以让结果更可靠,因为 Amazon 可能会根据不同地区返回不同的价格、配送详情和库存情况。

这个 Amazon 价格追踪器将实现的功能

本指南中的追踪器将收集:

  • 产品标题
  • 当前显示价格
  • 库存状态文本
  • 产品 URL
  • 时间戳
  • CSV 文件中的价格历史记录
  • 在终端中显示基础的降价提醒

这是一个适合初学者的抓取工具,但它遵循了在真实价格监控项目中很重要的一些习惯。它会检查预期的数据是否存在,避免将 CAPTCHA 页面保存为商品数据,并让代码易于扩展。

若想更全面地了解价格追踪工具和工作流程,NodeMaven 还提供了一份指南,介绍 价格监控工具.

开始之前:Amazon 抓取的限制

Amazon 页面比练习用的网站更复杂。一个商品页面可能会因市场站点、ZIP 邮编、收货地址、cookie、登录状态、促销状态和商品类型的不同而变化。

在大规模采集数据之前,请查阅 Amazon 的 使用条件。对于已获批准的商品数据使用场景,还请查看 Amazon 的 Product Advertising API 文档.

本教程用于学习价格追踪的工作原理。如果你打算运行生产环境的爬虫,还请阅读 NodeMaven 关于 网页抓取是否合法.

Amazon 价格跟踪通常会变得困难,原因在于:

  • CAPTCHA 验证页面 而不是商品页面
  • 403 或 503 错误
  • 价格分散在多个 HTML 元素中
  • 因地区或 ZIP 邮编而异的价格
  • 不同产品布局之间选择器会发生变化
  • 请求返回的内容与浏览器不同

开发者经常遇到这些问题。例如,这个关于 Amazon CAPTCHA 和价格选择器问题 说明了为什么后备选择器和响应验证很重要。

第 1 步:搭建 Python 项目

为该项目新建一个文件夹,并在你的编辑器中打开它。

如果你使用 macOS 或 Linux,请运行:

如果你使用 Windows,请运行:

现在创建一个文件,命名为:

你可以在 VS Code、PyCharm 或任何文本编辑器中创建它。请保持该文件打开,因为接下来的步骤会逐步构建这个脚本。

如果这是你的第一个爬虫,那么 Python 网页抓取 指南更详细地讲解了 Requests、BeautifulSoup、选择器以及 CSV 导出。

经过测试的配置: Python 3.12、Requests、BeautifulSoup4 和 lxml。环境准备就绪后,该脚本可在 macOS、Windows 或 Linux 上运行。

第 2 步:检查 Amazon 商品页面

打开你想要跟踪的 Amazon 产品页面。右键点击产品标题并选择 检查.

Amazon 价格追踪器 | 从商品页面复制选择器

在本次测试所用的产品页面上,标题位于:

然后检查价格。Amazon 通常会将完整价格存储在一个屏幕外的元素中,但在某些页面上,可见的价格会被拆分成多个独立的部分:

这就是脚本使用后备选择器,而不是依赖单一价格元素的原因。

这些选择器仅为供测试的示例,并非适用于整个 Amazon 的通用选择器。Amazon 页面可能因市场、产品类别、促销布局和库存状态而有所不同。请务必检查你计划追踪的具体页面。

开发者经常遇到 Amazon 选择器和 CAPTCHA 问题。这个 Stack Overflow 上关于 Amazon CAPTCHA 和价格选择器问题 很好地说明了为什么抓取程序需要备用选择器和响应验证。

第 3 步:使用 Requests 获取 Amazon 页面

现在添加一个用于下载页面 HTML 的函数。

自定义请求头让请求看起来更接近普通的浏览器请求。这并不能保证访问成功,但它避免了发送 Python Requests 的默认 user agent。

CAPTCHA 检查同样重要。一个请求可能返回成功的 200 OK 响应,但仍然返回验证页面而非产品数据。 切勿将成功的状态码当作爬虫采集到正确页面的证据。

第 4 步:提取标题、价格和库存情况

接下来,添加 BeautifulSoup 和几个辅助函数。

该 first_text() 函数会尝试多个选择器,并返回它找到的第一个值。这很有用,因为 Amazon 可能会把价格放在页面的不同位置。

该 split_price_text() 函数用于处理价格以独立的符号、整数和小数元素显示的页面。例如, $23.99 在 HTML 中可能显示为 $, 23,以及 99.

该 parse_price() 函数会从可见的价格文本中提取一个数值。此版本假定价格采用美式格式,例如 $49.99。如果你跟踪的是另一个 Amazon 站点,请根据当地的货币和小数格式进行调整。

现在添加商品抓取函数:

这个函数为可靠性做了一件有用的事:当标题或价格缺失时,它会明确报错。这比保存一个空值、之后才发现 CSV 里满是损坏的行要好得多。

第 5 步:将 Amazon 价格历史保存为 CSV

当每次检查都被保存下来时,价格跟踪器会变得更加实用。添加以下 CSV 函数:

该 newline="" 设置遵循 Python 的 CSV 文档 并有助于避免在某些系统上出现额外的空行。

脚本运行后,CSV 文件将如下所示:

时间戳标题price_text价格可用性url
2026-07-24T10:15:30Owala FreeSip 不锈钢保温水瓶$23.9923.99In StockAmazon 商品 URL

这个简单的历史记录文件对于第一个版本来说已经足够了。之后,你可以将数据迁移到 Google Sheets、数据库或仪表板中。

第 6 步:追踪多个 Amazon 商品

现在添加一份产品 URL 列表。用真实的 Amazon 产品页面替换示例 URL。

然后添加一个遍历每个产品的主函数。

该 sleep(10) delay 可防止脚本过快地请求页面。对于真实的追踪来说,应避免过于激进的请求频率。价格追踪器通常不需要每隔几秒就检查同一件商品。

如果你想了解更多通用的抓取示例,NodeMaven 提供了一份指南,介绍 Python 网页抓取 以及一份单独的对比 网页抓取工具.

第 7 步:添加降价提醒和定时任务

一个基本的提醒功能可以直接在终端中运行。

添加一个目标价格

将下面这段代码添加到脚本的顶部附近:

然后更新其中的循环 main():

目前它还不会发送电子邮件或 Telegram 消息,只会在价格低于你设定的目标值时打印一条消息。

为追踪器设定计划任务

对于简单的设置,你可以每天手动运行一次脚本。

在 macOS 或 Linux 上,你之后可以使用 cron。在 Windows 上,你可以使用 Task Scheduler。如果你更喜欢无代码的设置,可以先从手动运行开始,等脚本能返回干净的数据后再进行自动化。

对于真实的价格监控工作流,请存储:

  • 市场
  • 地区或 ZIP 邮编
  • 时间戳
  • 价格
  • 可用性
  • 产品 URL
  • 错误状态,如果请求失败

这些额外的背景信息有助于解释价格为何发生变化。价格下降可能源于真实的折扣,但也可能来自不同的地区、卖家、优惠券或运费设置。

第 8 步:添加代理以获得更可靠的 Amazon 跟踪

做几次手动测试时,你或许不需要代理。但一旦追踪器运行得更频繁、检查多个商品或按地区比较价格,单一的本地 IP 就会成为薄弱环节。

Amazon 可能会根据可见的位置显示不同的商品数据。当请求模式看起来异常时,它还可能返回 CAPTCHA、不可用的页面或不一致的配送详情。

这正是 干净的住宅代理 和 粘性会话 很有帮助。它们让跟踪器保持稳定的地区,避免将每个请求都通过同一个本地 IP 发出。

以更少的失败请求追踪本地 Amazon 价格

NodeMaven 住宅代理可帮助 Python 抓取程序以更干净的 IP、稳定的会话和地理定位来收集 Amazon 价格数据,用于区域价格核查。从以下内容开始 750 MB 仅需 $3.50.

立即试用

具体针对 Amazon,NodeMaven 的 Amazon 代理 在以下情况下会很有用:

  • 特定地区的价格
  • ZIP 级别定位
  • 适合重复检查的稳定会话
  • IP 质量比公共代理或廉价 VPN 更纯净
  • 看起来更接近正常用户流量的住宅 IP

如需更深入的代理设置,请阅读 NodeMaven 关于构建 可靠的网页抓取代理池.

为脚本添加代理

如果你想使用代理,请替换前面的 fetch_page() 在此版本下运行。

然后将代理传入 scrape_product():

不要将真实的代理凭据硬编码在共享文件或公共仓库中。如果脚本将存储在 GitHub 上或供团队使用,请使用环境变量。

选择合适的代理会话

使用 粘性住宅会话 当你希望在一次跟踪运行期间让某个产品或某个地区保持一致时。当 Amazon 存储位置设置、配送状态或 cookie 时,这一点非常有用。

仅在每个请求相互独立时才使用轮换。在同一个商品流程中随机切换 IP 可能会导致价格不匹配、额外的验证或结果不一致。

NodeMaven 的指南: 住宅、移动和数据中心代理 解释了哪种代理类型适合不同的抓取工作流程。

常见的 Amazon 价格追踪器错误及修复方法

Amazon 返回 503 或 403 错误

当 Amazon 不喜欢请求模式、IP 信誉、请求头或流量来源时,就可能拒绝该请求。开发者也在 Stack Overflow 的讨论帖中谈到这一点 使用 Requests 和 BeautifulSoup 时出现的 Amazon 503 错误.

请尝试以下方法:

  • 降低请求速率。
  • 检查你的请求头是否已设置。
  • 保存返回的 HTML 并进行检查。
  • 避免从质量差或被过度使用的 IP 反复发起请求。
  • 如果追踪器以较高的量级运行,请使用干净的住宅代理。

Amazon 显示 CAPTCHA 页面

如果 Amazon 返回一个 CAPTCHA 页面,说明抓取程序收到的是验证 HTML,而不是产品 HTML。本教程中的脚本会检测常见的 CAPTCHA 文本并抛出错误。

发生这种情况时,请降低请求频率,并检查你的请求头、会话行为和代理质量是否与你正在运行的请求量相匹配。 干净的住宅代理有助于减少因 IP 信誉不佳而触发的 CAPTCHA,但它们并不能替代合理的请求时机安排或响应验证。

不要将 CAPTCHA 页面保存为产品数据。

标题缺失

如果脚本找不到标题,请再次检查商品页面。

常用的选择器是:

如果页面使用了不同的布局,请再添加一个选择器到 TITLE_SELECTORS.

同时检查返回的 HTML 是否确实是产品页面。有时脚本收到的是同意页面、跳转页面或验证页面,而不是产品页面。

价格缺失

Amazon 的价格可能出现在页面的不同部分。有些页面使用屏幕外的价格文本,而另一些页面则将可见价格拆分为符号、整数和小数部分。

这就是脚本同时使用两者的原因:

以及:

如果两者都失败,请保存 HTML 并手动检查价格部分。

价格与你浏览器中显示的不同

Amazon 的价格可能会因国家/地区、ZIP 邮编、配送地点、站点、cookie 以及登录状态而有所不同。某件商品还可能显示优惠券、限时折扣或不同的购买选项。

为了减少不匹配的情况:

  • 保持地区一致。
  • 将市场和地区存储在你的 CSV 中。
  • 如果地点一致性很重要,请使用粘性会话。
  • 在比较价格之前,先比较可见的 IP 和位置。
  • 当发货位置会影响结果时,请使用 ZIP 级定位。

NodeMaven 支持精确的地理定位,包括 ZIP 级别定位,当跟踪器需要从特定的买家所在地比较 Amazon 的价格、库存和配送选项时,这一点非常有用。

以更少的失败请求追踪本地 Amazon 价格

NodeMaven 住宅代理可帮助 Python 抓取程序以更干净的 IP、稳定的会话和地理定位来收集 Amazon 价格数据,用于区域价格核查。从以下内容开始 750 MB 仅需 $3.50.

立即试用

如果 Requests 无法访问可见的页面内容, Selenium 爬取 可能是更好的选择,因为它会打开一个浏览器并处理已渲染的页面。

完整的 Amazon 价格追踪器代码

以下是完整的脚本。

NodeMaven 如何改进 Amazon 价格追踪

当爬虫保持稳定的连接时,Amazon 价格追踪会更加可靠 一致的地理位置、干净的 IP 信誉以及稳定的会话行为.

NodeMaven 可以解决那些通常会导致价格追踪器失效的环节:

  • 住宅代理: 使用真实用户的 IP,而不是嘈杂的 VPN 或数据中心地址。
  • 粘性会话: 在检查某个产品、类目或区域流程时保持同一 IP。
  • ZIP 级定位: 从特定买家所在地比较价格、配送选项和库存情况。
  • 干净的 IP 质量: 减少失败请求、CAPTCHA 触发以及不可靠的页面响应。
  • 灵活的设置: 通过 Python、浏览器自动化工具或抓取技术栈使用 HTTP 或 SOCKS5 代理。

对于 Amazon 监控来说,这意味着更少的区域结果不匹配,以及更干净的价格历史记录。

以更少的失败请求追踪本地 Amazon 价格

NodeMaven 住宅代理可帮助 Python 抓取程序以更干净的 IP、稳定的会话和地理定位来收集 Amazon 价格数据,用于区域价格核查。从以下内容开始 750 MB 仅需 $3.50.

立即试用

结论

一个简单的 Amazon 价格追踪器是很好的入门抓取项目,因为它展示了完整的工作流程:抓取页面、检查选择器、提取数值、验证响应以及保存价格历史。先从一两个商品开始,然后仅在追踪器确实需要时再添加定时任务、提醒和浏览器渲染功能。对于 Amazon, 一旦你超越测试阶段,干净的代理就变得至关重要,因为价格、库存、送达日期和 CAPTCHA 出现频率都会随 IP 质量和位置而变化。NodeMaven 住宅代理通过粘性会话和 ZIP 级定位,帮助追踪会话保持更干净、更稳定。

常见问题

可以。你可以使用 Python 搭配 Requests、BeautifulSoup 和 CSV 存储来构建亚马逊价格跟踪器。该脚本在保存数据前还应检查选择器缺失、CAPTCHA 页面以及地区价格差异。

这取决于你收集什么数据、如何收集以及如何使用这些数据。请查阅 Amazon 的 使用条件,请考虑使用 Product Advertising API 用于已获批准的使用场景,并阅读一份更全面的指南,了解 网页抓取是否合法.

当请求模式、IP 信誉、请求头或会话行为看起来可疑时,Amazon 可能会显示 CAPTCHA。请放慢请求速度、检查返回的 HTML、使用逼真的请求头,如果追踪器以更高的量级运行,可考虑使用干净的住宅代理。

 

Amazon 的价格可能因市场站点、ZIP 邮编、配送地点、cookies、登录状态、优惠券以及卖家库存情况而有所不同。 住宅代理 帮助你通过 190 多个国家/地区的 IP 查看本地价格,并提供地区、城市和 ZIP 级别的定位选项。

 

对于小规模的手动测试,代理可能并非必需。而对于重复检查、区域性价格追踪或更大规模的监控,代理有助于让访问保持更稳定。带粘性会话的住宅代理通常是 Amazon 价格监控的最佳起点。

住宅代理通常最适合用于 Amazon 价格跟踪,因为它们使用真实的消费者网络 IP。粘性会话有助于在相关请求期间保持同一个 IP,而 ZIP 邮编级别的定位则在价格和配送选项取决于买家所在地时很有帮助。

可以。将更多商品 URL 添加到 PRODUCT_URLS 列表。先从一个较小的列表开始,确认 CSV 输出正确无误,然后再慢慢增加产品的数量。

您可能还喜欢 这些文章

本网站使用 Cookie 文件 来提升您的使用体验。继续访问即表示您同意我们使用 Cookie。