背景
使用Selenium WebDriver自动执行淘宝秒杀操作,并在特定时间进行结算
项目开始
设置
下载相应的Microsoft Edge WebDriver,然后将其直接拉到python的同一位置
下载地址:Microsoft Edge WebDriver | Microsoft Edge Developer分析
-
导入所需的库:
time
:用于时间相关操作。datetime
:用于处理日期和时间。webdriver
:Selenium的核心库,用于模拟浏览器操作。By
:Selenium的定位元素方法。win32com.client
:用于调用Windows系统的语音功能。WebDriverWait
:Selenium的等待方法。expected_conditions
:Selenium的预期条件。
-
创建一个Windows系统语音功能的实例,用于将文字转换成语音。
-
设置秒杀开始时间为 '2024-06-01 17:18:00'。
-
初始化一个Edge浏览器的WebDriver实例。
-
打开淘宝网站并等待10秒。
-
执行登录操作,通过定位登录按钮并点击。
-
最大化浏览器窗口。
-
进入购物车页面并等待3秒。
-
全选购物车中的商品,通过定位全选按钮并点击。
-
进入一个无限循环,不断检查当前时间是否已经超过设定的秒杀开始时间。
- 获取当前时间并打印出来。
- 如果当前时间超过设定的秒杀开始时间,则点击结算按钮并跳出循环。
-
使用WebDriverWait等待页面中的一个元素(通过类名 'go-btn' 定位),最长等待时间为20秒。
-
一旦元素出现,点击该元素。
-
最后,使用语音功能提示用户结算提交成功,并提醒用户已经帮忙抢到商品,需要尽快支付订单。
python代码
import time
import datetime
from selenium import webdriver
from selenium.webdriver.common.by import By
import win32com.client
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as ec
# 调用windows系统语音功能,可以将文字转成语音!
speaker = win32com.client.Dispatch("SAPI.SpVoice")
# 秒杀开始时间
times = '2024-06-01 17:18:00'
# 初始化webdriver
driver = webdriver.Edge()
driver.get("https://taobao.com")
time.sleep(10)
# 登录操作
driver.find_element(By.XPATH, '//*[@id="J_SiteNavLogin"]/div[1]/div[1]/a[1]').click()
# 最大化浏览器窗口
driver.maximize_window()
time.sleep(3)
# 进入购物车页面
driver.get("https://cart.taobao.com/cart.htm")
time.sleep(3)
# 全选购物车中的商品
driver.find_element(By.ID, "J_SelectAll1").click()
# 循环等待秒杀时间
while True:
now = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S.%f")
print(now)
if now > times:
# 点击结算按钮
driver.find_element(By.XPATH, '//*[@id="J_Go"]/span').click()
# 语音提示
# speaker.Speak("秒杀开始时间到了,请注意操作")
break
wait = WebDriverWait(driver, 20)
element = wait.until(ec.presence_of_element_located(
(By.CLASS_NAME, "go-btn")))
element.click()
speaker.Speak(f"主人,结算提交成功,我已帮你抢到商品啦,请即使支付订单")