1. 程式人生 > 程式設計 >python實現秒殺商品的微信自動提醒功能(程式碼詳解)

python實現秒殺商品的微信自動提醒功能(程式碼詳解)

技術實現原理:獲取京東的具體的商品資訊,然後再使用微信傳送提醒

工具:需要兩個微訊號,這兩個微訊號互為好友

1.收集自己想要的商品url

我們就以京東來舉例,獲取京東的秒殺商品資訊:

首先,我們在網頁上開啟京東,搜尋我們想要的商品,這邊我就以我最近買的東西為例子:

python實現秒殺商品的微信自動提醒功能(程式碼詳解)

我們需要找到它的商品資訊,需要開啟瀏覽器的開發者模式,之後我們需要選擇自己的配送地址,這個時候裡面就傳送一些介面請求:

python實現秒殺商品的微信自動提醒功能(程式碼詳解)

我們選擇一個有用的商品資訊介面:

python實現秒殺商品的微信自動提醒功能(程式碼詳解)

找到自己想要商品的資訊介面,來判斷它是否有貨:

python實現秒殺商品的微信自動提醒功能(程式碼詳解)

一般規則是:如果這個介面書籍裡面有“無貨”的字元資訊,那就是缺貨狀態,否則就是有貨狀態,可以傳送商品連結,進行購買。

我們現在已經成功獲取到了商品的url資訊,接下來就是設定微信了。

2.設定微信通知

微信通知我們需要兩個微訊號,一個作為傳送方,一個作為接受方,這個兩個賬號需要互為好友。

注意:作為傳送方的微信可能會有註冊時間要求(微信好像設立了規則:如果晚於某一時間段註冊的賬號將不再具備網頁微信登陸功能)

這邊我們使用itchat模組進行模擬微信登陸:

import itchat
itchat.auto_login(hotReload=True)

hotload引數設定為True可以記住第一次登陸的狀態,下一次就不需要掃碼登陸了。

執行以上程式碼可以生成登陸二維碼,你只需要掃碼登陸就可以了。

接下來我們需要找到被通知的那個賬號:

# 找到需要傳送的物件
users = itchat.search_friends(name='神一樣的男子')
print(users)

搜尋好友資訊可以使用好友的微信名字也可以使用備註名字,接下來我們獲取傳送物件的資訊:

[{'Uin': 0,

'UserName': '@131572fb0f21d053055ba1caebd1c3089178a1ccafbf320bb72599c4d04a7e20',

'NickName': '吾',

'HeadImgUrl': '/cgi-bin/mmwebwx-bin/webwxgeticon?seq=670180178&username=@131572fb0f21d053055ba1caebd1c3089178a1ccafbf320bb72599c4d04a7e20&skey=@crypt_32bfc8c4_05d6f5196800a0aba56d8b80af69f09e',

'ContactFlag': 1,'MemberCount': 0,'MemberList': [],'RemarkName': '神一樣的男子','HideInputBarFlag': 0,'Sex': 1,'Signature': '消失在黑暗中','VerifyFlag': 0,'OwnerUin': 0,'PYInitial': 'W','PYQuanPin': 'wu','RemarkPYInitial': 'SYYDNZ','RemarkPYQuanPin': 'shenyiyangdenanzi','StarFriend': 0,'AppAccountFlag': 0,'Statues': 0,'AttrStatus': 33657021,'Province': '上海','City': '黃浦','Alias': '','SnsFlag': 1,'UniFriend': 0,'DisplayName': '','ChatRoomId': 0,'KeyWord': '','EncryChatRoomId': '','IsOwner': 0}]

我們傳送資訊需要獲取UserName欄位,也就是傳送物件的具體ID

# 獲取傳送物件的ID
userName = users[0]['UserName']

接下來我們就可以實現傳送秒殺資訊了。

3.實現搶貨通知

首先我們需要訪問京東的資料介面-----也就是我們第一步拿到的那個url,接下來我們去訪問它就可以拿到返回的介面資料:

import requests
url = "https://c0.3.cn/stock?skuId=60456599372&area=2_2825_51932_0&venderId=10181278&buyNum=1&choseSuitSkuIds=&cat=9987,830,863&extraParam={%22originid%22:%221%22}&fqsp=0&pdpin=&pduid=479124268&ch=1&callback=jQuery3588468"
headers = {
   "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML,like Gecko) Chrome/75.0.3770.100 Safari/531.36","Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3","Connection": "keep-alive"
  }
respone = requests.get(url,headers=headers)
print(respone.text)

拿到資料之後我們就可以去判斷這個資料裡面有沒有“無貨”的字元,如果沒有我們就使用itchat傳送搶購資訊:

if (response.text.find('無貨') > 0):
 print('暫時無貨: ' + skuidUrl)
else:
 print('你定時的搶購商品有貨啦,點選立即購買 :' + skuidUrl)
 itchat.send("你定時的搶購商品有貨啦,點選立即購買:\n{}".format(skuidUrl),toUserName=userName)
 flag += 1

這個搶購資訊我們需要在原來的url上擷取skuid,然後進行拼接:

import re
pattern = re.compile("skuId=(\d+)&")
url = "https://c0.3.cn/stock?skuId=60456599372&area=2_2825_51932_0&venderId=10181278&buyNum=1&choseSuitSkuIds=&cat=9987,863&extraParam={%22originid%22:%221%22}&fqsp=0&pdpin=&pduid=479124268&ch=1&callback=jQuery3588468"
result = pattern.findall(url)
skuidUrl = 'https://item.jd.com/' + result[0] + '.html'

這樣我們的定時搶購就完成啦!

最後,我們可以在訪問的外面設定一個while死迴圈,如果一直沒有貨就一直髮送訪問請求,如果OK,就跳出break!

附搶購圖:

python實現秒殺商品的微信自動提醒功能(程式碼詳解)

大家只需要點選搶購連結就能直接進行購買啦!

到此這篇關於python實現秒殺商品的微信自動提醒功能的文章就介紹到這了,更多相關python微信自動提醒內容請搜尋我們以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援我們!