1
+ # -*- coding: utf-8 -*-
2
+ """
3
+ @author: liuyw
4
+ """
5
+ from splinter .browser import Browser
6
+ from time import sleep
7
+ import traceback
8
+ import time , sys
9
+
10
+ class huoche (object ):
11
+ driver_name = ''
12
+ executable_path = ''
13
+ #用户名,密码
14
+ username = u"xxx"
15
+ passwd = u"xxx"
16
+ # cookies值得自己去找, 下面两个分别是沈阳, 哈尔滨
17
+ starts = u"%u6C88%u9633%2CSYT"
18
+ ends = u"%u54C8%u5C14%u6EE8%2CHBB"
19
+
20
+ # 时间格式2018-01-19
21
+ dtime = u"2018-01-19"
22
+ # 车次,选择第几趟,0则从上之下依次点击
23
+ order = 0
24
+ ###乘客名
25
+ users = [u"xxx" ,u"xxx" ]
26
+ ##席位
27
+ xb = u"二等座"
28
+ pz = u"成人票"
29
+
30
+ """网址"""
31
+ ticket_url = "https://kyfw.12306.cn/otn/leftTicket/init"
32
+ login_url = "https://kyfw.12306.cn/otn/login/init"
33
+ initmy_url = "https://kyfw.12306.cn/otn/index/initMy12306"
34
+ buy = "https://kyfw.12306.cn/otn/confirmPassenger/initDc"
35
+
36
+ def __init__ (self ):
37
+ self .driver_name = 'chrome'
38
+ self .executable_path = 'D:/chromedriver'
39
+
40
+ def login (self ):
41
+ self .driver .visit (self .login_url )
42
+ self .driver .fill ("loginUserDTO.user_name" , self .username )
43
+ # sleep(1)
44
+ self .driver .fill ("userDTO.password" , self .passwd )
45
+ print (u"等待验证码,自行输入..." )
46
+ while True :
47
+ if self .driver .url != self .initmy_url :
48
+ sleep (1 )
49
+ else :
50
+ break
51
+
52
+ def start (self ):
53
+ self .driver = Browser (driver_name = self .driver_name ,executable_path = self .executable_path )
54
+ self .driver .driver .set_window_size (1400 , 1000 )
55
+ self .login ()
56
+ # sleep(1)
57
+ self .driver .visit (self .ticket_url )
58
+ try :
59
+ print (u"购票页面开始..." )
60
+ # sleep(1)
61
+ # 加载查询信息
62
+ self .driver .cookies .add ({"_jc_save_fromStation" : self .starts })
63
+ self .driver .cookies .add ({"_jc_save_toStation" : self .ends })
64
+ self .driver .cookies .add ({"_jc_save_fromDate" : self .dtime })
65
+
66
+ self .driver .reload ()
67
+
68
+ count = 0
69
+ if self .order != 0 :
70
+ while self .driver .url == self .ticket_url :
71
+ self .driver .find_by_text (u"查询" ).click ()
72
+ count += 1
73
+ print (u"循环点击查询... 第 %s 次" % count )
74
+ # sleep(1)
75
+ try :
76
+ self .driver .find_by_text (u"预订" )[self .order - 1 ].click ()
77
+ except Exception as e :
78
+ print (e )
79
+ print (u"还没开始预订" )
80
+ continue
81
+ else :
82
+ while self .driver .url == self .ticket_url :
83
+ self .driver .find_by_text (u"查询" ).click ()
84
+ count += 1
85
+ print (u"循环点击查询... 第 %s 次" % count )
86
+ # sleep(0.8)
87
+ try :
88
+ for i in self .driver .find_by_text (u"预订" ):
89
+ i .click ()
90
+ sleep (1 )
91
+ except Exception as e :
92
+ print (e )
93
+ print (u"还没开始预订 %s" % count )
94
+ continue
95
+ print (u"开始预订..." )
96
+ # sleep(3)
97
+ # self.driver.reload()
98
+ sleep (1 )
99
+ print (u'开始选择用户...' )
100
+ for user in self .users :
101
+ self .driver .find_by_text (user ).last .click ()
102
+
103
+ print (u"提交订单..." )
104
+ sleep (1 )
105
+ self .driver .find_by_text (self .pz ).click ()
106
+ self .driver .find_by_id ('' ).select (self .pz )
107
+ # sleep(1)
108
+ self .driver .find_by_text (self .xb ).click ()
109
+ sleep (1 )
110
+ self .driver .find_by_id ('submitOrder_id' ).click ()
111
+ print (u"开始选座..." )
112
+ self .driver .find_by_id ('1D' ).last .click ()
113
+ self .driver .find_by_id ('1F' ).last .click ()
114
+
115
+ sleep (1.5 )
116
+ print (u"确认选座..." )
117
+ self .driver .find_by_id ('qr_submit_id' ).click ()
118
+
119
+ except Exception as e :
120
+ print (e )
121
+
122
+ if __name__ == '__main__' :
123
+ huoche = huoche ()
124
+ huoche .start ()
0 commit comments