淘宝购物车秒杀经过粉丝们的使用,还是有点问题,可能抢不到,或者其他之类的问题,不一定稳定的很,所以优化了一下,升级为2.0版本。
想要完成的部分
用户名密码自动登录,尝试了后,需要手动拖动滑块验证,但是淘宝验证会报错:
验证失败,点击框体重试(error:rn6Di)
,搁浅。提交订单后自动支付,直接使用
send_keys
似乎不行,最后使用了键盘模拟输入,可以支付,但是不稳定,因为支付宝会提醒支付环境不安全,暂时搁浅,有空再看。
优化后的代码
import time
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import datetime
# 启动浏览器的驱动器
driver = webdriver.Chrome()
# 最大化浏览器
driver.maximize_window()
# 设置定时抢购的时间,看网速如何,可以适当提前一秒或者正点
purchase_time = "2023-06-18 21:55:30"
# 打开淘宝
driver.get("https://www.taobao.com")
# 查找文本,登录
driver.find_element(By.LINK_TEXT, "亲,请登录").click()
print("请在30秒内完成扫码")
time.sleep(30)
now = datetime.datetime.now()
print('登录成功:', now.strftime('%Y-%m-%d %H:%M:%S'))
# 打开购物车
driver.get("https://cart.taobao.com/cart.htm")
# 等待购物车页面加载完成
WebDriverWait(driver, 30).until(EC.presence_of_element_located((By.ID, "J_SelectAll1")))
# 点击购物车里全选按钮
driver.find_element(By.ID, "J_SelectAll1").click()
# 设置定时抢购时间
target_time = time.mktime(time.strptime(purchase_time, "%Y-%m-%d %H:%M:%S"))
# 循环检查时间,直到达到目标时间
while True:
current_time = time.time()
if current_time >= target_time:
break
time.sleep(0.1)
# 点击结算按钮
driver.find_element(By.ID,"J_Go").click()
# 等待结算页面加载完成
WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.CLASS_NAME, "go-btn")))
# 点击提交订单按钮
driver.find_element(By.CLASS_NAME,"go-btn").click()
print("抢购成功时间:%s" % datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S.%f'))
# 关闭浏览器,然后在待支付中看订单支付
driver.quit()
Python | 淘宝秒杀脚本