双十一0点抢购python脚本测试
该脚本适合商品的双十一秒杀活动,具体实现方式如下:
在双十一0点之前提前运行脚本,打开网页,登录(经测试手动打开网页输入用户名和密码后不需要进行滑块验证,使用脚本打开网页每次都需要进行滑块验证,暂时没有找到啥原因,所以改为等待10s,手动扫描二维码登录),滚动页面找到需要操作的元素,勾选尺码,颜色等信息。启动监听器,设置监听时间间隔和监听持续时间,等时间到达0点时,点击立即购买,提交订单。
# -*-coding:utf-8 -*-
from selenium import webdriver
import time
import pyautogui as pag
import datetime
from retry import retry
import logging
logging.basicConfig()
@retry(tries=10, delay=1,jitter=1)#重试机制,如果buy()方法执行失败,会每隔1s,重新执行10次该方法,直到成功
def buy():
driver.find_element_by_xpath(//*[@id="J_juValid"]/div[1]/a).click()#点击立即购买
pag.scroll(-900)
driver.find_element_by_class_name(go-btn).click()#提交订单
def login(url):
#打开网页
driver.get(url)
driver.maximize_window()
driver.find_element_by_xpath(//*[@id="J_SiteNavLogin"]/div[1]/div[1]/a[1]).click()#点击请登录
#手动扫码登录
time.sleep(10)
pag.scroll(-600)#页面往下滚动600,使需要操作的元素显示在屏幕上
time.sleep(2)
driver.find_element_by_xpath(//*[@id="J_isku"]/div/dl[1]/dd/ul/li[2]/a/span).click()#选择尺码
time.sleep(2)
monitor()
def monitor():#监控线程
interval = 0.1
last = 1800
elapse = 0
while elapse < last:
t = datetime.datetime.now()
now = t.strftime(%Y-%m-%d %H:%M:%S)
print 现在时间是 %s % (now)
if now == 2018-11-11 10:00:00:
print 立即购买!
buy()
break
else:
print 还没开始呢,再等等吧!
time.sleep(interval)
elapse += interval
driver = webdriver.Chrome()
url=https://item.taobao.com/item.htm?id=581169694730
login(url)
另外,上面的脚本中用到了retry模块,简单介绍下:
我们经常遇到一个场景,就是如果操作失败则需要多次重试某些操作,这种情况下,如果想优雅的实现功能,又不关心重试逻辑,则可以学习该模块。
安装方法:pip install retry
一个简单的例子:
# -*-coding:utf-8 -*-
from retry import retry
import logging
#@retry重试机制,如果方法执行失败,会重新执行n次
@retry(tries=3, delay=1,jitter=1)
# tries:重试的次数
# delay:延时时间
# jitter:累加,以及异常触发的日志
def make_trouble():
print (retrying...)
raise#通过raise引发异常,执行重试机制
if __name__ == __main__:
logging.basicConfig()
make_trouble()
运行结果:
