Python 全栈打造某宝客微信机器人

本篇 Chat 将会涉及:

Python 环境下某宝客 API 的使用;

使用 Python 第三方模块 itchat 实现某信的登录的自动回复操作;

PyQt5 的布局管理与多线程应用

  1. 前言
  2. 什么是某宝客

相信很多人都听过或者接触过各类导购 APP、QQ 群、微信群分享一些某宝商品的优惠券或是其他的优惠信息。
请添加图片描述
请添加图片描述
用户可以在这些渠道上获取到相较于从某宝平台搜索出来的商品更加优惠的价格或者是领取到面额较大的优惠券。

这些渠道,都是属于某宝客的渠道。

某宝客是某宝平台推出的一种按成交计费的推广模式,

通常也指通过这种模式赚钱的人。

前几年某宝客红火的时候,

各类导购网站、导购 APP 以及优惠券 QQ 群、微信群层出不穷,如今倒是稍显平淡了。

虽说某宝客在蜂拥的互联网上平淡了起来,

但是丝毫影响不了新加入的人群的心态,

在某宝网在搜索 “某信人导购机器”,

还可以看到很多商家在售卖某宝客的某信机器人:

请添加图片描述
这些某信机器人的功能其实主要也是自动回复群内的人的消息,以及定时推送一些优惠商品信息等。

今天,我们就使用哪哪都会出现,哪哪都行的大蟒蛇——Python,来打造一个某宝客某信机器人,实现在群聊中自动回复搜索并返回商品这一某宝客导购微信机器人最基本的功能。

注册成为某宝客

要写一个某宝客的某信机器人,

我们首先需要成为一个某宝客,

才能获取到某宝客相关的优惠资源。

方法很简单,

在某宝客的推广平台——almm某宝联盟(某宝联盟·生态伙伴)上注册一个一个帐号即可,

我们可以使用某宝的账号进行登录。

请添加图片描述

在登录之后,我们可以在 “我的联盟” 中的 “推广管理” 中进行推广媒体的设置:

请添加图片描述

在其中,我们可以添加网站、APP、导购、软件的推广等。

在此,我已经添加了一个网站的媒体,并且已经提交验证成功了。

推广媒体是某宝客中一个基本的推广商品渠道,用于归属不同的推广位,如果没有推广媒体,就没有办法创建推广位,进而无法进行某宝客的推广。

大家可以按照自己的情况创建推广媒体,推荐使用网站推广媒体。

在创建好推广媒体之后,我们还需要创建一个推广位,

推广位用于归属具体的某宝客推广商品,

在此我已经创建了网站的推广位,

其中的 PID 在我们后面调用 API 接口的时候会使用到,大家注意一下:

请添加图片描述
如果没有推广位,那么我们可以在 “联盟产品” 中点击 “精选清单” 的立即下载按钮:

请添加图片描述
其会让我们选择推广位,这时候可以新建一个推广位:
请添加图片描述
这样我们就获得了一个推广网站的推广位。

再回到推广媒体管理上,

在我们添加的网站媒体通过了almm的验证成功后,

我们会得到一个联盟合作网站的 API:

点击 “查看” 链接,

会跳转到某里开放平台上我们创建的网站推广位(推广位为在阿里开放平台上显示为一个应用)的概览中,

其中显示了我们的应用接口信息,

接口数据和我们获得的权限 API 等:
请添加图片描述
APP 证书中的 App Key 和 App Secret 会在调用 api 接口时作为凭证来认证,下方的功能场景中显示我们获取的 API 接口:在这里我的应用有:

  • 某宝客基础 API
  • 某宝客 - 媒体 - 内容消息
  • 某口令基础包
  • 某宝客 - 工具 - 超级搜索

其中某宝客基础 API 中包含了其他的一些接口的,我们主要使用这个 API 包。

这样,我们就可以开始通过 API 接口获取到某宝客的推广信息。

Python 环境下使用某宝客 API

在注册成为淘宝客,添加推广位获取到某宝客的基础 API 之后,我们就可以通过调用某宝客的 API 来获取淘宝客推广信息了。

了解某宝客接口

在调用某宝客的 API 之前,我们先来看一下,

在提交网站推广位之后获得的某宝客基础 API 中都有些什么接口:

请添加图片描述
其中一共有 23 个接口,

虽然是一个基础 API 包,

但还是包含了某宝客推广商品中的大多数信息的获取。

在本篇 Chat 介绍创建的某宝客微信机器人中,

我们主要使用以下两个接口:

清单 API【导购】taobao.tbk.dg.item.coupon.get
客某口令 taobao.tbk.tpwd.create
其他的 api 接口大家可以根据自己的需要添加在程序中。

清单 API 用于返回某宝客商品的优惠券信息,我们可以通过其来搜索特定关键词下的商品的优惠券,以作为结果返回给用户。其接受的参数如下:
请添加图片描述
某宝客淘口令 API,用于将某宝客推广链接转换为淘口令,以实现复制优惠券信息后,打开某宝就能跳转到推广链接的效果。其接受的参数如下:
请添加图片描述
可以发现,

我们主要使用 adzoneid、某口令弹框内容和某口令跳转的目标链接三个参数,

其中 adzoneid 可以从推广位的 PID 中获取,

某口令弹框内容可以设置为商品的标题,

某口令跳转的目标链接则是优惠券的链接地址,

这两个参数都可以从好券清单 API 中获取到。

下面我们来看看如何调用这两个接口。

调用淘宝客 API 接口

在 API 接口的介绍中,

我们可以看到其中有多种语言的请求实例,如下所示:

请添加图片描述
最幸运的是,其提供了 Python 的请求示例,

这样我们可以稍微修改一下示例代码(示例中为 Python2 版本的代码)就能对某宝客的 API 进行调用了,

是不是很美好?

虽然看起来很美好,但是我们还是需要额外做一些工作。

下载 al 提供的 SDK

看到示例代码中的第 2 行引入了一个 top.api 的模块,

这个模块属于al开放平台提供的 SDK,

使用 pip 等 Python 包管理工具并不能下载安装。

在al开发平台的每个应用中,

都提供了相应的 SDK 的下载链接,

我们选择 “Python 版本”,在点击下载即可。

请添加图片描述
下载完成的 SDK 是一个名为 “sdk-python-*” 的压缩包,其中还有一个压缩包和一个空的文件夹:
请添加图片描述
我们需要的 top 模块就在 taobao-sdk-PYTHON-auto 那个压缩包中,继续解压,得到以下文件:
请添加图片描述
面对一个陌生的包,好的习惯当然是查看 readme 之类的文件来知晓使用方法

我们打开 READ_ME.TXT 文件,里面的内容不多,

但说明了 top 模块如何使用:

复制 top 文件夹到自己的 Python 项目路径下,

让 Python 执行器能够引入这个 top 包即可。

请添加图片描述

得到了某宝客的 SDK 模块以及模块的使用方法后,

我们似乎可以开干了。

如果你和我一样,使用的是 Python 3 的话,

那么可以还需要再等等。

因为al开放平台提供的这个 SDK 是 Python 2 版本的,

直接在 Python 3 环境下调用会报错,

而报错的主要位置都位于 top 文件夹的 api 文件夹下的 base.py 这个文件:

请添加图片描述
我们需要对其进行代码风格和规范的转换,

可以使用 Python 官方提供的 2to3.py 这个工具。

在这里,我已经将其转换修改好并上传到百度网盘上,

有需要的同学可以下载进行替换,

链接为:
base.py_免费高速下载|百度网盘-分享无限制

这一步完成之后,我们的准备工作就已经结束了。下面使用 Python 来调用一下某宝客的接口。

调用某宝客 API

当前,我们的项目目录如下所示:

请添加图片描述
在项目主文件夹下,只有一个某宝客的 top 包,

我们新建一个 Python 文件,用于调试调用某宝客的 API:

请添加图片描述
首先在 usetbkapi.py 文件中引入某宝客的包——top,

并且定义好公共参数(App Key 和 App Secret,

两者从al开放平台 - 应用的概览中获取)和好券清单需要的 adzoneid(某宝联盟 - 推广位管理 - 推广位的 PID 中 mmxxxxxxxxx 的第三位):

import top.api
 
appkey = '你自己的appkey'
secret = '你自己的appsecret'
adzone_id = 推广位的adzone_id

首先是好券清单的 API,

在阿里开放平台的 API 文档中,其请求示例如下所示:

# -*- coding: utf-8 -*-
import top.api
 
req=top.api.TbkDgItemCouponGetRequest(url,port)
req.set_app_info(top.appinfo(appkey,secret))
 
req.adzone_id=123
req.platform=1
req.cat="16,18"
req.page_size=1
req.q="女装"
req.page_no=1
try:
    resp= req.getResponse()
    print(resp)
except Exception,e:
    print(e)

我们将其修改一下,变成了如下形式:

# 获取淘宝客商品优惠券
def get_tbk_coupon(keyword):
    req = top.api.TbkDgItemCouponGetRequest()
    req.set_app_info(top.appinfo(appkey, secret))
 
    req.adzone_id = adzone_id
    # 商品的平台:1为PC端,2为无线端,默认为1
    req.platform = 2
    # 商品的类目ID
    req.cat = "16,18"
    # 每页返回的商品数量
    req.page_size = 5
    # 商品的搜索词
    req.q = keyword
    # 返回商品的页数
    req.page_no = 1
    try:
        resp = req.getResponse()
        print(resp)
    except Exception as e:
        print(e)

函数 gettbkcoupon() 接受一个参数作为淘宝客商品优惠券的搜索词,我们运行一下这个函数,以 “Python” 作为搜索词看看返回的结果:

if __name__ == '__main__':
    get_tbk_coupon('python')

猜你喜欢

转载自blog.csdn.net/m0_67575344/article/details/126102102