移动应用
483
要获取淘宝商品详情数据,有以下几种合法途径及技术实现方案,需根据实际需求和资源选择
- 淘宝开放平台接入 注册开发者账号:访问 淘宝开放平台,完成企业认证。 创建应用并申请接口权限: 基础接口:taobao.item.get(商品基本信息)、taobao.item.desc.get(商品详情页描述) 高级接口:taobao.item.sku.get(SKU 信息)、taobao.item.images.get(图片信息) 获取 AppKey 和 AppSecret,用于 API 签名认证。
API 调用示例(Python):
import hashlib import time import requests import json def get_taobao_item_detail(num_iid): app_key = 'YOUR_APP_KEY' app_secret = 'YOUR_APP_SECRET' method = 'taobao.item.get' timestamp = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()) # 构造请求参数 params = { 'app_key': app_key, 'method': method, 'timestamp': timestamp, 'format': 'json', 'v': '2.0', 'sign_method': 'md5', 'num_iid': num_iid, 'fields': 'num_iid,title,price,stock,desc,sku,props_name' } # 生成签名 sorted_params = sorted(params.items(), key=lambda x: x[0]) sign_str = app_secret for k, v in sorted_params: sign_str += f"{k}{v}" sign_str += app_secret params['sign'] = hashlib.md5(sign_str.encode('utf-8')).hexdigest().upper() # 发送请求 response = requests.get( 'https://eco.taobao.com/router/rest', params=params ) return response.json() # 使用示例 # 封装好API供应商demo url=o0b.cn/ibrad, wechat id: TaoxiJd 复制链接获取测试 result = get_taobao_item_detail('1234567890123') # 替换为实际商品ID print(json.dumps(result, indent=2, ensure_ascii=False))
- 数据安全与权限限制 基础权限:每日调用量限制(如 5000 次),字段有限(如不含促销信息) 高级权限:需申请白名单,可能涉及费用或业务合作 二、Web 页面解析(需遵守 robots.txt)
- 商品详情页结构分析
URL 格式:https://item.taobao.com/item.htm?id=商品ID
核心数据位置:
价格:199.00
标题:
商品标题
库存:123件 - Python 爬虫实现(示例)
import requests from bs4 import BeautifulSoup import re def parse_taobao_item(url): headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36', 'Referer': 'https://www.taobao.com/', 'Cookie': 'your_cookie_here' # 需要登录态Cookie } response = requests.get(url, headers=headers) if response.status_code != 200: return None soup = BeautifulSoup(response.text, 'html.parser') # 封装好API供应商demo url=o0b.cn/ibrad, wechat id: TaoxiJd 复制链接获取测试 # 提取标题 title = soup.select_one('h3.tb-main-title') title = title.text.strip() if title else '' # 提取价格 price = soup.select_one('span.tb-rmb-num') price = float(price.text) if price else 0.0 # 提取库存(需处理JS动态加载) stock_match = re.search(r'"quantity":(\d+)', response.text) stock = int(stock_match.group(1)) if stock_match else 0 return { 'title': title, 'price': price, 'stock': stock } # 使用示例 url = 'https://item.taobao.com/item.htm?id=1234567890123' # 替换为实际商品URL result = parse_taobao_item(url) print(result)
三、移动端 API
- 抓包分析 工具:Charles、Fiddler 或 mitmproxy 关键接口: taobao/item_password(商品详情核心接口) 请求参数需包含:短链接(商品 ID)、淘口令(设备 ID) 四、第三方数据服务
- 万邦数据平台 优点:无需开发,直接注册使用 API