利用python打造淘宝抢购脚本

说这是一款自动抢购脚本是没问题的,不过其实一款半自动抢购脚本,为什么这么说呢,因为并没有达到完全自动抢购,需要扫码登陆,登陆之后就可以自动抢购了,该脚本主要依赖第三方库selenium自动打开谷歌浏览器进行模拟登陆淘宝。

在进行该程序之前需要做的工作是

1.安装谷歌浏览器,也可以用其他浏览器比如火狐等,不过我的代码是通过谷歌实现的。

2.安装第三方库selenium,(通过pip命令比较方便)

3.安装谷歌驱动chomedriver,不会的点这里.

好了开始放代码喽

可能该代码有所不成熟,且注释不够完善,有空进行补充,如果有问题,请大佬指出,评论在下方,感谢

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
import time
import datetime
from selenium import webdriver
##################################################################################################################
# 淘宝抢购脚本 #
# 使用方法: #
# 1、先将需要抢购的商品放到购物车中(注意购物车中只能放需要抢购的东西,到时抢购的时候会全部提交) #
# 2、修改下本脚本中的BUY_TIME值,设定为需要抢购的时间; #
# 3、执行此脚本,然后等待浏览器打开弹出登陆界面,手机淘宝扫描登陆; #
# 4、脚本开始执行后,会定时刷新防止超时退出,到了设定时间点会自动尝试提交订单 #
# 5、抢购时为了防止一次网络拥堵出问题,设置了尝试机制,会不停尝试提交订单,直到提交成功或达到最大重试次数为止 #
# 6、脚本只负责提交订单,之后24小时内需要自行完成付款操作。 #
##################################################################################################################
login_sucess=False
retry_login_time=int(0)
max_retry_login_time=int(6)
buy_time="2019-07-31 20:15:00"
buy_time_obj=datetime.datetime.strptime(buy_time,"%Y-%m-%d %H:%M:%S")
now_time=datetime.datetime.now()
if(now_time > buy_time_obj):
print('抢购时间已过,确认时间是否填写错误')
exit(0)
print('正在打开浏览器...')
print('正在尝试登陆...')
driver=webdriver.Chrome()
def login_oprator():
driver.get('https://www.taobao.com')
try:
if driver.find_element_by_link_text("亲,请登录"):
print('未登录,请点击登录按钮')
driver.find_element_by_link_text('亲,请登录').click()
print('请扫描二维码进行登陆')
time.sleep(10)
except:
print('已登录,开始进行跳转...')
global login_sucess
global retry_login_time
login_sucess=True
retry_login_time=0

def login():
global retry_login_time
while retry_login_time < max_retry_login_time:
retry_login_time+=1
print('正在尝试登陆次数'+str(retry_login_time))
login_oprator()
if login_sucess:
print('登陆成功')
break
else:
print('等待登陆中...')
if not login_sucess:
print('规定时间内,未完成扫码登陆,登陆失败...退出程序!!')
exit(0)
now=datetime.datetime.now()
print('登陆成功'+str(now))
def refrsh_keep_alive():
driver.get('https://cart.taobao.com/cart.htm')
print('刷新购物页面,防止超时...')
time.sleep(30)
def keep_login_and_wait():
print("当前距离抢购时间点还有较长时间,开始定时刷新防止登录超时...")
while True:
current_time=datetime.datetime.now()
if((buy_time_obj-current_time).seconds>180):
refrsh_keep_alive()
else:
print('抢购时间将近,停止自动刷新,准备进入抢购阶段...')
break
def buy():
driver.get("https://cart.taobao.com/cart.htm")
time.sleep(3)
global submit_success
submit_success=0
retry_sumit_times=0
while True:
now=datetime.datetime.now()
if now>=buy_time_obj:
print('到达抢购时间,开始抢购...尝试次数'+str(retry_sumit_times))

if submit_success:
print('抢购成功,无需继续抢购...')
break
if retry_sumit_times>50:
print('抢购次数达到上限,停止抢购...')
break
retry_sumit_times+=1
while True:
if (driver.find_element_by_id('J_SelectAll1')):
driver.find_element_by_id('J_SelectAll1').click()
print('已选中全选按钮')
break
else:
time.sleep(0.1)
pass
try:
if(driver.find_element_by_id('J_Go')):
driver.find_element_by_id('J_Go').click()
print('已经点击结算按钮...')
click_button_times=0
while True:
try:
if click_button_times<10 and driver.find_element_by_link_text('提交订单'):
driver.find_element_by_link_text('提交订单').click()
print('已经点击提交订单按钮\n哈哈哈,抢购成功!!!')
exit(0)
except Exception as e:
print('没有发现提交订单按钮,可能页面没加载出来,重试...')
click_button_times+=1
time.sleep(0.1)
except Exception as e:
print(e)
print('提交订单失败')
time.sleep(0.1)
login()
keep_login_and_wait()
buy()
hey!baby,站住,点它!