環境:python3.7
瀏覽器:火狐
在python scripts文件夾下邊放入相應版本的geckodriver
本腳本只適用於可以提前把搶購商品加入購物車的場景
cmd頁面:
pip install selenium pip install datetime
事先需要把商品放入購物車,電腦時間和北京時間一致
from selenium import webdriver
import time
import datetime
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions
from selenium.webdriver.support.wait import WebDriverWait
webdriver = webdriver.Firefox()
webdriver.maximize_window()
webdriver.implicitly_wait(5)
def buy_on_time(buytime):
while True:
now = datetime.datetime.now()
title = webdriver.title()
if now.strftime('%Y-%m-%d %H:%M:%S') == buytime:
for i in range(1, 21): # 每隔0.2秒搶購一次,嘗試搶購20次
print(now.strftime('%Y-%m-%d %H:%M:%S'))
print("第%d次搶購" % i)
webdriver.find_element(By.CSS_SELECTOR,'.jdcheckbox').click() # 此處點擊的是在購物車頁面選中商品的按鈕
webdriver.find_element_by_link_text("去結算").click()
if (webdriver.title == title): # 如果檢測到title發生改變,即點擊成功,跳出循環
time.sleep(0.2)
else:
break
element = (By.LINK_TEXT,'提交訂單')
webdriver.execute_script('window.scrollTo(0, (document.body.scrollHeight)/2)') # 拉滾動軸到頁面一半的位置
WebDriverWait(webdriver,10).until(expected_conditions.element_to_be_clickable(element)) # 顯示等待
webdriver.find_element(*element).click()
print('purchase success')
quit()
time.sleep(0.5)
webdriver.get("https://cart.jd.com/cart?rd=0.9189005178170556") # 此為購物車網站
webdriver.find_element(By.CSS_SELECTOR,'.login-btn').click() # 一般需要登錄,此處點擊的是去登錄按鈕
time.sleep(10) # 為了避免輸入校驗碼繞過了輸入登錄賬戶密碼的步驟,此處打開的是二維碼頁面,請在10秒內用手機app掃描登錄,10秒覺得不夠可以改成20
buy_on_time("2019-04-11 18:08:00") # 開始搶購時間