应对双11,我帮她写了一个自动下单脚本

本文主要介绍一种定时自动下单的技术实现。脚本为女神而写,希望双十一能帮到她享受更高的优惠,进而看到她的笑容。

不想看啰嗦描述的朋友可直接跳到最后看代码。

一、背景:

一年一度双11就要到来,女神在天猫看上了几件商品,商品描述都有这样一个共同特点:“要想享受更高的优惠,你就抢购吧”,于是她嗲声嗲气地求我帮忙。

接活后,冷静下来分析一下,双11活动中的商品虽然也具有“抢购”属性,但是并不同于平时所熟悉的“秒杀”那么激烈,人工浏览了一些淘宝双十一的商品,总结出双11商品一般分为以下两种(配图有些花里胡哨,但为了更直观说明):

  1. 限时优惠,比如前15分钟享折扣更大。
  2. 限购数量,同秒杀类似,但是商品数量会多一些。

二、思路分析:

如上流程图,分为两步:

  1. 第一步,先把需要抢购的商品加购物车,注意因为后面抢购时为简化技术,会对购物车所有商品进行下单,所以不购买的商品最好先从购物车删掉。
  2. 第二步,提前写好自动下单机器人(其实就是一个python脚本),并让机器人提前就开始运行,并且设置好抢购时间,一到时间机器人脚本就会自动抓取。

三、机器人(脚本)实现

代码由Python语言实现,此代码中引用到python多个扩展模块,除了selenium的webdriver,其它模块均为安装python时自带安装,那么要想成功运行此代码,需要通过如下四步部署运行环境:

  1. 安装python,一般mac和linux系统都会默认安装python,如果是windows系统,自己去google或百度一下。
  2. 安装webdriver扩展,webdriver属于selenium模块,Selenium是一个用于Web应用程序测试的工具。Selenium测试直接运行在浏览器中,就像真正的用户在操作一样,以在Mac为例进行安装:
sudo pipe install selenium


  1. 安装浏览器,以chrome为例,自己去安装chrome浏览器,这个不用多说。
  2. 安装chromedriver,也可以说它是chrome的一个插件,是为了webDriver可以通过操作chomedriver来控制chrome浏览器进行自动操作,比如打开网页,点击按钮等。 下载地址:http://chromedriver.storage.googleapis.com/index.html 注意下载时要根据电脑系统和chrome浏览器版本来选择对应的chromedriver版本,比如我的电脑是MAC,chrome版本 70.0.3538.77,下载chromedricer版本是70.0.3538.67版本的chromedriver_mac64.zip包。
# coding=utf-8
import os
from selenium import webdriver
import datetime
import time
from os import path

#此处chromedriver改为自己下载的路径
driver = webdriver.Chrome("/Users/baidu/Downloads/chromedriver")
#driver.maximize_window()

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

def buy(buytime):
    while True:
        now = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
        print(buytime)
        print(now)
        # 对比时间,时间到的话就点击结算
        if now > buytime:
            try:
                if driver.find_element_by_id("J_Go"):
                    driver.find_element_by_id("J_Go").click()
                    driver.find_element_by_link_text("提交订单").click()
            except:
                time.sleep(0.1)
        print(now)
        time.sleep(0.1)

if __name__ == "__main__":
    times = raw_input("请输入抢购时间(例如格式:2018-11-11 00:00:00):")
    login()
    buy(times)

运行代码流程为:

  1. 提前打开手机淘宝二维码扫描功能
  2. 运行代码(命令:python autobuy.py)
  3. 按照提示输入开始下单时间
  4. 扫码登录
  5. 静等自动下单成功后,检查价格是满意,去付款。

本文分享自微信公众号 - nginx(nginx-study)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2018-11-09

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏老九学堂

6 月编程语言排行榜:Python 飙升,有望挑战 Java 和 C?

排名前三变成了 Java、C、Python,C++ 掉到第四,第五为 VB .NET。

10350
来自专栏ATYUN订阅号

Python多线程/多进程释疑:为啥、何时、怎么用?

本指南的目的是解释为什么在Python中需要多线程和多处理,何时使用多线程和多处理,以及如何在程序中使用它们。作为一名人工智能研究人员,我在为我的模型准备数据时...

17920
来自专栏育种数据分析之放飞自我

R语言与python对数据框的操作(对比笔记)

这篇主要比较R语言的data.talbe和python的pandas操作数据框的形式, 学习两者的异同点, 加深理解两者的使用方法。

18520
来自专栏sktj

python flask web开发实战 表单 form flask-wtf

app = Flask(name) app.config['SECRET_KEY'] = 'hard to guess string' 1、

13230
来自专栏ATYUN订阅号

加速Python数据分析的10个简单技巧(下)

上一篇文章中我们讲了5个技巧在绘图,印刷,数据分析当中的作用,接下来我们继续来看看还有哪些给我们带来便利的技巧。

10830
来自专栏sktj

python flask web基本结构 登录模块 常用

flask-login werkzeug itsdangerous flask-mail flask-bootstrap flask-wtf

12220
来自专栏sktj

python flask web基本结构 常用

|-flasky |-app/ |-templates/ |-static/ |-main/ |-init.py |-errors.py |-fo...

13530
来自专栏sktj

python flask web开发实战 DB flask-sqlalchemy

MySQL mysql://username:password@hostname/database Postgres postgresql://usernam...

14620
来自专栏sktj

python flask web开发实战 flask-email

1 MAIL_SERVER localhost 电子邮件服务器的主机名或IP 地址 MAIL_PORT 25 电子邮件服务器的端口 MAIL_USE_TL...

10430
来自专栏咸鱼学Python

JS逆向 | 无限Debugger之淘大象

今天继续和大家研究JS逆向,不少小伙伴在JS逆向的时候遇到过无限debugger的反爬,今天就拿一个网站练练手感受下无限debugger。

45030

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励