本文主要介绍一种定时自动下单的技术实现。脚本为女神而写,希望双十一能帮到她享受更高的优惠,进而看到她的笑容。
不想看啰嗦描述的朋友可直接跳到最后看代码。
一、背景:
一年一度双11就要到来,女神在天猫看上了几件商品,商品描述都有这样一个共同特点:“要想享受更高的优惠,你就抢购吧”,于是她嗲声嗲气地求我帮忙。
接活后,冷静下来分析一下,双11活动中的商品虽然也具有“抢购”属性,但是并不同于平时所熟悉的“秒杀”那么激烈,人工浏览了一些淘宝双十一的商品,总结出双11商品一般分为以下两种(配图有些花里胡哨,但为了更直观说明):
二、思路分析:
如上流程图,分为两步:
三、机器人(脚本)实现
代码由Python语言实现,此代码中引用到python多个扩展模块,除了selenium的webdriver,其它模块均为安装python时自带安装,那么要想成功运行此代码,需要通过如下四步部署运行环境:
sudo pipe install selenium
# 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)
运行代码流程为: