本指南提供了使用 Pangolin Scrape
使用亚马逊数据采集 API 进行数据提取的示意图

亚马逊产品数据提取已成为电商企业、市场研究人员和数据分析师的必备能力。无论您是监控竞争对手价格、进行产品研究,还是构建比价工具,可靠地访问亚马逊庞大的产品目录都至关重要。本综合指南将带您全面了解如何使用 Pangolin 的亚马逊数据采集 API(Amazon Scrape API)高效且大规模地提取产品数据。

为什么亚马逊产品数据提取如此重要

亚马逊在全球多个市场拥有超过 3.5 亿种产品。对于在电商领域运营的企业而言,获取这些数据能提供极其宝贵的洞察:

  • 竞争情报:实时跟踪竞争对手的定价策略、新产品发布和库存水平。
  • 市场研究:识别热门产品,通过评论分析客户情绪,并发现市场空白。
  • 动态定价:根据实时市场数据调整您的定价策略,以最大化利润。
  • 选品决策:基于需求、竞争和盈利能力指标,做出数据驱动的选品决策。
  • 库存管理:监控库存水平和可用性模式,优化您自己的库存管理。

然而,手动大规模提取这些数据是不切实际的。亚马逊的网站结构复杂,经常变化,并实施了复杂的反爬虫措施。这正是 Pangolin 亚马逊数据采集 API 发挥巨大价值的地方。

了解 Pangolin 亚马逊数据采集 API

Pangolin 的亚马逊数据采集 API 是专为亚马逊数据提取设计的企业级解决方案。与基础的网络爬虫不同,它处理了亚马逊基础设施的所有复杂性:

核心功能

  • 99.9% 成功率:先进的反检测技术确保可靠的数据提取。
  • 多市场支持:支持从 Amazon.com、Amazon.co.uk、Amazon.de 等 15+ 个市场提取数据。
  • 全面的数据字段:获取产品详情、定价、评论、评分、图片、变体等信息。
  • 实时数据:以亚秒级响应时间获取最新鲜的信息。
  • 可扩展的基础设施:以企业级的可靠性处理数百万次请求。

入门指南:先决条件

在开始编写代码之前,您需要:

  1. Pangolin API 账户:在 tool.pangolinfo.com 注册以获取您的 API 凭证。
  2. API 密钥:从仪表板获取您的身份验证密钥(注册即送 1,000 个免费积分)。
  3. 开发环境:Python 3.7+、Node.js 14+ 或任何可以发送 HTTP 请求的语言环境。
  4. 基础编程知识:熟悉 REST API 和 JSON 数据结构。

身份验证与 API 基础

Pangolin API 使用 Bearer 令牌认证。每个请求都必须在 Authorization 标头中包含您的 API 密钥。基本结构如下:

curl -X POST "https://scrapeapi.pangolinfo.com/api/v1/scrape" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"url": "https://www.amazon.com/dp/PRODUCT_ASIN",
"parserName": "amzProductDetail",
"format": "json",
"bizContext": {
  "zipcode": "10041"
}
}'

安全最佳实践

切勿将您的 API 密钥硬编码在客户端代码中或提交到版本控制系统。请使用环境变量或安全的密钥管理系统。

提取产品数据:分步指南

1. 基础产品信息提取

让我们从提取基础产品信息开始。最常见的用例是使用 ASIN(亚马逊标准识别号)从产品详情页获取数据。

Python 示例:

import requests
import json

# 您的 Pangolin API 凭证
API_KEY = "your_api_key_here"
API_ENDPOINT = "https://scrapeapi.pangolinfo.com/api/v1/scrape"

# 您想要抓取的产品 ASIN
product_asin = "B0DYTF8L2W"
amazon_url = f"https://www.amazon.com/dp/{product_asin}"

# 请求头
headers = {
"Authorization": f"Bearer {API_KEY}",
"Content-Type": "application/json"
}

# 请求载荷
payload = {
"url": amazon_url,
"parserName": "amzProductDetail",
"format": "json",
"bizContext": {
    "zipcode": "10041"  # 美国邮编(亚马逊抓取通常需要)
}
}

# 发送 API 请求
response = requests.post(API_ENDPOINT, headers=headers, json=payload)

# 检查请求是否成功
if response.status_code == 200:
result = response.json()

# 从响应结构中提取产品信息
if result.get('code') == 0:
    data = result.get('data', {})
    json_data = data.get('json', [{}])[0]
    
    if json_data.get('code') == 0:
        product_results = json_data.get('data', {}).get('results', [])
        
        if product_results:
            product = product_results[0]
            
            print(f"产品标题: {product.get('title')}")
            print(f"价格: {product.get('price')}")
            print(f"评分: {product.get('star')} 星")
            print(f"评论数: {product.get('rating')}")
            print(f"品牌: {product.get('brand')}")
            print(f"销量: {product.get('sales')}")
            
            # 保存到文件
            with open(f'product_{product_asin}.json', 'w', encoding='utf-8') as f:
                json.dump(product, f, indent=2, ensure_ascii=False)
        else:
            print("未找到产品数据")
    else:
        print(f"解析器错误: {json_data.get('message')}")
else:
    print(f"API 错误: {result.get('message')}")
else:
print(f"HTTP 错误: {response.status_code}")
print(response.text)

2. 理解响应结构

当您设置 format: "json" 时,Pangolin 会返回结构化的 JSON 数据,其结构如下:

{
"code": 0,
"message": "ok",
"data": {
"json": [
  {
    "code": 0,
    "data": {
      "results": [
        {
          "asin": "B0DYTF8L2W",
          "title": "Sweetcrispy Convertible Sectional Sofa Couch...",
          "price": "$599.99",
          "star": "4.4",
          "rating": "22",
          "image": "https://m.media-amazon.com/images/I/...",
          "images": ["https://...", "..."],
          "brand": "Sweetcrispy",
          "description": "Product description...",
          "sales": "50+ bought in past month",
          "seller": "Amazon.com",
          "shipper": "Amazon",
          "merchant_id": "null",
          "color": "Beige",
          "size": "126.77\"W",
          "has_cart": false,
          "otherAsins": ["B0DYTF8XXX"],
          "coupon": "null",
          "category_id": "3733551",
          "category_name": "Sofas & Couches",
          "product_dims": "20.07\"D x 126.77\"W x 24.01\"H",
          "pkg_dims": "20.07\"D x 126.77\"W x 24.01\"H",
          "product_weight": "47.4 Pounds",
          "reviews": {...},
          "customerReviews": "...",
          "first_date": "2024-01-15",
          "deliveryTime": "Dec 15 - Dec 18",
          "additional_details": false
        }
      ]
    },
    "message": "ok"
  }
],
"url": "https://www.amazon.com/dp/B0DYTF8L2W",
"taskId": "45403c7fd7c148f280d0f4f7284bc9e9"
}
}

3. 构建价格监控系统

价格监控是亚马逊数据提取最有价值的应用之一。以下是一个完整的示例:

import time
from datetime import datetime
import sqlite3

class AmazonPriceTracker:
def __init__(self, api_key, db_path='price_history.db'):
    self.api_key = api_key
    self.db_path = db_path
    self.setup_database()

def setup_database(self):
    """创建价格历史数据库表"""
    conn = sqlite3.connect(self.db_path)
    cursor = conn.cursor()
    cursor.execute('''
        CREATE TABLE IF NOT EXISTS price_history (
            id INTEGER PRIMARY KEY AUTOINCREMENT,
            asin TEXT NOT NULL,
            title TEXT,
            price TEXT,
            timestamp DATETIME DEFAULT CURRENT_TIMESTAMP
        )
    ''')
    conn.commit()
    conn.close()

def track_price(self, asin):
    """获取当前价格并保存到数据库"""
    url = f"https://www.amazon.com/dp/{asin}"
    
    payload = {
        "url": url,
        "parserName": "amzProductDetail",
        "format": "json",
        "bizContext": {"zipcode": "10041"}
    }
    
    headers = {
        "Authorization": f"Bearer {self.api_key}",
        "Content-Type": "application/json"
    }
    
    response = requests.post(API_ENDPOINT, headers=headers, json=payload)
    
    if response.status_code == 200:
        data = response.json()
        product = data.get('data', {}).get('json', [{}])[0].get('data', {}).get('results', [{}])[0]
        
        # 保存到数据库
        conn = sqlite3.connect(self.db_path)
        cursor = conn.cursor()
        cursor.execute('''
            INSERT INTO price_history (asin, title, price)
            VALUES (?, ?, ?)
        ''', (asin, product.get('title'), product.get('price')))
        conn.commit()
        conn.close()
        
        return product
    return None

# 使用示例
tracker = AmazonPriceTracker(API_KEY)
product = tracker.track_price('B08N5WRWNW')
print(f"已追踪: {product.get('title')} - {product.get('price')}")

最佳实践与优化

速率限制与错误处理

实施适当的速率限制和错误处理可以确保长期可靠的运行:

import time
from functools import wraps

def rate_limit(calls_per_second=10):
"""速率限制装饰器"""
min_interval = 1.0 / calls_per_second
last_called = [0.0]

def decorator(func):
    @wraps(func)
    def wrapper(*args, **kwargs):
        elapsed = time.time() - last_called[0]
        left_to_wait = min_interval - elapsed
        
        if left_to_wait > 0:
            time.sleep(left_to_wait)
        
        ret = func(*args, **kwargs)
        last_called[0] = time.time()
        return ret
    return wrapper
return decorator

@rate_limit(calls_per_second=5)
def scrape_with_safety(asin):
"""带速率限制的抓取"""
# 您的抓取代码
pass

总结

亚马逊产品数据提取是一项强大的能力,能够彻底改变您的电商业务战略。通过 Pangolin 的亚马逊数据采集 API,您可以获得处理所有数据提取复杂性的企业级基础设施,从而专注于获取洞察并做出数据驱动的决策。

下一步

  • 注册 Pangolin:在 tool.pangolinfo.com 获取您的免费 API 密钥。
  • 浏览文档:访问 docs.pangolinfo.com 查看完整的 API 参考。
  • 在 Playground 中测试:尝试交互式 API Playground。
  • 加入社区:与其他开发者联系并分享您的用例。

解决方案

为电商场景打造的高可用数据采集 API,自动规避 IP 封禁、验证码拦截、代理故障等爬虫难题,无需复杂配置即可快速获取精准、稳定的电商数据。

AMZ Data Tracker 是亚马逊卖家专属的全方位运营工具,集关键词调研、竞品销量追踪、Listing 优化、恶意跟卖与差评监控于一体,助力卖家数据化决策,高效提升店铺销量与排名。

每周教程

准备好开始您的数据采集之旅了吗?

注册免费账户,立即体验强大的网页数据采集API,无需信用卡。

微信扫一扫
与我们联系

QR Code
快速测试

联系我们,您的问题,我们随时倾听

无论您在使用 Pangolin 产品的过程中遇到任何问题,或有任何需求与建议,我们都在这里为您提供支持。请填写以下信息,我们的团队将尽快与您联系,确保您获得最佳的产品体验。

Talk to our team

If you encounter any issues while using Pangolin products, please fill out the following information, and our team will contact you as soon as possible to ensure you have the best product experience.