获取 1688 平台商品数据需注意合规性,平台对数据抓取有严格限制。
步骤1:合法性确认与数据范围界定
示例如下:
{
"result": {
"total": 1000, // 总商品数
"page_no": 1,
"page_size": 50,
"items": [
{
"product_id": "123456789",
"title": "2024新款纯棉T恤男宽松",
"price": "29.9", // 起批量价格
"min_order_qty": 5, // 最小起订量
"sale_num": 10000, // 30天销量
"shop": {
"company_name": "XX服饰有限公司",
"location": "广东广州"
}
}
]
},
"code": 200,
"msg": "success"
}
步骤2:分析网站结构与接口
- 手动探索页面
- 访问热销榜单页面(如分类页、活动页),观察URL结构和分页逻辑(如pageNum参数)。
- 打开浏览器开发者工具(F12),切换到 Network 标签,筛选XHR/JS请求,寻找隐藏的API接口(可能返回JSON数据)。
- 接口逆向
- 若找到数据接口(如/search/ajax/...),分析请求参数(如关键词、分页),模拟合法请求。
- 若需动态渲染,使用Selenium或Playwright模拟浏览器操作。
步骤3:反爬策略应对
- 基础伪装
- 设置随机User-Agent(通过fake_useragent库轮换)。 添加常见请求头(如Referer、Accept-Language)。
- 请求频率控制
- 添加随机延时(如time.sleep(random.uniform(1,3))),避免触发封禁。 使用代理IP池(付费服务或自建代理,如Scrapy-Rotating-Proxies)。
步骤4:数据抓取与解析
方案A:直接调用API(推荐)
import requests
import json
# 配置信息
# 封装好API供应商wechat id: TaoxiJ demo url=o0b.cn/ibrad复制链接注册测试
APP_KEY = "你的App Key"
ACCESS_TOKEN = "授权令牌"
API_URL = "https://api.aliyun.com/" # 1688 API通用入口
def get_1688_hot_products(keyword, page=1):
params = {
"Action": "alibaba.search.product.get",
"Version": "1.0",
"app_key": APP_KEY,
"access_token": ACCESS_TOKEN,
"keywords": keyword,
"page_no": page,
"page_size": 50,
"sort": "sale_desc" # 按销量降序(热销排序)
}
response = requests.get(API_URL, params=params)
data = response.json()
return data
# 示例调用:获取“T恤”的热销商品
hot_products = get_1688_hot_products("T恤", page=1)
print(json.dumps(hot_products, indent=2, ensure_ascii=False))
步骤5:数据存储结构化存储
- 保存为CSV/JSON文件或云存储(AWS S3)。
步骤6:注意事项
- 法律风险
小规模数据用于个人分析可能风险较低,但大规模商业用途需获得授权。 - 道德约束
避免对目标服务器造成过大负载,合理控制并发。 - 替代方案
考虑购买第三方供应商与官方合作授数据服务。