环境: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") # 开始抢购时间