Python脚本做一个淘宝秒杀程序!

Python脚本做一个淘宝秒杀程序!

先上代码

from selenium import webdriver
import datetime
import time
import os
import sys
import logging

logging.basicConfig(format=%(asctime)s - %(levelname)s: %(message)s,
                    datefmt=%Y-%m-%d %H:%M:%S,
                    level=logging.WARNING)
logging.warning(开始读取配置文件)
#定义抢购时间
seckill_time = 
#在当前文件的相对路径,读取配置时间
path=os.path.abspath(.)
#配置文件自己创建,里面只是一个时间(2021-01-01 01:00:00)
f = open(path+/dateConfig.txt)
index = f.readlines()
for line in index:
    seckill_time=line
    f.close()
seckill_time=seckill_time.replace("
", "")
#验证配置文件的时间格式是否正确,不正确就直接退出
try:
    time.strptime(seckill_time, "%Y-%m-%d %H:%M:%S")
except:
    logging.warning(时间格式错误!)
    sys.exit()

#使用谷歌模拟器(需要自行下载,并配置环境变量)
logging.warning(正在打开浏览器!)
driver = webdriver.Chrome()
driver.maximize_window()
driver.get(http://www.taobao.com)
#为了防止出现滑块验证 模拟人的操作 我们可以暂停两秒
time.sleep(2)
#找到登录按钮并点击
logging.warning(进入登录页面,请尽快登录)
if driver.find_element_by_link_text("亲,请登录"):
    driver.find_element_by_link_text("亲,请登录").click()

#循环验证是否登录成功
ifLongin = False
while bool(1-ifLongin):
    time.sleep(3)
    # 打印当前页面URL
    now_url = driver.current_url
    #login判断是否停留在登录页面
    if now_url.find(login.taobao.com)>=0:
        ifLongin = False
        logging.warning(等待登录...)
    else:
        ifLongin = True
if ifLongin:
    logging.warning(登录成功!)


#进入购物车
driver.find_element_by_id(J_MiniCart).click()
time.sleep(1)
try:
    #全选
    driver.find_element_by_id(J_SelectAll1).click()
except:
    logging.warning(购物车没有商品,请添加需要购买的商品到购物车后重试)
    sys.exit()

time.sleep(1)
#结算
driver.find_element_by_id(J_Go).click()
time.sleep(1)
#将抢购时间转换成能够进行对比的时间类型
datetime1 = datetime.datetime.strptime(seckill_time+.000001,%Y-%m-%d %H:%M:%S.%f)
print("datetime1",datetime1)
#开始循环对比,时间到了就进入付款页面
buy = False
while bool(1-buy):
    datetime2 = datetime.datetime.now().strftime(%Y-%m-%d %H:%M:%S.%f)
    datetime2 = datetime.datetime.strptime(str(datetime2),%Y-%m-%d %H:%M:%S.%f)
    logging.warning("等待秒杀")
    if datetime2 >= datetime1:
        driver.find_element_by_link_text("提交订单").click()
        time.sleep(2)
        # 获取当前页面URL
        buy_url = driver.current_url
        #只要能够进入支付页面,就代表秒杀成功
        if buy_url.find(alipay.com)>=0:
            logging.warning("秒杀成功,尽快付款!")
        else:
            logging.warning("秒杀失败!")
        buy = True
    else:
        # 循环阻塞时间自己根据情况调试
        # 像那种秒无的商品,为了提高秒杀成功几率,建议不要这个阻塞(总之视情况而定吧)
        time.sleep(0.1)

实现原理大概就是利用selenium模拟用户操作操作浏览器

其中用到了谷歌插件,并配置到环境变量:

链接:https://pan.baidu.com/s/1T3p-8xrniIpJsWsVj-8BNg 提取码:4n86

附上源码、谷歌插件、以及打包好,可以直接使用的exe文件

经验分享 程序员 微信小程序 职场和发展