Python 環境下某寶客 API 的使用;
使用 Python 第三方模塊 itchat 實現某信的登錄的自動回復操作;
PyQt5 的布局管理與多線程應用
相信很多人都聽過或者接觸過各類導購 APP、QQ 群、微信群分享一些某寶商品的優惠券或是其他的優惠信息。
用戶可以在這些渠道上獲取到相較於從某寶平台搜索出來的商品更加優惠的價格或者是領取到面額較大的優惠券。
這些渠道,都是屬於某寶客的渠道。
某寶客是某寶平台推出的一種按成交計費的推廣模式,
通常也指通過這種模式賺錢的人。
前幾年某寶客紅火的時候,
各類導購網站、導購 APP 以及優惠券 QQ 群、微信群層出不窮,如今倒是稍顯平淡了。
雖說某寶客在蜂擁的互聯網上平淡了起來,
但是絲毫影響不了新加入的人群的心態,
在某寶網在搜索 “某信人導購機器”,
還可以看到很多商家在售賣某寶客的某信機器人:
這些某信機器人的功能其實主要也是自動回復群內的人的消息,以及定時推送一些優惠商品信息等。
今天,我們就使用哪哪都會出現,哪哪都行的大蟒蛇——Python,來打造一個某寶客某信機器人,實現在群聊中自動回復搜索並返回商品這一某寶客導購微信機器人最基本的功能。
要寫一個某寶客的某信機器人,
我們首先需要成為一個某寶客,
才能獲取到某寶客相關的優惠資源。
方法很簡單,
在某寶客的推廣平台——almm某寶聯盟(某寶聯盟·生態伙伴)上注冊一個一個帳號即可,
我們可以使用某寶的賬號進行登錄。
在登錄之後,我們可以在 “我的聯盟” 中的 “推廣管理” 中進行推廣媒體的設置:
在其中,我們可以添加網站、APP、導購、軟件的推廣等。
在此,我已經添加了一個網站的媒體,並且已經提交驗證成功了。
推廣媒體是某寶客中一個基本的推廣商品渠道,用於歸屬不同的推廣位,如果沒有推廣媒體,就沒有辦法創建推廣位,進而無法進行某寶客的推廣。
大家可以按照自己的情況創建推廣媒體,推薦使用網站推廣媒體。
在創建好推廣媒體之後,我們還需要創建一個推廣位,
推廣位用於歸屬具體的某寶客推廣商品,
在此我已經創建了網站的推廣位,
其中的 PID 在我們後面調用 API 接口的時候會使用到,大家注意一下:
如果沒有推廣位,那麼我們可以在 “聯盟產品” 中點擊 “精選清單” 的立即下載按鈕:
其會讓我們選擇推廣位,這時候可以新建一個推廣位:
這樣我們就獲得了一個推廣網站的推廣位。
再回到推廣媒體管理上,
在我們添加的網站媒體通過了almm的驗證成功後,
我們會得到一個聯盟合作網站的 API:
點擊 “查看” 鏈接,
會跳轉到某裡開放平台上我們創建的網站推廣位(推廣位為在阿裡開放平台上顯示為一個應用)的概覽中,
其中顯示了我們的應用接口信息,
接口數據和我們獲得的權限 API 等:
APP 證書中的 App Key 和 App Secret 會在調用 api 接口時作為憑證來認證,下方的功能場景中顯示我們獲取的 API 接口:在這裡我的應用有:
其中某寶客基礎 API 中包含了其他的一些接口的,我們主要使用這個 API 包。
這樣,我們就可以開始通過 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 接口的介紹中,
我們可以看到其中有多種語言的請求實例,如下所示:
最幸運的是,其提供了 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 來調用一下某寶客的接口。
當前,我們的項目目錄如下所示:
在項目主文件夾下,只有一個某寶客的 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')