python+selenium实现淘宝双十一自动下单

python+selenium实现淘宝双十一自动下单

思路/工具参考我的另一篇文章python+selenium实现京东秒杀脚本

1. 扫码登录版

# !/usr/bin/env python
# 2020/05/20
# 淘宝秒杀脚本,扫码登录版
from selenium import webdriver
import datetime,time
driver = webdriver.Chrome(executable_path=r"C:\workspace\Python\chromedriver.exe")
def auto_buy(order_time):
    print('.........................start.........................')
    driver.get("https://login.taobao.com/member/login.jhtml")
    driver.implicitly_wait(10)
    driver.find_element_by_css_selector('#login > div.corner-icon-view.view-type-qrcode > i').click()
    time.sleep(10)
    driver.get("https://cart.taobao.com/cart.htm")
    if not driver.find_element_by_css_selector('#J_SelectAll1').is_selected():
        driver.find_element_by_css_selector('#J_SelectAll1').click()
    while True:
        now = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S.%f')
         if now > order_time:
            btn=driver.find_element_by_id('J_Go')
            for i in range(1,20):
                try:
                    #淘宝每隔一段时间结算按钮点击次数都会不同,可能也是为防止程序操作设置的
                    driver.find_element_by_css_selector('#submitOrderPC_1 > div.wrapper > a.go-btn').click()
                    print('第'+str(i)+'次点击')
                    break
                except:
                    btn.click()
            print('.........................抢单成功,尽快付款.........................')
            time.sleep(10)
            driver.quit()
            break
if __name__ 

if __name__ == "__main__":
    order_time = input("请输入抢购时间,格式如(2020-05-20 16:45:00.000000):")
    auto_buy(order_time)
    print('.........................end.........................')

2 用户名密码登录

使用chrome无头模式速度相对快一点,代码稍有改动,主要是登陆时拖拽验证,代码只需要替换手机号和密码就可用。618/双十一可以试验一下奥。

# !/usr/bin/env python
# coding=utf-8
# 淘宝秒杀脚本,密码登录版
from selenium import webdriver
from selenium.webdriver import  ActionChains
from selenium.webdriver.chrome.options import Options
import datetime,time

def auto_buy(params):
    print('.........................start.........................')
    chrome_options = Options()
    #打开注释就可以开启无头模式
    #chrome_options.add_argument('--headless')
    driver = webdriver.Chrome(chrome_options=chrome_options, executable_path=r''+params['driverpath'] )
    driver.get("https://login.taobao.com/member/login.jhtml")
    driver.implicitly_wait(5)
    driver.find_element_by_id('fm-login-id').send_keys(params['mobile'])
    driver.find_element_by_id('fm-login-password').send_keys(params['passward'])
    time.sleep(1)
    driver.maximize_window()
    draggable = driver.find_element_by_id('nc_1_n1z')
    # #利用js将定位到的元素拖动到可见区域
    driver.execute_script("arguments[0].scrollIntoView();", draggable)
    ActionChains(driver).click_and_hold(draggable).perform()
    # 拖动
    ActionChains(driver).move_by_offset(xoffset=300, yoffset=0).perform()
    ActionChains(driver).release().perform()
    driver.find_element_by_css_selector('#login-form > div.fm-btn > button').click()
    driver.find_element_by_css_selector('#mc-menu-hd').click()

    if not driver.find_element_by_css_selector('#J_SelectAll1').is_selected():
        driver.find_element_by_css_selector('#J_SelectAll1').click()
    print('....................确认购物车商品,等待下单...........................')
    while True:
        now = datetime.datetime.now()
        if now > datetime.datetime.strptime(params['order_time'],'%Y-%m-%d %H:%M:%S'):
            btn=driver.find_element_by_id('J_Go')
            for i in range(1,20):
                try:
                    #淘宝每隔一段时间结算按钮点击次数都会不同,可能也是为防止程序操作设置的
                    driver.find_element_by_css_selector('#submitOrderPC_1 > div.wrapper > a.go-btn').click()
                    print('第'+str(i)+'次点击')
                    break
                except:
                    btn.click()
            driver.quit()
            input('抢单成功,尽快付款,按任意键退出:')
            break
if __name__ == "__main__":
    params={'mobile':'','passward':'','order_time':'','driverpath':''}
    params['driverpath'] = input("请输入chromedriver.exe绝对路径:")
    params['mobile'] = input("请输入淘宝手机号:")
    params['passward'] = input("请输入淘宝账号密码:")
    params['order_time'] =input("请输入抢购时间,格式如(2020-06-18 00:00:00):")
    try:
        auto_buy(params)
    except:
        input('抢单失败,确认下输入是否错误,按任意键退出:')

    print('.........................end.........................')

  • 1
    点赞
  • 40
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值