用Python做一个中秋抢购月饼的脚本

; 序言

每逢佳节倍思亲,想买个东西给家里,结果发现手速不够,网速不够快,没有时间下单等等各种原因导致最后想买的东西售罄了…

甚至跟你一起抢购的可能是脚本,太真实了!

今天就给大家分享一个python版抢购月饼的脚本,我们要用魔法打败魔法!话不多说,直接开搞!

准备工作

今天要用的是一个测试工具的库:Selenium

Selenium是一个用于测试网站的自动化测试工具,支持各种浏览器包括Chrome、Firefox、Safari等主流界面浏览器,同时也支持phantomJS无界面浏览器。
它支持多种操作系统如Windows、Linux、IOS、Android等。
今天我们就是用它去实现自动化抢购月饼,其实就是用这个工具”模拟”人为操作浏览器相应的操作,比如登陆,勾选购物车商品,下单购买等等操作。

安装 Selenium

方式1

pip install Selenium

方式2

pip 安装不成功的话,可以使用pycharm工具进行下载

国内可以采用以下这些数据源:

选择一个可用的数据源的Selenium进行

安装浏览器驱动

下载

Selenium3.x调用浏览器必须有一个webdriver驱动文件, 选择以下 对应系统的chrome进行下载即可
Chrome驱动文件下载

配置环境变量

我的电脑–>属性–>系统设置–>高级–>环境变量–>系统变量–>Path

将你下载chromexxx.zip文件的目录添加到Path的值中。比如:Path字段 F:\download

代码展示

from selenium import webdriver
import datetime
import time# Python学习交流群:279199867 完整源码其它资料都放在群里了

class Seckill():
    def __init__(self,startTime, choose):
        self.startTime = startTime
        self.choose = choose

    def login(self,browser):
        browser.get("https://www.taobao.com")
        time.sleep(2)
        if browser.find_element_by_link_text("亲,请登录"):
            browser.find_element_by_link_text("亲,请登录").click()
            print("请在15秒内完成扫码")
            time.sleep(15)
            browser.get("https://cart.taobao.com/cart.htm")
        time.sleep(3)
        now = datetime.datetime.now()
        print('登陆成功:', now.strftime('%Y-%m-%d %H:%M:%S'))

    def buy(self,browser):
        if self.choose == 2:
            print("请手动在浏览器中勾选需要秒杀的商品")
        while True:
            now = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S.%f')
            # 对比时间,时间到的话就点击结算
            if now > self.startTime:
                if self.choose == 1:
                    while True:
                        try:
                            if browser.find_element_by_id("J_SelectAll2"):
                                browser.find_element_by_id("J_SelectAll2").click()
                                break
                        except:
                            print("error : cant find buy button")
                # 点击结算按钮
                while True:
                    try:
                        if browser.find_element_by_link_text("结 算"):
                            browser.find_element_by_link_text("结 算").click()
                            print("结算成功")
                            break
                    except:
                        pass
                while True:
                    try:
                        if browser.find_element_by_link_text('提交订单'):
                            browser.find_element_by_link_text('提交订单').click()
                            now1 = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S.%f')
                            print("抢购成功时间:%s" % now1)
                    except:
                        print("再次尝试提交订单")
                time.sleep(0.01)

def main():

    pkTime = input("请输入秒杀时间,格式如(2022-09-03 15:40:00.000000):")
    choose = int(input("到时间自动勾选购物车请输入"1",否则输入"2":"))
    browser = webdriver.Chrome()
    browser.maximize_window()
    sk = Seckill(pkTime, choose)
    # step1: 登陆
    sk.login(browser)
    # step2: 购买
    sk.buy(browser)

if __name__ == "__main__":
    main()

测试

请输入抢购时间,格式如(2022-09-03 15:40:00.000000):2022-09-03 16:17:00.000000
到时间自动勾选购物车请输入"1",否则输入"2":1
请在15秒内完成扫码
登陆成功: 2022-09-03 16:14:45
结算成功
再次尝试提交订单
再次尝试提交订单
再次尝试提交订单
再次尝试提交订单
再次尝试提交订单
再次尝试提交订单
再次尝试提交订单
抢购成功时间:2022-09-03 16:17:15.498106

输入抢购时间后,会自动弹出测试的浏览器界面,自动调整到登录界面,此时需要你自己操作进行登录:

登录后,跳转到购物车

如果你选择的是自动化勾选购物车就不需要手动勾选,等程序自己勾选 (不建议选择自动勾选)

建议选择手动勾选

等到你指定抢购时间的时候,该脚本会在1毫秒内进行抢购,下单并跳转到支付页面,等待你的付款。

注意

  • 测试时,到时间自动勾选购物车请输入”1″,否则输入”2″,这个选项最好选择为2 (如 果选择为1,且你的购物车商品比较多,会自动全部勾选进行抢购了)
  • 抢购时间选择大于当前时间

好了,今天的分享就到这里~

最后推荐一套Python教程:Python项目实战100例

Original: https://www.cnblogs.com/hahaa/p/16659179.html
Author: 轻松学Python
Title: 用Python做一个中秋抢购月饼的脚本

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/809325/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • AFL源码分析(一)

    这个函数的功能是获取使用的汇编器。首先获取环境变量 AFL_PATH,如果这个环境变量存在的话,接着把他和 /as拼接,并判断次路径下的 as文件是否存在。如果存在,就使得 as_…

    Python 2023年10月14日
    034
  • Flask开发问题总结

    毕设用 Flask 框架开发了一个 Web 网站 ,在开发过程中遇到了很多问题,今天这里做一个总结,避免以后遇到同样的问题。 Error: While importing ‘xxx…

    Python 2023年8月13日
    056
  • python中@详解

    通常我们所见的@符号是用于邮箱中,而在python中@符号也有着重要的作用:一个是表示 修饰符,另一个则是表示 矩阵乘法(不常用)。表示修饰符时,可以在模块或者类的定义层内对函数进…

    Python 2023年8月1日
    054
  • 尚硅谷Promise笔记

    文章目录 一、Promise介绍与基本使用 * 1-1.初体验之promise封装ajax请求 1-2.Promise对象状态属性PromiseState的值有三个 1-3.Pro…

    Python 2023年10月8日
    030
  • Flask 框架 ORM & 增删改查

    Flask Python 利用 pymysql 库连接 Mysql(直接连接) Python 利用 SQLAlchemy 库连接 Mysql SQLAlchemy 执行原生 SQL…

    Python 2023年8月15日
    044
  • JavaScript 设计模式及代码实现——代理模式

    代理模式 1 定义 为其他对象提供一种代理以控制对这个对象的访问 在某些情况下,一个对象不适合或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。 2 …

    Python 2023年10月23日
    049
  • MQ系列5:RocketMQ消息的发送模式

    MQ系列1:消息中间件执行原理MQ系列2:消息中间件的技术选型MQ系列3:RocketMQ 架构分析MQ系列4:NameServer 原理解析 在之前的篇章中,我们学习了Rocke…

    Python 2023年10月23日
    049
  • 【深入理解 —— js闭包】

    🧁个人主页:个人主页 ✌支持我 :点赞👍收藏🌼关注🧡 文章目录 * – js闭包 – + 🎀 什么是闭包? + 🩰 执行上下文(执行环境) + 🍧解释闭包的…

    Python 2023年10月11日
    026
  • python数据导入与清洗_python pandas 入门(1)– 数据导入,清洗,导出

    导入各格式数据 csv/excel/json import pandas df = pandas.read_csv/excel/json(‘filepath&#8217…

    Python 2023年8月8日
    043
  • 四、Python数据挖掘(Pandas库)

    四、Python数据挖掘(Pandas库) 目录: 四、Python数据挖掘(Pandas库) * – + 一、Pandas 简介 二、Pandas 三大结构之——Da…

    Python 2023年8月17日
    070
  • 时间序列学习(4):平稳性检验(单位根检验、ADF检验)

    时间序列学习(4):平稳性检验(单位根检验、ADF检验) * – + 1、单位根检验 + 2、ADF检验 + 3、指数走势的检验 + 4、对数收益率序列检验 相关图可以…

    Python 2023年8月2日
    0184
  • HTML & CSS 设计原则

    响应式设计的意思是网页能够根据其显示在的屏幕的大小自动伸缩。 响应式设计使得对笔记本和手机用户更加友好。 分辨率的计算:宽度 * 高度,最常见的屏幕分辨率是 1920px * 10…

    Python 2023年6月9日
    060
  • python GUI 经典案例十八之一 窗体

    前言: 到目前为止,我们所编写的python代码都是处于一个文字交互界面的状态。但在实际应用中,很多用户都是非专业的,他们希望所提供的软件能有一个友好的界面,这就用到GUI编程了。…

    Python 2023年9月20日
    027
  • pytest+yaml设计接口自动化框架过程记录(一步一步记录如何设计,完结撒花),源码提供,视频教程

    pytest+yaml设计接口自动化框架过程记录 * – 第三代框架使用教程,该框架比现在这个完善了很多 – 框架简介 – 框架运行演示和功能介…

    Python 2023年7月31日
    060
  • pygame实现 飞机大战-第二版功能改进

    按照个人的相法,对原代码进行了改进,添加功能如下: 功能1:飞机的移动多样化 原代码飞机只能左右移动,没有前后移动,增加飞机前后移动 方法: 1、在GameSprite初始化时添加…

    Python 2023年9月24日
    046
  • python外星人入侵小项目(三)

    python外星人入侵小项目(一)python外星人入侵小项目(二) 重构:模块 game_functions 函数check_events() 我们将首先把管理事件的代码移到一个…

    Python 2023年9月25日
    053
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球