用 Selenium 写一个淘宝购物车定时结算脚本
大促时手动盯着页面点结算,最烦的其实不是慢,而是不确定。页面加载慢、按钮位置变、登录态过期,任意一个都能把节奏打断。Selenium 适合做这类浏览器自动化:流程简单,能直接复用真实浏览器环境,代价是脆一点,页面结构一变就得跟着调。
说明:下面的内容只适合学习浏览器自动化技术,不建议拿去做违反平台规则的事情。
环境准备
先把基础环境搭好,别急着写脚本。Selenium 对浏览器和驱动版本比较敏感,版本对不上,后面排查起来会很磨人。
1. 安装 Python
确认本机装的是 Python 3.6 及以上版本:
python --version
2. 安装依赖库
直接装 Selenium:
pip install selenium
3. 配置 ChromeDriver
Selenium 需要和浏览器驱动配合工作。先下载与本地 Chrome 版本匹配的 ChromeDriver,再把路径加入系统环境变量,或者在代码里显式指定 driver 路径。前者省事,后者更直观,调试时我一般更偏向后者。
脚本思路
这个脚本的流程不复杂,核心就是把人工点页面的动作拆开:先打开浏览器,完成登录,再进购物车全选商品,最后卡着目标时间点结算。
几个关键点:
- 初始化 WebDriver,启动浏览器实例
- 用 ID、Link Text 之类的方式定位按钮和输入框
- 用显式等待兜住页面加载,不要全靠
time.sleep - 根据系统时间和目标时间做比对,到点后触发点击
- 把常见异常接住,至少别让脚本直接崩掉
代码实现
import datetime
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
def init_driver():
"""初始化浏览器驱动"""
options = webdriver.ChromeOptions()
# options.add_argument('--headless') # 如需后台运行可开启
driver = webdriver.Chrome(options=options)
return driver
def login(driver):
"""模拟扫码登录"""
driver.get("https://www.taobao.com")
()
:
login_link = WebDriverWait(driver, ).until(
EC.element_to_be_clickable((By.LINK_TEXT, ))
)
login_link.click()
()
time.sleep()
Exception e:
()
():
driver.get()
()
:
select_all_btn = WebDriverWait(driver, ).until(
EC.presence_of_element_located((By.ID, ))
)
select_all_btn.click()
()
Exception e:
()
():
target_time = datetime.datetime.strptime(target_time_str, )
()
:
now = datetime.datetime.now()
now >= target_time:
()
:
settle_btn = WebDriverWait(driver, ).until(
EC.element_to_be_clickable((By.LINK_TEXT, ))
)
settle_btn.click()
()
submit_btn = WebDriverWait(driver, ).until(
EC.element_to_be_clickable((By.LINK_TEXT, ))
)
submit_btn.click()
()
Exception e:
()
:
remaining = (target_time - now).total_seconds()
()
time.sleep()
():
driver = init_driver()
:
login(driver)
select_cart(driver)
checkout(, driver)
:
driver.quit()
__name__ == :
main()


