目錄
前言
目的
思路
代碼實現(xiàn)
1. 自動打開瀏覽器,并配置選項
2. 實現(xiàn)掃碼登陸
3. 進入購物車選擇秒殺商品(本例勾選全選)
4. 獲取當前時間,大于設定時間時下單
5. 下單成功后語音提示用戶返回付款?
完整源碼
運行效果
總結
前言
每到購物節(jié),某寶某東等購物平臺就會有層出不窮的秒殺活動,但我們總會由于手速、網(wǎng)速等原因搶不到自己需要的低價商品,很是苦惱。這個時候我們的Python自動化腳本工具又可以登場了:利用selenium工具設計自動搶購系統(tǒng),到點自助下單就可以咯~?
本節(jié)以某寶為例,給大家做一個簡要的演示。
目的
編寫一個自動搶購程序,要求能設定一個時間和目標商品(提前加入購物車中),使用自動化工具持續(xù)監(jiān)測當前時間,一旦到設定時間,自動下單某寶設定好的商品并提交,搶占商品。
思路
1. 實現(xiàn)自動打開瀏覽器,進入登錄界面。
2. 掃碼登陸/賬號密碼登錄(賬號密碼登錄的方式我在之前12306自動購票系統(tǒng)講解過,想修改為賬號密碼登錄的同學可以去這篇文章查看:28. 實戰(zhàn):基于selenium實現(xiàn)12306自動購票),本節(jié)我們?yōu)榱朔奖悖梢圆惠旘炞C碼或者修改賬號密碼),就使用掃碼登陸,簡單粗暴。
3. 登陸以后進入購物車,選中需要商品的勾,等待下單(本例直接全選購物車)。
4. 當當前時間大于剩余時間,結算訂單。
5. 語音提示下單完成,讓用戶盡快付款。
代碼實現(xiàn)
要用到的庫:
datetime;time;selenium;pypiwin32
不知道怎么安裝selenium的同學移步:selenium簡介
1. 自動打開瀏覽器,并配置選項
首先導包:
# 導入自動化檢測工具
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.by import By
然后對瀏覽器進行設置:
opt.add_argument('--disable-blink-features=AutomationControlled')
opt.add_experimental_option('detach', True)
opt.add_argument('--start-maximized') # 瀏覽器窗口最大
browser = webdriver.Chrome(options=opt)
設置當網(wǎng)頁檢測當前瀏覽器時不會返回selenium自動工具;
設置程序執(zhí)行完畢以后瀏覽器不自動關閉;
設置默認瀏覽器全屏;
進入某寶網(wǎng)站:
browser.get("https://鏈接放評論區(qū).com")
2. 實現(xiàn)掃碼登陸
如果想要實現(xiàn)賬號密碼加驗證碼登陸的同學參考我之前的這兩篇文章哈:(?簡單的驗證碼實戰(zhàn)基于selenium實現(xiàn)12306自動購票)!??!
掃碼登陸功能:
time.sleep(3) # 查找 網(wǎng)絡元素 來自 鏈接 文本(親,請登錄) # 點擊
browser.find_element(By.LINK_TEXT, "親,請登錄").click()
print(f"請盡快掃碼登錄")
time.sleep(10)
因為我們自動化測試工具打開瀏覽器以后并不會記錄用戶Cookie,你可以認為是剛剛下載的一個新瀏覽器,沒有任何痕跡,所以就算我們之前在谷歌瀏覽器登陸過某寶也不會默認自動登陸的。
我們首頁上可以找到“親,請登錄”的字樣,我們就可以根據(jù)鏈接提示文本定位到登錄選項,進入登陸界面,然后等待十秒進行掃碼登陸。
3. 進入購物車選擇秒殺商品(本例勾選全選)
browser.get("https://購物車鏈接放評論區(qū)")
time.sleep(3)
# 是否全選購物車
while True:
try: # 查找 元素 來自 ID
if browser.find_element(By.ID, "J_SelectAll1"):
browser.find_element(By.ID, "J_SelectAll1").click()
break
except:
print(f"找不到購買按鈕")
當能夠找到全選框的時候點擊選擇,否則提示找不到購買按鈕,程序結束。
4. 獲取當前時間,大于設定時間時下單
while True:
# 獲取電腦現(xiàn)在的時間, year month day
now = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S.%f')
# 對比時間,時間到的話就點擊結算
print(now)
if now > set_time:
# 點擊結算按鈕
while True:
try:
if browser.find_element(By.LINK_TEXT, "結 算"):
print("here")
browser.find_element(By.LINK_TEXT, "結 算").click()
print(f"主人,程序鎖定商品,結算成功")
break
except:
pass
導入datetime庫,獲取當前時間,設置格式為年-月-日 小時:分鐘:秒.毫秒
實時監(jiān)測當前時間,如果大于了設定時間,就開始檢測結算按鈕。
如果檢測到了結算按鈕,則點擊,否則繼續(xù)循環(huán),直到檢測到結算按鈕為止。
5. 下單成功后語音提示用戶返回付款?
while True:
try:
if browser.find_element(By.LINK_TEXT, '提交訂單'):
browser.find_element(By.LINK_TEXT, '提交訂單').click()
print(f"搶購成功,請盡快付款")
except:
print(f"主人,結算提交成功,我已幫你搶到商品啦,請及時支付訂單")
speaker.Speak(f"主人,結算提交成功,我已幫你搶到商品啦,請及時支付訂單")
break
time.sleep(0.01)
這也是一個死循環(huán),檢測提交訂單按鈕,如果檢測到就點擊,并且返回信息,搶購成功;
如果沒有檢測到,說明已經(jīng)跳轉了支付界面,返回結算成功信息,并且語音播報已搶到商品,提醒用戶盡快支付該訂單。
涉及到語音播報庫,要用到pypiwin32這個庫,直接pip install就可以了:
完整源碼
# Created at UESTC
# Author: Vector Kun
# Time: 2023/3/4 14:49
import datetime # 模塊
now = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S.%f')
import time
# 導入自動化檢測工具
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.by import By
import win32com.client
speaker = win32com.client.Dispatch("SAPI.SpVoice")
set_time = "2023-03-04 15:29:00.00000000"
opt = Options()
# option.add_experimental_option('excludeSwitches', ['enable-automation'])
opt.add_argument('--disable-blink-features=AutomationControlled')
opt.add_experimental_option('detach', True)
opt.add_argument('--start-maximized') # 瀏覽器窗口最大
browser = webdriver.Chrome(options=opt)
browser.get("見評論區(qū)")
time.sleep(3) # 查找 網(wǎng)絡元素 來自 鏈接 文本(親,請登錄) # 點擊
browser.find_element(By.LINK_TEXT, "親,請登錄").click()
print(f"請盡快掃碼登錄")
time.sleep(10)
browser.get("見評論區(qū)")
time.sleep(3)
# 是否全選購物車
while True:
try: # 查找 元素 來自 ID
if browser.find_element(By.ID, "J_SelectAll1"):
browser.find_element(By.ID, "J_SelectAll1").click()
break
except:
print(f"找不到購買按鈕")
while True:
# 獲取電腦現(xiàn)在的時間, year month day
now = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S.%f')
# 對比時間,時間到的話就點擊結算
print(now)
if now > set_time:
# 點擊結算按鈕
while True:
try:
if browser.find_element(By.LINK_TEXT, "結 算"):
print("here")
browser.find_element(By.LINK_TEXT, "結 算").click()
print(f"主人,程序鎖定商品,結算成功")
break
except:
pass
while True:
try:
if browser.find_element(By.LINK_TEXT, '提交訂單'):
browser.find_element(By.LINK_TEXT, '提交訂單').click()
print(f"搶購成功,請盡快付款")
except:
print(f"主人,結算提交成功,我已幫你搶到商品啦,請及時支付訂單")
speaker.Speak(f"主人,結算提交成功,我已幫你搶到商品啦,請及時支付訂單")
break
time.sleep(0.01)
運行效果
?
總結
本節(jié)我們使用老朋友selenium進行了一系列的操作,實現(xiàn)了某寶秒殺商品的購買,還是很有實用價值的,很適合新手小白練手。文章來源:http://www.zghlxwxcb.cn/news/detail-682837.html
有什么配置問題或者其他技術問題,又或者是建議等都可以評論或者私信我哦~每一條都會回復的。文章來源地址http://www.zghlxwxcb.cn/news/detail-682837.html
到了這里,關于38. 實戰(zhàn):基于selenium的某寶秒殺搶購系統(tǒng)(附完整代碼)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!