“一戶(hù)一墩”,手把手教你用Python搶冰墩墩

大家好,我是老表~
最近幾天冰墩墩超級(jí)火,火到什么程度呢?朋友圈天天都是冰墩墩可愛(ài)照片,公眾號(hào)都是教編程畫(huà)冰墩墩的,視頻號(hào)都是冬奧視頻,到處冰墩墩,最直接的體現(xiàn)還得數(shù):各大電商平臺(tái)根本搶不到冰墩墩周邊玩偶。
上Github搜索:冰墩墩,還有各式各樣教你畫(huà)冰墩墩的源碼。
個(gè)人做喜歡的還是明佬在群內(nèi)分享的3d版本,簡(jiǎn)單明了、可愛(ài)高端,想要源碼和運(yùn)行方法的可以在公眾號(hào)「簡(jiǎn)說(shuō)Python」回復(fù):冰墩墩 。
不過(guò),畫(huà)的再好也比不過(guò)真實(shí)的,所以,本文將給大家分享另一個(gè)開(kāi)源項(xiàng)目:淘寶搶購(gòu)腳本,項(xiàng)目作者Charles也在自己公眾號(hào)分享了項(xiàng)目代碼介紹文章:聽(tīng)說(shuō)最近冰墩墩很火?那就帶大家寫(xiě)個(gè)搶購(gòu)腳本吧!
項(xiàng)目代碼地址:https://github.com/CharlesPikachu/DecryptLogin/blob/master/examples/taobaosnap/taobaosnap.py
如果無(wú)法正常訪(fǎng)問(wèn)github,可以在公眾號(hào)「簡(jiǎn)說(shuō)Python」回復(fù):冰墩墩 獲取源碼云盤(pán)下載地址。
本文主要手把手教大家如何把這個(gè)腳本跑起來(lái)~感謝開(kāi)源本項(xiàng)目的作者Charles,這里也說(shuō)下,這個(gè)作者開(kāi)源的庫(kù)DecryptLogin超級(jí)優(yōu)秀,可以用來(lái)模擬登錄一些常用的網(wǎng)站,之后我們就可以方便的利用代碼實(shí)現(xiàn)自動(dòng)化操作、爬蟲(chóng),或者像今天要分享的搶購(gòu)腳本(下回再給大家分享如何使用~)。
1、準(zhǔn)備環(huán)境
1.1 基礎(chǔ)環(huán)境-Python
首先需要你的電腦安裝好了Python環(huán)境,并且安裝好了Python開(kāi)發(fā)工具。
如果你還沒(méi)有安裝,可以參考以下文章:
如果僅用Python來(lái)處理數(shù)據(jù)、爬蟲(chóng)、數(shù)據(jù)分析或者自動(dòng)化腳本、機(jī)器學(xué)習(xí)等,建議使用Python基礎(chǔ)環(huán)境+jupyter即可,安裝使用參考Windows/Mac 安裝、使用Python環(huán)境+jupyter notebook
如果想利用Python進(jìn)行web項(xiàng)目開(kāi)發(fā)等,建議使用Python基礎(chǔ)環(huán)境+Pycharm,安裝使用參考 :Windows下安裝、使用Pycharm教程,這下全了 和 Mac下玩轉(zhuǎn)Python-安裝&使用Python/PyCharm 。
我本地用的Python 3.10.0,然后使用pipenv管理虛擬環(huán)境,關(guān)于pipenv的使用大家可以看我用Pipenv來(lái)管理項(xiàng)目環(huán)境,大寫(xiě)的爽。
1.2 創(chuàng)建虛擬環(huán)境,安裝項(xiàng)目依賴(lài)
打開(kāi)終端/CMD后,按下面指令,一行一行執(zhí)行:
進(jìn)入項(xiàng)目目錄 /Users/xks/Desktop/Project/crawler,創(chuàng)建一個(gè)新項(xiàng)目目錄bdd_tb,然后進(jìn)入bdd項(xiàng)目目錄,新建一個(gè).venv文件夾,后面存放虛擬環(huán)境。
cd?/Users/xks/Desktop/Project/crawler?&&?mkdir?bdd_tb
cd?bdd_tb?&&?mkdir?.venv
輸入下面指令,即可創(chuàng)建一個(gè)虛擬環(huán)境,虛擬環(huán)境相關(guān)文件默認(rèn)會(huì)存放到 .venv文件夾中,創(chuàng)建好后,建議修改下Pipfile中的pip下載源,具體操作看Pipenv管理項(xiàng)目虛擬環(huán)境教程。
pipenv?install
輸入下面指令,首先進(jìn)入虛擬環(huán)境,然后安裝第三方依賴(lài)包。
pipenv?shell
pipenv?install?pyttsx3?DecryptLogin?requests?prettytable
注意啦,這個(gè)終端/CMD先不要關(guān),下載好代碼后繼續(xù)在這里運(yùn)行代碼。
2、獲取項(xiàng)目代碼
可以在公眾號(hào)「簡(jiǎn)說(shuō)Python」回復(fù):冰墩墩 獲取源碼云盤(pán)下載地址,注意,將下載好的源碼文件放入到項(xiàng)目文件夾bdd_tb中。
bdd_tb
├──?.venv??#?虛擬環(huán)境存放目錄
├──?Pipfile???#?虛擬環(huán)境配置文件
├──?Pipfile.lock??#?虛擬環(huán)境配置文件
├──?bdd_tb.py??#?項(xiàng)目代碼文件
└──?cookie_cache.pkl??#?運(yùn)行項(xiàng)目后,會(huì)先要求掃碼登錄淘寶,登錄后會(huì)自動(dòng)生成
3、簡(jiǎn)單看下源碼
整個(gè)代碼主要分為3部分(不包括前面導(dǎo)包部分):?jiǎn)?dòng)命令行參數(shù)解析、淘寶搶購(gòu)腳本、運(yùn)行。
啟動(dòng)命令行參數(shù)解析
我們可以看到,作者主要提供了兩個(gè)參數(shù)interval(搶購(gòu)商品時(shí)查詢(xún)商品是否可以購(gòu)買(mǎi)的時(shí)間間隔),key(Server醬的key,一種微信消息提醒服務(wù))。
其中interval是項(xiàng)目運(yùn)行時(shí)必須指定的參數(shù),理論上interval值越小越好,但是太小,單位時(shí)間內(nèi)請(qǐng)求次數(shù)過(guò)多,也有被封的風(fēng)險(xiǎn),所以最好的方法是,等到預(yù)售開(kāi)始前1分鐘(或者半分鐘)去啟動(dòng)程序,interval設(shè)置到一個(gè)自己覺(jué)得ok的值,注意單位是秒。
淘寶搶購(gòu)腳本
作者全部寫(xiě)在TaobaoSnap類(lèi)中,主要包含了整個(gè)搶購(gòu)流程和邏輯實(shí)現(xiàn),包括:登錄、選擇搶購(gòu)商品、搶購(gòu)等功能實(shí)現(xiàn)。
4、運(yùn)行項(xiàng)目
必要條件: 運(yùn)行項(xiàng)目前,你需要將想搶購(gòu)的商品加入到自己的購(gòu)物車(chē)中(購(gòu)物車(chē)中不要有太多商品)。
打開(kāi)終端/CMD,進(jìn)入項(xiàng)目目錄,然后進(jìn)入虛擬環(huán)境。
cd?/Users/xks/Desktop/Project/crawler/bdd_tb
pipenv?shell
在虛擬環(huán)境下,輸入下面代碼運(yùn)行項(xiàng)目,我指定的interval為2s(我大概是預(yù)售前20s左右啟動(dòng)的程序):
python?bdd_tb.py?--interval?2
啟動(dòng)成功后,會(huì)彈出一個(gè)二維碼,利用手機(jī)淘寶掃碼登錄即可,登錄成功后,會(huì)在終端/CMD中打印出你的購(gòu)物車(chē)商品名稱(chēng)列表,輸入你要搶購(gòu)商品對(duì)應(yīng)的id即可開(kāi)啟搶購(gòu),如下圖所示。
搶購(gòu)成功后,會(huì)輸入內(nèi)容提示,作者還設(shè)置了電腦語(yǔ)音提示,非常貼心了~
5、最后聊聊
看了上面的運(yùn)行截圖,你可能會(huì)問(wèn)我:你搶到冰墩墩了嗎?沒(méi)有。
確實(shí)運(yùn)行輸出和語(yǔ)音都有提示我:搶購(gòu)成功,已提交訂單;但是我前往淘寶的時(shí)候,代付款中卻沒(méi)有。
代碼應(yīng)該沒(méi)問(wèn)題(測(cè)試過(guò)其他商品),感覺(jué)是官方設(shè)置的:訂單為付款減庫(kù)存,下單不占庫(kù)存引起的,我打開(kāi)淘寶準(zhǔn)備付款的時(shí)候,已經(jīng)有2000個(gè)人在我之前付款了,所以沒(méi)有庫(kù)存 自然也就不會(huì)出現(xiàn)在待付款中了。
目前比較好的方法就是:在開(kāi)啟搶購(gòu)的同時(shí)自己打開(kāi)待付款,不停刷新,代碼下單后,可以及時(shí)人工進(jìn)行付款。或者后面研究下,能不能加個(gè)自動(dòng)付款的~
歡迎大家在評(píng)論區(qū)交流自己的想法,碼字不易,歡迎點(diǎn)贊 在看 轉(zhuǎn)發(fā) 留言支持。
再次感謝Charles開(kāi)源本項(xiàng)目,“本項(xiàng)目?jī)H供Python愛(ài)好者學(xué)習(xí)使用,若作者發(fā)現(xiàn)該項(xiàng)目以任何不正當(dāng)方式被使用,將立即刪除該項(xiàng)目”。
堅(jiān)持 and 努力 :終有所獲。
好的,那么下期見(jiàn),我是愛(ài)貓愛(ài)技術(shù),更愛(ài)思思的老表???( ˙?˙ )???
近期閱讀學(xué)習(xí)推薦:
用Python搞了個(gè)基金查詢(xún)機(jī)器人,還可以拓展!
推薦10個(gè)好用到爆的Jupyter Notebook插件
Python批量處理Excel數(shù)據(jù)后,導(dǎo)入SQL Server
如何找到我:






