【2026】亚马逊数据抓取教程:如何用Python采集商品价格与评论

亚马逊拥有大量公开的商品信息,包括商品标题、价格、评分、评论数量、品牌、商品图片和销售排名等。对于跨境电商卖家、市场研究人员和数据分析团队来说,这些数据可以用于竞品监控、价格分析、选品研究和市场趋势判断。

但是,当采集任务从几个商品扩展到多个关键词、多个类目或不同国家站点时,人工整理数据的效率会迅速下降。这时,可以使用Python建立自动化的亚马逊数据抓取流程。

本文将介绍如何使用Python和Playwright采集亚马逊公开商品页面中的数据,并将结果保存为CSV文件。同时,我们还会讲解分页采集、代理IP配置和常见问题。

本文仅用于公开数据研究和技术学习。开展数据采集前,应确认目标页面的服务条款、robots.txt、数据授权范围和当地法律要求,不应采集个人敏感信息,也不应绕过登录、验证码或其他访问控制。Amazon的服务使用需要遵守其相关使用条件。

为什么要抓取亚马逊商品数据?

亚马逊商品数据通常可以应用在以下几个场景。

1. 竞争对手价格监控

卖家可以定期记录竞品价格、优惠信息和库存状态,观察竞争对手是否进行了降价、促销或产品调整。

相比每天手动打开商品页面,自动化程序可以按照固定时间采集数据,并生成价格变化记录。

2. 亚马逊选品分析

通过采集某个关键词或类目下的商品,可以获得:

  • 商品标题
  • 品牌名称
  • 当前价格
  • 用户评分
  • 评论数量
  • ASIN
  • 商品链接
  • 商品图片

将这些数据整理到Excel或数据库后,可以进一步分析产品竞争程度、价格区间和用户需求。

3. 评论与市场需求研究

商品评分和评论数量可以帮助判断产品的市场成熟度。

如果某类商品的搜索结果数量较少,但部分产品的评论增长较快,可能说明该类目正在获得更多关注。不过,评论数据只能作为参考,还需要结合销量、价格和市场趋势综合判断。

4. 多站点商品信息对比

亚马逊在美国、英国、德国、日本等地区拥有不同站点。同一商品在不同市场中的价格、排名和用户反馈可能存在明显差异。

通过采集不同国家站点的公开数据,可以进行区域价格比较和市场需求分析。

亚马逊数据采集有哪些方式?

目前常见的Amazon数据获取方式主要有三种。

方法一:使用Amazon官方API

对于符合Amazon联盟及相关业务规则的应用,优先考虑官方提供的数据接口。

需要注意的是,Amazon官方文档显示,Product Advertising API已经于2026年5月15日停止使用并迁移至Creators API,新项目不应继续按照旧版PA-API教程接入。

官方API通常具有数据结构清晰、维护成本较低的优势,但可能存在申请条件、调用额度和数据用途限制。

方法二:使用Python抓取公开网页

如果需要研究公开搜索结果页、商品列表或自有业务允许使用的数据,可以通过Python解析网页。

对于结构简单的静态页面,可以使用Requests和BeautifulSoup;对于需要运行JavaScript的动态页面,Playwright通常更加合适。

Playwright支持Chromium、Firefox和WebKit,并同时提供同步和异步Python API。

方法三:使用第三方电商数据服务

如果企业需要长期、大规模采集数据,也可以使用结构化数据API或现成数据集。

这种方式可以减少网页结构变化带来的维护成本,但需要根据更新频率、字段完整度、数据来源和预算进行选择。

免费获取 kookeey 新用户福利 🎁
200MB 动态流量
100MB 移动代理
288元 优惠大礼包
独享IP ISP 支持独享端口 / API 调用

使用Python抓取亚马逊需要准备什么?

本教程将使用以下工具:

  • Python 3.9或更高版本
  • Playwright
  • Pandas
  • Chromium浏览器组件

首先创建项目文件夹:

mkdir amazon-data-scraper 
cd amazon-data-scraper

然后安装所需依赖:

pip install playwright pandas
playwright install chromium

Playwright除了安装Python软件包,还需要单独安装浏览器组件。其官方文档同样要求在安装软件包后执行playwright install

使用Playwright采集亚马逊商品数据

在项目文件夹中创建一个名为amazon_scraper.py的文件,并加入以下代码:

import time
from urllib.parse import quote_plus

import pandas as pd
from playwright.sync_api import sync_playwright


KEYWORD = "wireless headphones"
MAX_PAGES = 2


def get_text(locator, default=""):
    """安全读取元素文本,元素不存在时返回默认值。"""
    try:
        if locator.count() > 0:
            return locator.first.inner_text().strip()
    except Exception:
        pass

    return default


def get_attribute(locator, attribute, default=""):
    """安全读取元素属性。"""
    try:
        if locator.count() > 0:
            value = locator.first.get_attribute(attribute)
            return value or default
    except Exception:
        pass

    return default


def scrape_amazon():
    results = []

    with sync_playwright() as playwright:
        browser = playwright.chromium.launch(headless=True)

        context = browser.new_context(
            locale="en-US",
            viewport={"width": 1440, "height": 1000}
        )

        page = context.new_page()

        search_url = (
            "https://www.amazon.com/s?k="
            + quote_plus(KEYWORD)
        )

        page.goto(
            search_url,
            wait_until="domcontentloaded",
            timeout=60000
        )

        for page_number in range(1, MAX_PAGES + 1):
            page.wait_for_timeout(3000)

            product_items = page.locator(
                'div[data-component-type="s-search-result"]'
            )

            print(
                f"正在处理第 {page_number} 页,"
                f"发现 {product_items.count()} 个商品"
            )

            for index in range(product_items.count()):
                item = product_items.nth(index)

                asin = item.get_attribute("data-asin") or ""

                title = get_text(
                    item.locator("h2 span")
                )

                price = get_text(
                    item.locator(".a-price .a-offscreen")
                )

                rating = get_text(
                    item.locator("span.a-icon-alt")
                )

                review_count = get_text(
                    item.locator(
                        "span.a-size-base.s-underline-text"
                    )
                )

                relative_link = get_attribute(
                    item.locator("h2 a"),
                    "href"
                )

                image_url = get_attribute(
                    item.locator("img.s-image"),
                    "src"
                )

                if relative_link.startswith("/"):
                    product_url = (
                        "https://www.amazon.com"
                        + relative_link
                    )
                else:
                    product_url = relative_link

                if title:
                    results.append({
                        "keyword": KEYWORD,
                        "asin": asin,
                        "title": title,
                        "price": price,
                        "rating": rating,
                        "review_count": review_count,
                        "product_url": product_url,
                        "image_url": image_url
                    })

            next_button = page.locator(
                "a.s-pagination-next"
            )

            if (
                page_number >= MAX_PAGES
                or next_button.count() == 0
            ):
                break

            next_href = next_button.first.get_attribute("href")

            if not next_href:
                break

            page.goto(
                "https://www.amazon.com" + next_href,
                wait_until="domcontentloaded",
                timeout=60000
            )

            # 控制访问频率,避免给目标站点造成过大负担
            time.sleep(5)

        browser.close()

    return results


if __name__ == "__main__":
    product_data = scrape_amazon()

    dataframe = pd.DataFrame(product_data)

    dataframe.to_csv(
        "amazon_products.csv",
        index=False,
        encoding="utf-8-sig"
    )

    print(
        f"采集完成,共保存 {len(product_data)} 条商品数据。"
    )

运行程序:

python amazon_scraper.py

采集结果会保存到:

amazon_products.csv

CSV文件中包含关键词、ASIN、商品标题、价格、评分、评论数量、商品链接和图片链接等字段。

为什么亚马逊页面适合使用Playwright?

部分电商页面会通过JavaScript加载内容。使用普通HTTP请求时,程序获得的HTML可能不完整,导致价格、评论或商品列表无法正常提取。

Playwright会启动真实浏览器环境,能够等待页面加载并读取浏览器渲染后的内容,因此更适合处理动态网页。

不过,浏览器自动化会消耗更多内存和计算资源。如果采集任务规模较大,需要控制浏览器实例数量,并避免同时开启过多页面。

如何给Playwright配置代理IP?

在多地区电商数据研究中,网络出口地区可能影响页面语言、币种、配送范围和商品展示结果。

例如,研究美国站点时,可以使用美国代理线路;研究日本站点时,则需要保持日本网络出口、语言环境和目标站点一致。

kookeey 全球代理IP点击按钮免费试用
【2026】亚马逊数据抓取教程:如何用Python采集商品价格与评论

在Playwright中,可以在启动浏览器时配置代理:

browser = playwright.chromium.launch(
    headless=True,
    proxy={
        "server": "http://gate.kookeey.info:1000",
        "username": "YOUR_USERNAME",
        "password": "YOUR_PASSWORD"
    }
)

请将示例中的用户名和密码替换为实际的kookeey代理认证信息。

kookeey代理信息如何填写?

在Playwright中接入kookeey代理,需要将后台生成的代理地址、端口、用户名和密码填写到代理配置中。

假设kookeey后台生成的代理信息格式为:

代理地址:端口:用户名:密码

对应到Playwright代码中:

  • server:填写代理协议、代理地址和端口
  • username:填写代理用户名
  • password:填写代理密码

例如,后台生成的代理信息为:

gate.kookeey.info:1000:your_username:your_password

那么代码应填写为:

browser = playwright.chromium.launch(
    headless=True,
    proxy={
        "server": "http://gate.kookeey.info:1000",
        "username": "your_username",
        "password": "your_password"
    }
)

如何生成kookeey动态线路

现在kookey官网充值 加赠 22%,新人还可直接领取 200MB 的试用流量包:立即领取免费流量

所以先充值再购买比直接购买会更划算,充值多少我们按需求;

【2026】亚马逊数据抓取教程:如何用Python采集商品价格与评论

购买1元购大礼包

– 1元购里有10💴的无门槛券,我们购买后会叠加享受优惠价;

图片

购买流量包提取线路

– kookeey动态产品是按流量计费,只要我们有流量就能直接提取线路;

系统会生成一组代理连接信息,通常包括:

  • 代理地址
  • 端口
  • 用户名
  • 密码
  • 协议类型

用户可以将这组信息复制下来,配置到浏览器、Python 脚本、指纹浏览器或其他自动化工具中。

如何检测代理是否配置成功?

完成代理配置后,可以访问IP检测页面,查看当前浏览器使用的出口IP:

page = browser.new_page()

page.goto(
    "https://lumtest.com/myip.json",
    wait_until="domcontentloaded"
)

print(page.locator("body").inner_text())

如果页面返回的IP地址和代理地区与kookeey后台选择的线路一致,说明代理已经配置成功。

配置代理时,应尽量保持以下条件一致:

  • 目标Amazon站点
  • 代理IP所在国家
  • 浏览器语言
  • 页面币种
  • 时区设置
  • 数据采集任务的地区需求

代理IP主要用于提供稳定、匹配目标区域的网络连接,并不代表可以忽略网站规则或突破访问限制。

亚马逊数据抓取常见问题

1. 为什么抓不到商品价格?

部分商品可能存在多个规格、优惠券、会员价格或卖家报价,因此搜索结果页不一定显示统一价格。

程序应允许价格字段为空,不要因为单个字段缺失而直接删除整个商品记录。

2. 为什么商品选择器失效了?

电商网站会持续调整页面结构和CSS类名。代码运行一段时间后,如果突然无法提取数据,需要重新检查网页元素。

建议优先使用相对稳定的属性,例如:

div[data-component-type="s-search-result"]

同时,应为标题、价格和评论数设置备用选择器。

3. 为什么不同地区看到的商品不一样?

商品搜索结果可能受到站点、配送地址、币种、语言、库存和网络地区等因素影响。

因此,做多地区数据对比时,应记录采集时间、目标站点和代理地区,避免把不同环境下的数据直接混合。

4. 如何处理分页?

亚马逊搜索结果通常包含多个页面。程序可以读取“下一页”按钮的链接,并在每次采集完成后进入下一页。

需要设置最大页数,避免因为页面异常或链接循环导致程序无限运行。

5. 应该使用动态住宅代理还是静态代理?

如果任务主要是采集不同地区的公开商品结果,可以根据任务规模使用动态住宅代理。

如果需要长期保持同一网络出口,对固定地区进行连续测试或页面验证,则可以考虑静态住宅代理。

具体选择应根据任务持续时间、地区数量、请求规模和稳定性要求决定。

如何提高亚马逊数据采集质量?

一个稳定的数据采集项目不能只关注“能否打开页面”,还需要关注数据是否完整、准确和可追踪。

建议在项目中增加以下机制:

设置合理的访问频率

不要在短时间内连续请求大量页面。可以在每页任务之间设置固定间隔,并限制并发数量。

保存采集时间

为每条数据增加采集时间字段,方便后续分析价格变化。

记录失败原因

将超时、页面为空、字段缺失和状态异常分别记录,便于后续排查。

定期检查页面结构

建议定期运行小规模测试,确认商品标题、价格和评分等主要字段是否仍能正常提取。

对数据进行清洗

价格字段可能包含货币符号和千位分隔符,评论数量也可能使用“K”等缩写。进入数据库前,应统一格式并处理空值。

总结

亚马逊数据抓取可以帮助跨境电商团队完成商品监控、价格分析、选品研究和市场趋势判断。

对于符合官方接口应用条件的项目,2026年应优先评估Amazon Creators API,而不是继续按照已经停止使用的PA-API教程接入。对于公开网页研究,可以使用Python和Playwright建立小规模、低频率的数据采集流程。

当任务涉及不同国家站点时,稳定且地区匹配的代理IP能够减少网络环境差异,提高数据采集的一致性。通过kookeey动态住宅代理、静态住宅代理或数据中心代理,可以根据目标地区和任务规模配置相应的网络线路。

无论使用API、浏览器自动化还是代理IP,都应始终遵守目标网站的服务条款、数据授权范围和相关法律要求。

本文来自网络投稿,不代表kookeey立场,如有问题请联系我们

(0)
kookeeykookeey
上一篇 2026-07-13 11:11
下一篇 2026-07-16 18:18

相关推荐

  • 高质量的静态代理IP对跨境电商卖家们有什么帮组

    在跨境电商日益激烈的市场竞争中,网络环境的稳定性和安全性成为了卖家们必须重视的关键因素。高质量的静态代理IP作为跨境电商的重要工具,为卖家们提供了多方面的帮助,极大地提升了业务效率和安全性。本文将详细探讨高质量的静态代理IP如何助力跨境电商卖家们。 一、高质量的静态代理IP概述 静态代理IP是指由代理IP服务商提供的固定IP网络地址,用户可以通过这些地址浏览…

    2024-08-07
  • (2026最新)TikTok登录成功却无法联网?5大原因+全方位解决方案

    不少用户在成功安装 TikTok 并登录账号后,却遇到一个让人头疼的问题:“明明Wi-Fi/流量正常,TikTok却显示无网络连接。”更有甚者,一直卡在加载画面,刷不出内容,甚至提示“请检查你的网络”。 其实这不是 TikTok 本身的问题,而是受限于网络环境、代理IP、DNS配置、设备限制等多个因素。下面我们就来拆解 TikTok 无网络的几大根源,并提供…

    2025-05-28
  • 出海广告跑不起来怎么办?动态住宅IP助力广告跑量

    在出海营销日趋激烈的今天,越来越多的广告主发现,投放广告“烧钱”不少,效果却跑不出来。广告账户起量慢、数据表现差、频繁被限制……这些问题背后,往往隐藏着“网络身份不干净”“IP重复使用”“系统风控过严”等关键因素。 而这些问题,正是动态住宅IP可以精准解决的突破口。 一、出海广告跑不起来?常见原因盘点 在广告投放实战中,跑量效果不佳常见于以下几类情况: 1.…

    2025-05-22
  • TikTok养号为什么需要静态ip代理?静态ip有哪些优势?

    TikTok 在全球范围内迅速增长,目前已经成为一种流行的社交媒体平台,尤其在年轻人中非常受欢迎,吸引了大量的用户创作者,然而,想要维护和发展中自己的账号使之托脱颖而出,收获流量进而变现,是比较困难的。 养号是建立一个成功的 TikTok 账号的关键。通过关注其他用户、发布有意义的视频、定期发布视频、与其他人互动和使用有意义的标签,您可以帮助您的账…

    2023-11-21
  • PayPal对ip环境的要求|跨境商家如何使用PayPal

    PayPal用于跨境商家的货款支付方式之一,全球亿万用户都在使用的支付工具,帮助跨境商家成功开展并实现自己的海外业务。但PayPal基于保护买卖双方的安全原则,PayPal在使用过程中,就会有很多的规则和技巧需要注意。 一、用PayPal付款时选择通过发卡机构付款省汇率技巧 用PayPal给国外的推广网红媒体编辑付费时,正常默认选择用paypal汇率付款,这…

    2023-11-30