每逢秒杀,都在遗憾网速和手速慢没能抢购到商品吧。
手写一个脚本,让程序帮你抢,抢到的概率会大大提升。
废话不多说,直接上代码。
本实例以华为官网抢购手机为例
"""(1) 安装 chromedriver a. 去官网 (http://chromedriver.storage.googleapis.com/index.html) 下载对应版本的driverb. 解压后将exe文件放入本地谷歌浏览器的安装目录 例如: C:\Program Files\Google\Chrome\Applicationc. 配置将谷歌安装目录配置到系统环境变量的Path中(2) 安装python(3) 安装 selenium 指令: pip install selenium(4) 打开此文件, 修改 账号参数: userName, password 手机抢购页面链接参数: phonePageUrl 抢购时间参数: buyTimeStr(5) 设置号华为官网的收货地址"""from selenium import webdriverfrom selenium.webdriver.common import byimport timeimport redriver = webdriver.Chrome()elementBy = by.By()# 账号userName = "134******38"password = "l***6"# 首页indexUrl = "https://www.vmall.com/index.html"# 想要抢购的手机页面phonePageUrl = "https://www.vmall.com/product/10086213682650.html#2601010448909"# 提交订单urlsubmitOrderUrl = "/order/nowConfirmcart"buyTimeStr = "2023-07-13 20:00:00"'''模拟浏览器操作华为官网@author acheng@date 2022/10/20 '''def main(): # 先登录 login() # 指定时间, 未到时间则阻塞 curTime = time.time() buyTime = time.mktime(time.strptime(buyTimeStr,"%Y-%m-%d %H:%M:%S")) while curTime < buyTime : print("当前时间戳:{}, 抢购时间戳:{}".format(curTime,buyTime) , end="\n") time.sleep(10) curTime = time.time() # 抢购 buy()def login(): print("登录") driver.get(indexUrl) time.sleep(5) # pc网页 indexLoginBns = driver.find_elements(elementBy.CLASS_NAME, "r-gy4na3") if not indexLoginBns: for bn in indexLoginBns: if bn.text == "请登录": bn.click() break else : # 移动网页 indexLoginBns = driver.find_elements(elementBy.CLASS_NAME,"r-1ff274t") for bn in indexLoginBns: if bn.text == "登录": bn.click() break time.sleep(5) loginElements = driver.find_elements(elementBy.CSS_SELECTOR, ".hwid-input-root") for e in loginElements: inputele = e.find_element(elementBy.TAG_NAME, "input") attr = inputele.get_attribute("type") if attr == "text": inputele.send_keys(userName) elif attr == "password": inputele.send_keys(password) loginBtnElement = driver.find_element(elementBy.CSS_SELECTOR, ".hwid-login-btn") loginBtnElement.click() #需要手机验证码 # 此处手动完成验证码验证 预留一分钟 time.sleep(60) print("登录成功")def buy(): driver.get(phonePageUrl) time.sleep(5) print("打开指定手机 --> 准备抢购") driver.refresh() time.sleep(5) buyBtns = driver.find_elements(elementBy.CLASS_NAME, "product-button02") cur_url = driver.current_url canBuy = False if buyBtns is None: print("无法获取下单按钮") return time.sleep(2) # 如果没有进入提交订单页面则一直点击立即下单 buyCountNum = 1 while not re.search(submitOrderUrl, cur_url) and not canBuy : for buybn in buyBtns: if buybn.find_element(elementBy.TAG_NAME, "span").text == "立即下单" : # 此元素被设置了javascript:; , 所以click()无法触发,只能通过执行execute_script执行网页js方法 driver.execute_script('ec.product.orderNow(null,null,this)') # buybn.click() canBuy = True print("点击下单按钮次数: ".format(buyCountNum)) buyCountNum += buyCountNum break if canBuy == True : # 预留时间选地址 time.sleep(15) submitBtn = driver.find_element(elementBy.CLASS_NAME,"order-submit-btn") if submitBtn is None: print("无法提交订单") else : submitBtn.click() # 运行主函数main()
来源地址:https://blog.csdn.net/qq_17552823/article/details/131717587