python實(shí)現(xiàn)秒殺商品的微信自動(dòng)提醒功能(代碼詳解)
技術(shù)實(shí)現(xiàn)原理:獲取京東的具體的商品信息,然后再使用微信發(fā)送提醒
工具:需要兩個(gè)微信號(hào),這兩個(gè)微信號(hào)互為好友
1.收集自己想要的商品url
我們就以京東來(lái)舉例,獲取京東的秒殺商品信息:
首先,我們?cè)诰W(wǎng)頁(yè)上打開(kāi)京東,搜索我們想要的商品,這邊我就以我最近買的東西為例子:
我們需要找到它的商品信息,需要打開(kāi)瀏覽器的開(kāi)發(fā)者模式,之后我們需要選擇自己的配送地址,這個(gè)時(shí)候里面就發(fā)送一些接口請(qǐng)求:
我們選擇一個(gè)有用的商品信息接口:
找到自己想要商品的信息接口,來(lái)判斷它是否有貨:
一般規(guī)則是:如果這個(gè)接口書籍里面有“無(wú)貨”的字符信息,那就是缺貨狀態(tài),否則就是有貨狀態(tài),可以發(fā)送商品鏈接,進(jìn)行購(gòu)買。
我們現(xiàn)在已經(jīng)成功獲取到了商品的url信息,接下來(lái)就是設(shè)置微信了。
2.設(shè)置微信通知
微信通知我們需要兩個(gè)微信號(hào),一個(gè)作為發(fā)送方,一個(gè)作為接受方,這個(gè)兩個(gè)賬號(hào)需要互為好友。
注意:作為發(fā)送方的微信可能會(huì)有注冊(cè)時(shí)間要求(微信好像設(shè)立了規(guī)則:如果晚于某一時(shí)間段注冊(cè)的賬號(hào)將不再具備網(wǎng)頁(yè)微信登陸功能)
這邊我們使用itchat模塊進(jìn)行模擬微信登陸:
import itchat itchat.auto_login(hotReload=True)
hotload參數(shù)設(shè)置為True可以記住第一次登陸的狀態(tài),下一次就不需要掃碼登陸了。
執(zhí)行以上代碼可以生成登陸二維碼,你只需要掃碼登陸就可以了。
接下來(lái)我們需要找到被通知的那個(gè)賬號(hào):
# 找到需要發(fā)送的對(duì)象 users = itchat.search_friends(name='神一樣的男子') print(users)
搜索好友信息可以使用好友的微信名字也可以使用備注名字,接下來(lái)我們獲取發(fā)送對(duì)象的信息:
[{'Uin': 0,
'UserName': '@131572fb0f21d053055ba1caebd1c3089178a1ccafbf320bb72599c4d04a7e20',
'NickName': '吾',
'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}]
我們發(fā)送信息需要獲取UserName字段,也就是發(fā)送對(duì)象的具體ID
# 獲取發(fā)送對(duì)象的ID userName = users[0]['UserName']
接下來(lái)我們就可以實(shí)現(xiàn)發(fā)送秒殺信息了。
3.實(shí)現(xiàn)搶貨通知
首先我們需要訪問(wèn)京東的數(shù)據(jù)接口-----也就是我們第一步拿到的那個(gè)url,接下來(lái)我們?nèi)ピL問(wèn)它就可以拿到返回的接口數(shù)據(jù):
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)
拿到數(shù)據(jù)之后我們就可以去判斷這個(gè)數(shù)據(jù)里面有沒(méi)有“無(wú)貨”的字符,如果沒(méi)有我們就使用itchat發(fā)送搶購(gòu)信息:
if (response.text.find('無(wú)貨') > 0): print('暫時(shí)無(wú)貨: ' + skuidUrl) else: print('你定時(shí)的搶購(gòu)商品有貨啦,點(diǎn)擊立即購(gòu)買 :' + skuidUrl) itchat.send("你定時(shí)的搶購(gòu)商品有貨啦,點(diǎn)擊立即購(gòu)買:\n{}".format(skuidUrl), toUserName=userName) flag += 1
這個(gè)搶購(gòu)信息我們需要在原來(lái)的url上截取skuid,然后進(jìn)行拼接:
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,830,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'
這樣我們的定時(shí)搶購(gòu)就完成啦!
最后,我們可以在訪問(wèn)的外面設(shè)置一個(gè)while死循環(huán),如果一直沒(méi)有貨就一直發(fā)送訪問(wèn)請(qǐng)求,如果OK,就跳出break!
附搶購(gòu)圖:
大家只需要點(diǎn)擊搶購(gòu)鏈接就能直接進(jìn)行購(gòu)買啦!
到此這篇關(guān)于python實(shí)現(xiàn)秒殺商品的微信自動(dòng)提醒功能的文章就介紹到這了,更多相關(guān)python微信自動(dòng)提醒內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python 70行代碼實(shí)現(xiàn)簡(jiǎn)單算式計(jì)算器解析
這篇文章主要介紹了Python 70行代碼實(shí)現(xiàn)簡(jiǎn)單算式計(jì)算器解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-08-08python對(duì)綁定事件的鼠標(biāo)、按鍵的判斷實(shí)例
今天小編就為大家分享一篇python對(duì)綁定事件的鼠標(biāo)、按鍵的判斷實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-07-07ndarray的轉(zhuǎn)置(numpy.transpose()與A.T命令對(duì)比分析)
這篇文章主要介紹了ndarray的轉(zhuǎn)置(numpy.transpose()與A.T命令對(duì)比分析),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-02-02Python實(shí)現(xiàn)批量向PDF文件添加中文水印
本文將通過(guò)設(shè)置批量PDF文件所在的路徑及需要添加的水印名稱,從而實(shí)現(xiàn)批量添加PDF水印的效果。感興趣的小伙伴可以跟隨小編一起動(dòng)手試一試2022-02-02Python練習(xí)之制作企業(yè)獎(jiǎng)金計(jì)算器
在本篇博客中,我們將使用Python代碼解決一個(gè)企業(yè)獎(jiǎng)金計(jì)算的問(wèn)題,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2023-06-06