python +splinter自动刷新抢票

一年一度的春运又来了,

今年我自己写了个抢票脚本。

python +splinter自动刷新抢票,可以成功抢到(依赖自己的网络环境太厉害,还有机器的好坏),

但是感觉不是很完美,

有大神请指导完善一下(或者有没有别的好点的思路)

不胜感谢

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
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
复制代码# -*- coding: utf-8 -*-
"""
@author: liuyw
"""
from splinter.browser import Browser
from time import sleep
import traceback
import time, sys


class huoche(object):
"""docstring for huoche"""
driver_name=''
executable_path=''
#用户名,密码
username = u"xxx@qq.com"
passwd = u"xxxx"
# cookies值得自己去找, 下面两个分别是上海, 太原南
starts = u"%u4E0A%u6D77%2CSHH"
ends = u"%u592A%u539F%2CTYV"
# 时间格式2018-01-19
dtime = u"2018-01-19"
# 车次,选择第几趟,0则从上之下依次点击
order = 0
###乘客名
users = [u"xxx",u"xxx"]
##席位
xb = u"二等座"
pz=u"成人票"

"""网址"""
ticket_url = "https://kyfw.12306.cn/otn/leftTicket/init"
login_url = "https://kyfw.12306.cn/otn/login/init"
initmy_url = "https://kyfw.12306.cn/otn/index/initMy12306"
buy="https://kyfw.12306.cn/otn/confirmPassenger/initDc"
login_url='https://kyfw.12306.cn/otn/login/init'
def __init__(self):
self.driver_name='chrome'
self.executable_path='/usr/local/bin/chromedriver'


def login(self):
self.driver.visit(self.login_url)
self.driver.fill("loginUserDTO.user_name", self.username)
# sleep(1)
self.driver.fill("userDTO.password", self.passwd)
print u"等待验证码,自行输入..."
while True:
if self.driver.url != self.initmy_url:
sleep(1)
else:
break

def start(self):
self.driver=Browser(driver_name=self.driver_name,executable_path=self.executable_path)
self.driver.driver.set_window_size(1400, 1000)
self.login()
# sleep(1)
self.driver.visit(self.ticket_url)
try:
print u"购票页面开始..."
# sleep(1)
# 加载查询信息
self.driver.cookies.add({"_jc_save_fromStation": self.starts})
self.driver.cookies.add({"_jc_save_toStation": self.ends})
self.driver.cookies.add({"_jc_save_fromDate": self.dtime})

self.driver.reload()

count=0
if self.order!=0:
while self.driver.url==self.ticket_url:
self.driver.find_by_text(u"查询").click()
count += 1
print u"循环点击查询... 第 %s 次" % count
# sleep(1)
try:
self.driver.find_by_text(u"预订")[self.order - 1].click()
except Exception as e:
print e
print u"还没开始预订"
continue
else:
while self.driver.url == self.ticket_url:
self.driver.find_by_text(u"查询").click()
count += 1
print u"循环点击查询... 第 %s 次" % count
# sleep(0.8)
try:
for i in self.driver.find_by_text(u"预订"):
i.click()
sleep(1)
except Exception as e:
print e
print u"还没开始预订 %s" %count
continue
print u"开始预订..."
# sleep(3)
# self.driver.reload()
sleep(1)
print u'开始选择用户...'
for user in self.users:
self.driver.find_by_text(user).last.click()

print u"提交订单..."
sleep(1)
# self.driver.find_by_text(self.pz).click()
# self.driver.find_by_id('').select(self.pz)
# # sleep(1)
# self.driver.find_by_text(self.xb).click()
# sleep(1)
self.driver.find_by_id('submitOrder_id').click()
# print u"开始选座..."
# self.driver.find_by_id('1D').last.click()
# self.driver.find_by_id('1F').last.click()

sleep(1.5)
print u"确认选座..."
self.driver.find_by_id('qr_submit_id').click()




except Exception as e:
print e






if __name__ == '__main__':
huoche=huoche()
huoche.start()

本文转载自: 掘金

开发者博客 – 和开发相关的 这里全都有

0%