两种方式【pip install taobao_sdk_python3】或者【Pycharm-setting-python interpreter自行安装】。此第三方库支持Python 3.0以上!
链接如下:这里感谢GitHub作者ymj的开源
导入的taobao入口函数里面只引用几种Api的接口调用,如果需要更多,可以直接在里面添加from top.api.rest.xxxxxx import xxxxx 需要的接口!
使用淘宝客的API必须申请为淘宝联盟的生态伙伴,也就是推广人!
淘宝联盟.生态伙伴链接入口:https://pub.alimama.com/?spm=a219t.11817172.0.df7a65f99.e5a76a15LnbpVL
进入后台后需要在推广管理面【新增媒体备案】和【推广位管理】,申请和审核完毕后如下图:不会注册建议多尝试几次,很easy……
备案管理和推广位申请OK后,需要优先进行APPKEY申请且审核通过,要不然后面将无法通过Python调用API。这是重点,重点,重点
审核通过后,你可以很容易的得到Key和secret!
当然,到这里还没有结束,没有结束!
你需要将:①淘宝客【公用】淘口令生成,②淘宝客【推广者】物料搜索,③淘宝客【公用】物料信息查询,这三个淘宝客功能场景API的使用状态申请为已获得!
放心,只要你在申请说明里面填满100个字,就能直接获得!
而关于adzone_id,你只要去你的推广位-pid字符串取最后的一串数字即可!
直接上代码
import top.api //淘宝的API
from decimal import * //小数的计算(避免价格不是整数)
import re
appkey = "你的appkey "
secret = "你的secret"
adzone_id = "你的pid最后一串字符串"
def TbkDgMaterialOptional(title): //查找商品的详细信息
req = top.api.TbkDgMaterialOptionalRequest(domain='gw.api.taobao.com', port=80)
req.set_app_info(top.appinfo(appkey, secret))
req.adzone_id = adzone_id
req.platform = 2
req.q = title
try:
resp = req.getResponse()
return resp
except Exception as e:
print(e)
def TbkCouponGet(item_id,activity_id): //查找商品的有无淘宝客对应的优惠券
req = top.api.TbkCouponGetRequest(domain='gw.api.taobao.com', port=80)
req.set_app_info(top.appinfo(appkey, secret))
req.item_id = int(item_id)
req.activity_id = str(activity_id)
try:
resp = req.getResponse()
return resp
except Exception as e:
print(e)
def TbkTpwdCreate(title,url): //有淘宝客对应优惠券的商品生成短链接
req = top.api.TbkTpwdCreateRequest(domain='gw.api.taobao.com', port=80)
req.set_app_info(top.appinfo(appkey, secret))
req.text = title
req.url = url
try:
resp = req.getResponse()
return resp
except Exception as e:
print(e)
if __name__ == '__main__':
//给出要查询的商品名字
response = TbkDgMaterialOptional("澳贝婴儿健身架健身器毯音乐脚踏钢琴3个月宝宝0-1岁新生儿童玩具")
map_data = response['tbk_dg_material_optional_response']['result_list']['map_data'][0]
if map_data.get('coupon_share_url') is None:
print('没有发现优惠券')
else:
title = map_data.get('title') //得到商品的名称
itemid = map_data.get('item_id') //得到商品的id
activityid = map_data.get('coupon_id') //得到优惠券的id
share_url = "https:" + map_data.get('coupon_share_url')
priceresponse = TbkCouponGet(itemid,activityid)
price = priceresponse['tbk_coupon_get_response']['data']
discount = price.get('coupon_amount')//商品的优惠券额度
onsale= price.get('coupon_start_fee') //商品的原始价格
difference = str(float(Decimal(onsale) - Decimal(discount))) //优惠后的价格
Shortlink = TbkTpwdCreate(title,share_url)
link = Shortlink['tbk_tpwd_create_response']['data']['model'] //得到短链接
linkterm = re.compile(r'(.*?)【.*')
truelink = re.findall(linkterm,link) //优化为自己比较习惯的语言逻辑
message = title + "【在售价】" + onsale + "【券后价】" + difference + "" + truelink[0]
print(message)
①提示没有发现API的对应函数。要么API的函数名称不正确,要么前面说的taobao.api.rest入口函数__init__.py中没有import对应的API函数,要么GitHub大神里面没有提供相关的接口函数,自己去taobao.api.rest文件夹里面找找就好了。实在是没有提供,去看淘宝的API文件,会告诉你怎么操作!
②没有依照API提供对应的参数,淘宝的API中请求参数必须值为True的不能丢掉,其他的依照提示来处理,少什么加什么!
③权限不够。要么是你本身平台的权限不够,要么就是没有将淘宝联盟.开放平台所提供的接口状态申请为“已获得”。如果是本身的申请问题,多研究几遍淘宝联盟,生态伙伴的文档就好了。如果是状态没有改,赶紧去改,在调用就OK了!淘宝联盟.开放平台所提供的接口基本够用!嗯!够用!
以上,就是全部的内容,新人花了一天才搞定,勿喷!
有啥指教的,可以直接留言哈,感谢!
明天准备部署到微信看看,不过还得再学习,加油!