ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

如何秒下单?python的淘宝秒杀抢购下单源码参考

2021-05-13 14:53:09  阅读:208  来源: 互联网

标签:-% python datetime 源码 下单 element print now click


如何秒下单?python的淘宝秒杀抢购下单源码参考
疫情如期,隔离还在继续,何时工作是一个头大的问题,最近在看口罩,不少电商平台都有放出口罩,当然,手残党将会也会是一直难以下手,你可能很难抢得到,故找了几个关于python的淘宝秒杀抢购下单源码参考,当然本渣渣测试下单成功,但是准点抢购还是没有成功。
在这里插入图片描述

你是否有更好的方法或者方案?

关于淘宝下单的思路,鉴于淘宝的厉害,相信基本上都是采用的无头浏览器,即selenium驱动浏览器模拟人工提交订单,如果能够破解下单的post参数是最好不过了,暂未研究!

淘宝下单流程:
第一步:登录
发现微博登录添加了验证码,不知道是不是异地还是更新了,故采用扫码登录。

第二步:购买/结算
其中采用购物车提交的方式会让你感觉流畅不少!
当然也可以直接商品页购买!

第三步:提交订单

第四步:支付订单(秒杀下单)

这里准点下单购买能够走到第三步就成功了,当然还有一个思路就是试试看移动端下单是否更加简单顺畅呢?

python的淘宝秒杀抢购下单源码参考

版本一:
淘宝秒杀购物车下单支付

from selenium import webdriverfrom selenium.webdriver.support.ui import WebDriverWaitimport requestsfrom datetime import datetime

path =r"C:\Users\Administrator\AppData\Local\Programs\Python\Python36\chromedriver.exe"  # 谷歌chromedriver完整路径# 输入秒杀时间start_time = '2020-03-04 14:59:58'#password = input("输入付款密码:")print("你只有15秒的登录时间")# 将输入的时间进行格式化timeArray = datetime.strptime(start_time, "%Y-%m-%d %H:%M:%S")# 用来判断 你是订单提交失败还是支付失败sum = 0# 设置chrome驱动的路径driver = webdriver.Chrome(executable_path=path)# 打开淘宝的登录界面driver.get("https://cart.taobao.com/cart.htm")# 最大化浏览器driver.maximize_window()# 判断全选框是否出现 出现则点击全选 否则继续等待 最多等待15秒try:
    WebDriverWait(driver, 15, 0.1).until(
        lambda el: driver.find_element_by_xpath('//*[@id="J_SelectAll1"]/div/label')).click()except:
    print("登录失败")def time_server():
    # 获取淘宝服务器的时间戳
    r1 = requests.get(url='http://api.m.taobao.com/rest/api3.do?api=mtop.common.getTimestamp',
                      headers={
                          'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 UBrowser/6.2.4098.3 Safari/537.36'}
                      ).json()['data']['t']
    # 把时间戳格式/1000 获取毫秒
    timeNum = int(r1) / 1000
    # 格式化时间 (小数点后6为)
    time1 = datetime.fromtimestamp(timeNum)
    return time1# 等待时间到预定的时间print("等待中")while True:
    # 判断时间服务器时间是否大于或等于输入的时间
    if time_server() >= timeArray:
        # 点击结算
        driver.find_element_by_xpath('//*[@id="J_Go"]').click()
        break
    else:
        continuetry:
    # 判断提交订单的按钮是否出现 出现就点击 否则继续等待 最多等待3秒
    WebDriverWait(driver, 3, 0.1).until(
        lambda el: driver.find_element_by_xpath('//*[@id="submitOrderPC_1"]/div/a[2]')).click()
    print("订单提交成功")
    print("秒杀成功")
    sum = 1
    '''
    # 判断输入密码的框是否出现 出现就输入密码
    WebDriverWait(driver, 5, 0.1).until(
        lambda el: driver.find_element_by_xpath('//*[@id="submitOrderPC_1"]/div/a[2]')).send_keys(password)
    # 点击确认付款
    driver.find_element_by_xpath('//*[@id="J_authSubmit"]').click()
    print("付款成功")'''except:
    if sum == 0:
        print("提交订单失败")
    else:
        print("提交订单失败")

修改来源:
[Python] 开源一个python的淘宝秒杀的源码
吾爱论坛 id:牵手丶若相惜

版本二:
购物车提交订单

import osfrom selenium import webdriverfrom selenium.webdriver.common.by import Byfrom selenium.webdriver.support.ui import WebDriverWaitfrom selenium.webdriver.support import expected_conditions as ECimport datetimeimport time# deckodreiverchromedriver_path = r"C:\Users\Administrator\AppData\Local\Programs\Python\Python36\chromedriver.exe"  # 谷歌chromedriver完整路径options = webdriver.ChromeOptions()  # 配置 chrome 启动属性options.add_experimental_option("excludeSwitches",['enable-automation']) # 此步骤很重要,设置为开发者模式,防止被各大网站识别出来使用了Seleniumdriver=webdriver.Chrome(executable_path=chromedriver_path,options=options)wait=WebDriverWait(driver,10) #超时时长为10s#登录def login():
    driver.get("https://cart.taobao.com/cart.htm")
    time.sleep(20)
    sel = wait.until(EC.presence_of_element_located((By.ID, 'J_SelectAll2')))
    sel.click()#下单def buy(buytime):
    i = 0
    while True:
        now = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')
        if now > buytime:
            #driver.refresh()  # 刷新页面
            try:
                jss =wait.until(EC.presence_of_element_located((By.ID, 'J_Go')))
                jss.click()
                try:
                    tjdd =wait.until(EC.presence_of_element_located((By.XPATH, '//div[@class="wrapper"]/a[@class="go-btn"]')))
                    tjdd.click()
                    now = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')
                    print(f"抢购成功,请尽快付款"+now)
                    break
                except:
                    i=i+1
                    try:
                        now = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')
                        print(f"再次尝试提交订单" + now)
                        driver.refresh()  # 刷新页面
                        tjdd = wait.until(
                            EC.presence_of_element_located((By.XPATH, '//div[@class="wrapper"]/a[@class="go-btn"]')))
                        tjdd.click()
                        now = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')
                        print(f"抢购成功,请尽快付款"+now)
                    except:
                        try:
                            i = i + 1
                            now = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')
                            print(f"再次尝试提交订单" + now)
                            driver.refresh()  # 刷新页面
                            tjdd = wait.until(
                                EC.presence_of_element_located((By.XPATH, '//div[@class="wrapper"]/a[@class="go-btn"]')))
                            tjdd.click()
                            now = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')
                            print(f"抢购成功,请尽快付款" + now)
                        except:
                            i = i + 1
                            now = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')
                            print(f"再次尝试提交订单" + now)
                            driver.refresh()  # 刷新页面
                            tjdd = wait.until(
                                EC.presence_of_element_located(
                                    (By.XPATH, '//div[@class="wrapper"]/a[@class="go-btn"]')))
                            tjdd.click()
                            now = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')
                            print(f"抢购成功,请尽快付款" + now)
            except:
                driver.get("https://cart.taobao.com/cart.htm")
                sel = wait.until(EC.presence_of_element_located((By.ID, 'J_SelectAll2')))
                sel.click()
                jss = wait.until(EC.presence_of_element_located((By.ID, 'J_Go')))
                jss.click()
                now = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')
                print(f"再次尝试提交订单"+now)
                i = i + 1
                try:
                    tjdd =wait.until(EC.presence_of_element_located((By.XPATH, '//div[@class="wrapper"]/a[@class="go-btn"]')))
                    tjdd.click()
                    now = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')
                    print(f"抢购成功,请尽快付款"+now)
                    break
                except:
                    i = i + 1
                    try:
                        now = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')
                        print(f"再次尝试提交订单" + now)
                        driver.refresh()  # 刷新页面
                        tjdd = wait.until(
                            EC.presence_of_element_located((By.XPATH, '//div[@class="wrapper"]/a[@class="go-btn"]')))
                        tjdd.click()
                        now = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')
                        print(f"抢购成功,请尽快付款"+now)
                        break
                    except:
                        driver.get("https://cart.taobao.com/cart.htm")
                        sel = wait.until(EC.presence_of_element_located((By.ID, 'J_SelectAll2')))
                        sel.click()
                        jss = wait.until(EC.presence_of_element_located((By.ID, 'J_Go')))
                        jss.click()
                        now = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')
                        print(f"再次尝试提交订单" + now)
                        i = i + 1
                        now = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')
                        print(f"再次尝试提交订单" + now)
                        driver.refresh()  # 刷新页面
                        tjdd = wait.until(
                            EC.presence_of_element_located((By.XPATH, '//div[@class="wrapper"]/a[@class="go-btn"]')))
                        tjdd.click()
                        now = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')
                        print(f"抢购成功,请尽快付款" + now)
                        break

        if i>10:
            print(f">>>已经尝试第{i}次抢购,抢购失败,程序终止!")
            breakif __name__=="__main__":
    login()
    buy('2020-03-02 19:59:58')

修改来源:
[Python] 某宝秒杀关键模块及思路
吾爱论坛 id:露露的大雕

版本三:
商品页下单立即购买

#淘宝模拟登陆采集阿里商品# -*- coding: utf-8 -*-#20191122 by 微信:huguo00289from selenium import webdriverfrom selenium.webdriver.common.by import Byfrom selenium.webdriver.support.ui import WebDriverWaitfrom selenium.webdriver.support import expected_conditions as ECimport timeimport datetime#定义一个taobao类class taobao_infos:

    #对象初始化
    def __init__(self):
        url='https://login.taobao.com/member/login.jhtml'
        self.url=url

        options=webdriver.ChromeOptions() #配置 chrome 启动属性
        #options.add_experimental_option("prefs", {"profile.managed_default_content_settings.images": 2}) #不加载图片,加快访问速度
        options.add_experimental_option("excludeSwitches",['enable-automation']) # 此步骤很重要,设置为开发者模式,防止被各大网站识别出来使用了Selenium

        self.browser=webdriver.Chrome(executable_path=chromedriver_path,options=options)
        self.wait=WebDriverWait(self.browser,10) #超时时长为10s

    #扫码登陆淘宝
    def login(self):
        #打开网页
        self.browser.get(self.url)
        time.sleep(1)
        time.sleep(15)


    #打开抢购商品首页
    def get_shop(self,shop_url,buytime):
        print("正在打开需要抢购的页面")
        self.browser.get(shop_url)
        while True:
            now = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')
            if now > buytime:
                try:
                    #等待购买按钮出现
                    linkbuy=self.wait.until(EC.presence_of_element_located((By.ID,'J_LinkBuy')))
                    linkbuy.click()
                    sutj=self.wait.until(EC.presence_of_element_located((By.XPATH,'//div[@class="wrapper"]/a')))
                    sutj.click()
                    print(f"抢购成功,请尽快付款")
                except:
                    self.browser.refresh()  # 刷新页面
                    linkbuy = self.wait.until(EC.presence_of_element_located((By.ID, 'J_LinkBuy')))
                    linkbuy.click()
                    sutj = self.wait.until(EC.presence_of_element_located((By.XPATH, '//div[@class="wrapper"]/a')))
                    sutj.click()
                    print(f"抢购成功,请尽快付款")





    def gb(self):
        print(">>> 抢购完毕,关闭浏览器!")
        self.browser.quit()if __name__ == '__main__':
    chromedriver_path = r"C:\Users\Administrator\AppData\Local\Programs\Python\Python36\chromedriver.exe"  #谷歌chromedriver完整路径
    spider=taobao_infos()
    spider.login()
    datetime='2020-03-02 11:59:58'
    shop_url="https://detail.tmall.com/item.htm?id=550189462849&price=24.8"
    #shop_url='https://detail.tmall.com/item.htm?id=612510400743' #抢购商品页
    try:
        spider.get_shop(shop_url,datetime)
    except:
        spider.get_shop(shop_url, datetime)
    spider.gb()

网速比较慢,测试正常下单是基本没问题,可是说到准点抢购下单,还是够呛,如果本地驱动浏览器打开网页秒开的话,是否有很大几率成功呢,这还得测试!!

标签:-%,python,datetime,源码,下单,element,print,now,click
来源: https://blog.51cto.com/u_15200177/2773443

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有