使用Python實(shí)現(xiàn)毫秒級(jí)搶單功能
0 引言
年中購(gòu)物618大狂歡開(kāi)始了,各大電商又開(kāi)始了大力度的折扣促銷(xiāo),我們的小胖又給大家謀了一波福利,淘寶APP直接搜索:小胖發(fā)福利,每天領(lǐng)取三次粉絲專(zhuān)屬現(xiàn)金大紅包。
有了現(xiàn)金大紅包,如何做到更省錢(qián)的剁手呢?今天給大家提供一種思路,用Python實(shí)現(xiàn)秒殺訂單,借用自動(dòng)化方式完成最優(yōu)解。
1 環(huán)境
操作系統(tǒng):Windows
Python版本:3.7.2
2 需求分析&前期準(zhǔn)備
2.0 需求分析
我們的目標(biāo)是秒殺淘寶的訂單,這里面有幾個(gè)關(guān)鍵點(diǎn),首先需要登錄淘寶,其次你需要準(zhǔn)備好訂單,最后要在指定時(shí)間快速提交訂單。
登錄淘寶,這里就要用到一個(gè)爬蟲(chóng)利器Selenium,它是一個(gè)自動(dòng)化測(cè)試工具,利用它我們可以驅(qū)動(dòng)瀏覽器執(zhí)行特定的動(dòng)作,如點(diǎn)擊、下拉等等操作,所見(jiàn)即所得。另外對(duì)于一些 JavaScript 渲染的頁(yè)面來(lái)說(shuō),此種抓取方式非常有效。
2.1 Selenium的安裝
Selenium 的安裝很簡(jiǎn)單,可采用如下方式。
pip install selenium
Selenium安裝好之后,并不能直接使用,它需要與瀏覽器進(jìn)行對(duì)接。這里拿Chrome瀏覽器為例。若想使用Selenium成功調(diào)用Chrome瀏覽器完成相應(yīng)的操作,需要通過(guò)ChromeDriver來(lái)驅(qū)動(dòng)。
2.2 ChromeDriver的安裝
這里是ChromeDriver的官方下載地址。
鏈接:
https://chromedriver.storage.googleapis.com/index.html
我們?cè)谙螺d之前先來(lái)確認(rèn)下我們使用的Chrome瀏覽器版本。

通過(guò)ChromeDriver的下載鏈接,找到與之對(duì)應(yīng)的Chrome瀏覽器版本,根據(jù)你電腦系統(tǒng)的平臺(tái)類(lèi)型進(jìn)行下載。

下載完成之后,解壓,將其放置在Python安裝路徑下Scripts文件夾中即可

上述操作結(jié)束后,我們執(zhí)行如下命令,測(cè)試一下
from selenium import webdriver # 打開(kāi)Chrome瀏覽器 browser = webdriver.Chrome()
代碼執(zhí)行后,若成功打開(kāi)了瀏覽器,則證明你的ChromeDriver安裝的沒(méi)問(wèn)題,可以正常愉快地使用Selenium了。
接下來(lái),我們先來(lái)回顧下淘寶購(gòu)物流程。
3 淘寶購(gòu)物流程回顧
3.1 首先要打開(kāi)淘寶網(wǎng)站
換作使用Seleuinm方式,代碼如下:
3.2 我們登錄淘寶才能進(jìn)行下一步操作
換成Seleuinm方式,代碼:
browser.find_element_by_link_text("親,請(qǐng)登錄").click()
這時(shí)我們就要就跳到了一個(gè)掃碼登錄的頁(yè)面,我們用手機(jī)進(jìn)行掃碼,登錄成功之后進(jìn)行下一步。
3.3 登錄成功之后,我們來(lái)打開(kāi)購(gòu)物車(chē),鏈接如下:
https://cart.taobao.com/cart.htm
換成Seleuinm方式,代碼:
3.4 我們想要全選購(gòu)物車(chē)中的商品,直接點(diǎn)擊全選即可

換成Seleuinm方式,代碼:
browser.find_element_by_id("J_SelectAll1").click()
注:若你的購(gòu)物車(chē)商品比較多,又不想全選購(gòu)買(mǎi),那就 手動(dòng) 勾選想要下單的商品。
3.5 勾選好商品后就可以“結(jié)算”下單

換成Seleuinm方式,代碼即:
browser.find_element_by_link_text("結(jié) 算").click()
3.6 等待提交完訂單后才算數(shù)

換成Seleuinm方式,代碼即:
browser.find_element_by_link_text('提交訂單').click()
3.7 訂單成功秒下之后,接下來(lái)的付款,慢慢來(lái)就好。

4 秒殺的實(shí)現(xiàn)
秒殺的實(shí)現(xiàn),思路也很簡(jiǎn)單。這里有兩個(gè)時(shí)間點(diǎn),一是搶購(gòu)時(shí)間,一是當(dāng)前時(shí)間。只需要比較這兩個(gè)時(shí)間點(diǎn),到了搶購(gòu)時(shí)間立即下單即可。
記錄時(shí)間,需要使用datetime這個(gè)內(nèi)置模塊,代碼如下:
import datetime
now = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S.%f')
5 代碼梳理
首先得登錄淘寶,這里我們定義一個(gè)login函數(shù)
def login():
# 打開(kāi)淘寶首頁(yè),通過(guò)掃碼登錄
browser.get("https://www.taobao.com")
time.sleep(3)
if browser.find_element_by_link_text("親,請(qǐng)登錄"):
browser.find_element_by_link_text("親,請(qǐng)登錄").click()
print(f"請(qǐng)盡快掃碼登錄")
time.sleep(10)
接下來(lái)就是勾選購(gòu)物車(chē)中的商品,這里我們定義一個(gè)picking函數(shù)
def picking(method):
# 打開(kāi)購(gòu)物車(chē)列表頁(yè)面
browser.get("https://cart.taobao.com/cart.htm")
time.sleep(3)
# 是否全選購(gòu)物車(chē)
if method == 0:
while True:
try:
if browser.find_element_by_id("J_SelectAll1"):
browser.find_element_by_id("J_SelectAll1").click()
break
except:
print(f"找不到購(gòu)買(mǎi)按鈕")
else:
print(f"請(qǐng)手動(dòng)勾選需要購(gòu)買(mǎi)的商品")
time.sleep(5)
等待搶購(gòu)時(shí)間,定時(shí)秒殺,這里我們定義一個(gè)buy函數(shù)
def buy(times):
while True:
now = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S.%f')
# 對(duì)比時(shí)間,時(shí)間到的話就點(diǎn)擊結(jié)算
if now > times:
# 點(diǎn)擊結(jié)算按鈕
while True:
try:
if browser.find_element_by_link_text("結(jié) 算"):
browser.find_element_by_link_text("結(jié) 算").click()
print(f"結(jié)算成功,準(zhǔn)備提交訂單")
break
except:
pass
# 點(diǎn)擊提交訂單按鈕
while True:
try:
if browser.find_element_by_link_text('提交訂單'):
browser.find_element_by_link_text('提交訂單').click()
print(f"搶購(gòu)成功,請(qǐng)盡快付款")
except:
print(f"再次嘗試提交訂單")
time.sleep(0.01)
6 總結(jié)
短短幾十行代碼就能秒殺淘寶訂單,趕緊行動(dòng)起來(lái)吧!記著,每天在淘寶上搜索小胖發(fā)福利,領(lǐng)取粉專(zhuān)屬福利喲~
以上就是使用Python實(shí)現(xiàn)毫秒級(jí)搶單功能的詳細(xì)內(nèi)容,更多關(guān)于python毫秒級(jí)搶單的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
python使用jieba實(shí)現(xiàn)中文分詞去停用詞方法示例
jieba分詞,完全開(kāi)源,有集成的python庫(kù),簡(jiǎn)單易用。下面這篇文章主要給大家介紹了關(guān)于python使用jieba實(shí)現(xiàn)中文分詞去停用詞的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面來(lái)一起看看吧。2018-03-03
詳解Python?itertools模塊中starmap函數(shù)的應(yīng)用
starmap是一個(gè)非常有用的函數(shù),它屬于itertools模塊中的一部分,本文將詳細(xì)介紹starmap函數(shù)的作用、用法以及實(shí)際應(yīng)用場(chǎng)景,希望對(duì)大家有所幫助2024-03-03
Python實(shí)現(xiàn)判斷給定列表是否有重復(fù)元素的方法
這篇文章主要介紹了Python實(shí)現(xiàn)判斷給定列表是否有重復(fù)元素的方法,列舉了2種列表判斷方法,涉及Python針對(duì)列表的遍歷、統(tǒng)計(jì)、判斷等相關(guān)操作技巧,需要的朋友可以參考下2018-04-04
使用Python實(shí)現(xiàn)下載網(wǎng)易云音樂(lè)的高清MV
本文給大家分享的是一則使用Python實(shí)現(xiàn)下載網(wǎng)易云音樂(lè)中高清MV的代碼,本人新手,沒(méi)有做特別的功能,僅僅是直接循環(huán)了MV的id,小伙伴們可以自己擴(kuò)展下。2015-03-03
Python 拷貝對(duì)象(深拷貝deepcopy與淺拷貝copy)
Python中的對(duì)象之間賦值時(shí)是按引用傳遞的,如果需要拷貝對(duì)象,需要使用標(biāo)準(zhǔn)庫(kù)中的copy模塊。2008-09-09
安裝python3.7編譯器后如何正確安裝opnecv的方法詳解
這篇文章主要介紹了安裝python3.7編譯器后如何正確安裝opnecv,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-06-06

