在电商运营和数据分析中,获取 1688 平台的商品信息是一项关键任务。1688 作为国内领先的 B2B 电商平台,提供了丰富的商品数据和强大的开放平台 API 接口,方便开发者获取商品详情、评论、SKU 等信息。本文将详细介绍如何通过 1688 开放平台 API 获取商品信息,并提供完整的 Python 示例代码。
一、准备工作
(一)注册 1688 开放平台账号
- 访问 1688 开放平台官网,点击“注册”按钮,填写相关信息(如企业信息、联系方式等)完成注册。
- 登录开放平台控制台,创建一个新的应用,获取应用的 App Key 和 App Secret,这些凭证将用于后续的 API 调用。
(二)申请接口权限
在开放平台控制台中,找到已创建的应用,然后在接口列表中申请所需接口的权限。例如,获取商品详情可以申请 alibaba.product.get 接口权限。
(三)安装必要的 Python 库
安装以下 Python 库,用于发送 HTTP 请求和处理数据:
bash
pip install requests
二、获取商品详情信息
(一)构建请求参数
1688 商品详情接口(alibaba.product.get)需要以下参数:
- method:接口方法名,如 alibaba.product.get。
- app_key:应用的 App Key。
- product_id:商品 ID,可以通过商品详情页的 URL 获取。
- timestamp:当前时间的时间戳(13 位 Unix 时间)。
- sign:签名,用于验证请求的合法性。
(二)生成签名
签名的生成规则如下:
- 将除 sign 外的参数按字母升序排列。
- 拼接键值对为字符串,末尾追加 App Secret。
- 使用 MD5 哈希并转为大写。
- 以下是 Python 示例代码:
Python
import hashlib
import time
def generate_sign(params, app_secret):
sorted_params = sorted(params.items())
sign_str = "&".join([f"{k}{v}" for k, v in sorted_params if k != "sign"])
sign = hashlib.md5((sign_str + app_secret).encode('utf-8')).hexdigest().upper()
return sign
(三)发送请求并解析响应
以下是一个完整的 Python 示例代码,展示如何调用 1688 商品详情接口:
Python
import requests
app_key = "YOUR_APP_KEY"
app_secret = "YOUR_APP_SECRET"
product_id = "123456789" # 替换为实际的商品 ID
params = {
"method": "alibaba.product.get",
"app_key": app_key,
"product_id": product_id,
"timestamp": str(int(time.time() * 1000)),
"format": "json",
"v": "2.0"
}
params["sign"] = generate_sign(params, app_secret)
response = requests.get("https://gw.open.1688.com/openapi/param2/2/portals.open/api/", params=params)
data = response.json()
if data["code"] == "0":
product_info = data["result"]["productInfo"]
print(f"商品标题:{product_info['subject']}")
print(f"批发价格区间:{product_info['priceRange']}")
print(f"最小起订量:{product_info['moq']}")
print("SKU 详情:")
for sku in product_info["skuList"]:
print(f"规格:{sku['spec']} | 库存:{sku['stock']} | 价格:{sku['price']}")
else:
print(f"请求失败,错误信息:{data['message']}")
(四)分页数据抓取
如果需要获取店铺全量商品数据,可以使用 alibaba.trade.product.search4trade 接口,并通过分页机制循环获取:
Python复制
def fetch_all_products(seller_member_id, app_key, app_secret):
page_no = 1
all_products = []
while True:
params = {
"method": "alibaba.trade.product.search4trade",
"app_key": app_key,
"seller_member_id": seller_member_id,
"page_no": page_no,
"page_size": 50,
"timestamp": str(int(time.time() * 1000)),
"format": "json",
"v": "2.0"
}
params["sign"] = generate_sign(params, app_secret)
response = requests.get("https://gw.open.1688.com/openapi/param2/2/portals.open/api/", params=params)
data = response.json()
products = data.get("result", {}).get("products", [])
if not products:
break
all_products.extend(products)
page_no += 1
return all_products
三、注意事项
(一)API 接口限制
1688 的 API 接口通常有调用频率限制,需合理规划请求频率,避免被限制访问。
(二)数据安全
妥善保管 App Key 和 App Secret,确保数据传输的安全性。
(三)接口文档
在使用 API 之前,建议仔细阅读 1688 开放平台的官方文档,以获取最准确和最新的接口信息。
四、总结
通过上述步骤和代码示例,你可以轻松地使用 Python 调用 1688 商品详情接口,获取商品的详细信息。这些数据可以用于电商运营、市场分析、选品建议等场景。希望本文的介绍和示例代码能够帮助你快速上手并应用到实际项目中。
如遇任何疑问或有进一步的需求,请随时与我私信或者评论联系。