微店数据采集需基于微店开放平台提供的 API,需先完成开发者认证、创建应用并获取密钥,再遵循 API 规则调用接口。以下以Python为例,演示商品列表、订单数据的采集流程(需提前完成开发者配置)。
一、准备工作
- 注册开发者:访问微店开放平台,完成企业 / 个人开发者认证,创建应用,获取
AppKey、AppSecret。 - 获取 Access Token:微店 API 采用 OAuth2.0 认证,需先通过
AppKey和AppSecret获取access_token(有效期通常为 2 小时)。 - API 文档参考:查看微店开放平台的接口文档(如商品接口、订单接口),明确请求方式、参数、返回格式。

二、核心步骤与代码实现
1. 获取 Access Token
微店获取 Token 的接口为:https://open.weidian.com/api/token(POST 请求)。
python
运行
import requests
import json
# 开发者配置(替换为自己的信息)
APP_KEY = "your_app_key"
APP_SECRET = "your_app_secret"
GRANT_TYPE = "client_credentials" # 客户端模式
def get_access_token():
url = "https://open.weidian.com/api/token"
params = {
"appkey": APP_KEY,
"appsecret": APP_SECRET,
"grant_type": GRANT_TYPE
}
try:
response = requests.post(url, data=params)
result = json.loads(response.text)
if result.get("errcode") == 0:
return result["access_token"]
else:
print(f"获取Token失败:{result['errmsg']}")
return None
except Exception as e:
print(f"请求异常:{e}")
return None
# 获取Token
access_token = get_access_token()
if access_token:
print(f"Access Token: {access_token}")
2. 采集商品列表数据
以商品列表接口(/v2/goods/list)为例,GET 请求,需传入access_token、店铺 ID 等参数。

运行
def get_goods_list(access_token, page=1, page_size=20):
url = "https://open.weidian.com/api/v2/goods/list"
params = {
"access_token": access_token,
"page": page,
"page_size": page_size,
"shop_id": "your_shop_id" # 替换为店铺ID
}
try:
response = requests.get(url, params=params)
result = json.loads(response.text)
if result.get("errcode") == 0:
goods_list = result["data"]["goods_list"]
return goods_list
else:
print(f"获取商品失败:{result['errmsg']}")
return []
except Exception as e:
print(f"请求异常:{e}")
return []
# 获取商品列表
goods_list = get_goods_list(access_token)
if goods_list:
print(f"共获取{len(goods_list)}件商品:")
for goods in goods_list:
print(f"商品ID:{goods['goods_id']},名称:{goods['goods_name']},价格:{goods['price']}")
3. 采集订单数据
以订单列表接口(/v2/order/list)为例,GET 请求,需传入时间范围等参数。
python
运行
def get_order_list(access_token, start_time, end_time, page=1):
url = "https://open.weidian.com/api/v2/order/list"
params = {
"access_token": access_token,
"start_time": start_time, # 开始时间(格式:yyyy-MM-dd HH:mm:ss)
"end_time": end_time, # 结束时间
"page": page,
"page_size": 20,
"shop_id": "your_shop_id"
}
try:
response = requests.get(url, params=params)
result = json.loads(response.text)
if result.get("errcode") == 0:
order_list = result["data"]["order_list"]
return order_list
else:
print(f"获取订单失败:{result['errmsg']}")
return []
except Exception as e:
print(f"请求异常:{e}")
return []
# 获取订单列表(示例时间范围)
order_list = get_order_list(access_token, "2025-12-01 00:00:00", "2025-12-03 23:59:59")
if order_list:
print(f"共获取{len(order_list)}条订单:")
for order in order_list:
print(f"订单号:{order['order_id']},金额:{order['total_amount']},状态:{order['order_status']}")
三、注意事项
- 权限与合规:仅可采集自己店铺的数据,需遵守《微店开放平台开发者协议》,禁止爬取他人数据。
- 接口限制:微店 API 有调用频率限制(如单接口 QPS 限制),需控制请求频率,避免被封禁。
- 签名验证:部分接口需进行签名(如
appsecret参与签名),需严格按照文档生成签名参数。 - Token 刷新:
access_token过期后需重新获取,建议在代码中加入 Token 过期自动刷新逻辑。
四、数据存储扩展
可将采集的数据保存到数据库(如 MySQL)或文件(如 CSV):
python
运行
import csv
# 保存商品数据到CSV
with open("goods_list.csv", "w", newline="", encoding="utf-8") as f:
writer = csv.DictWriter(f, fieldnames=["goods_id", "goods_name", "price"])
writer.writeheader()
writer.writerows(goods_list)
以上实例需根据微店开放平台的最新接口文档调整参数和请求方式,确保与官方规则一致。


426

被折叠的 条评论
为什么被折叠?



