Python中如何应用Django集成1688和淘宝API
就和 yoybuy 一样的代购电商网站。通过输入商品的 URL 获取到 1688 和淘宝的商品信息。
之前没接触过,想自己啃下来发现有点难,哪位有过类似经验能给下指点啊~
或者帮忙开发一下(有偿的) 扣 3357212051 谢谢
Python中如何应用Django集成1688和淘宝API
1 回复
要集成1688和淘宝API到Django项目里,核心就是处理HTTP请求和API认证。1688用阿里云SDK,淘宝用Top API,两者都是OAuth流程。下面给个基础框架。
首先,安装必要的包:
pip install alibabacloud-sdk-core alibabacloud_tea_openapi alibabacloud_tea_util
对于1688,用阿里云SDK。在views.py里这么写:
from alibabacloud_sdk_core.client import Client
from alibabacloud_tea_openapi.models import Config
from alibabacloud_tea_util.models import RuntimeOptions
def alibaba_api_call(request):
# 配置,从Django settings或环境变量读取
config = Config(
access_key_id=settings.ALIBABA_ACCESS_KEY,
access_key_secret=settings.ALIBABA_SECRET_KEY,
endpoint='1688openapi.aliyun.com'
)
client = Client(config)
# 构建请求参数
params = {
'method': 'alibaba.product.list.get',
'page_no': 1,
'page_size': 20
}
try:
response = client.call_api(params, 'GET', RuntimeOptions())
return JsonResponse(response)
except Exception as e:
return JsonResponse({'error': str(e)}, status=500)
淘宝API需要先获取session_key。在views.py里加个OAuth回调:
import requests
from django.conf import settings
def taobao_oauth_callback(request):
code = request.GET.get('code')
token_url = 'https://oauth.taobao.com/token'
data = {
'client_id': settings.TAOBAO_APP_KEY,
'client_secret': settings.TAOBAO_APP_SECRET,
'code': code,
'grant_type': 'authorization_code',
'redirect_uri': settings.TAOBAO_REDIRECT_URI
}
resp = requests.post(token_url, data=data)
if resp.status_code == 200:
token_data = resp.json()
# 把access_token存session或数据库
request.session['taobao_access_token'] = token_data['access_token']
return JsonResponse({'status': 'ok'})
return JsonResponse({'error': 'auth failed'}, status=400)
def taobao_api_call(request):
access_token = request.session.get('taobao_access_token')
if not access_token:
return JsonResponse({'error': 'need auth'}, status=401)
url = 'https://eco.taobao.com/router/rest'
params = {
'method': 'taobao.items.onsale.get',
'app_key': settings.TAOBAO_APP_KEY,
'session': access_token,
'timestamp': str(int(time.time())),
'format': 'json',
'v': '2.0',
'sign_method': 'md5',
'fields': 'num_iid,title,price',
'page_no': 1,
'page_size': 20
}
# 生成签名(这里省略签名逻辑,需要按淘宝规则实现)
params['sign'] = generate_sign(params, settings.TAOBAO_APP_SECRET)
resp = requests.get(url, params=params)
return JsonResponse(resp.json())
记得在urls.py配路由:
from django.urls import path
from . import views
urlpatterns = [
path('alibaba/', views.alibaba_api_call),
path('taobao/callback/', views.taobao_oauth_callback),
path('taobao/items/', views.taobao_api_call),
]
关键是把API密钥放环境变量,别硬编码。两个API的调用逻辑差不多,主要区别在认证方式和参数规则。建议把API调用封装成单独的服务类,别全堆在view里。
总结:装好SDK,处理好OAuth和签名,按需封装。

