服务器之家

服务器之家 > 正文

Python 12306抢火车票脚本

时间:2021-01-12 00:47     来源/作者:zqw_4181

本文实例为大家分享了Python 12306抢火车票的具体代码,供大家参考,具体内容如下

?
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
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
# -*- coding: utf-8 -*-
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"name"
 passwd = u"passwd"
 # cookies值得自己去找, 下面两个分别是上海, 太原南
 starts = u"%u4E0A%u6D77%2CSHH"
 ends = u"%u592A%u539F%2CTYV"
 # 时间格式2018-01-19
 dtime = u"2018-01-19"
 # 车次,选择第几趟,0则从上之下依次点击
 order = 0
 ###乘客名
 users = [u"你的名字"]
 ##席位
 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"
 
 def __init__(self):
 self.driver_name = 'chrome'
 self.executable_path = 'chromedriver.exe'
 
 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)
 self.driver.find_by_text(u"登录").click()
 print
 u"等待验证码,自行输入..."
 print("start to login")
 while True:
  if self.driver.url != self.initmy_url:
  sleep(1)
  else:
  break
 print("end to login")
 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
 
 
cities = {'成都': '%u6210%u90FD%2CCDW',
  '重庆': '%u91CD%u5E86%2CCQW',
  '北京': '%u5317%u4EAC%2CBJP',
  '广州': '%u5E7F%u5DDE%2CGZQ',
  '杭州': '%u676D%u5DDE%2CHZH',
  '宜昌': '%u5B9C%u660C%2CYCN',
  '郑州': '%u90D1%u5DDE%2CZZF',
  '深圳': '%u6DF1%u5733%2CSZQ',
  '西安': '%u897F%u5B89%2CXAY',
  '大连': '%u5927%u8FDE%2CDLT',
  '武汉': '%u6B66%u6C49%2CWHN',
  '上海': '%u4E0A%u6D77%2CSHH',
  '南京': '%u5357%u4EAC%2CNJH',
  '合肥': '%u5408%u80A5%2CHFH'}
 
if __name__ == '__main__':
 huoche = huoche()
 huoche.starts = cities["杭州"]
 huoche.ends = cities["上海"]
 huoche.dtime = "2018-02-05"
 huoche.start()

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持服务器之家。

原文链接:http://blog.csdn.net/zqw_4181/article/details/79153323

相关文章

热门资讯

2020微信伤感网名听哭了 让对方看到心疼的伤感网名大全
2020微信伤感网名听哭了 让对方看到心疼的伤感网名大全 2019-12-26
Intellij idea2020永久破解,亲测可用!!!
Intellij idea2020永久破解,亲测可用!!! 2020-07-29
背刺什么意思 网络词语背刺是什么梗
背刺什么意思 网络词语背刺是什么梗 2020-05-22
歪歪漫画vip账号共享2020_yy漫画免费账号密码共享
歪歪漫画vip账号共享2020_yy漫画免费账号密码共享 2020-04-07
苹果12mini价格表官网报价 iPhone12mini全版本价格汇总
苹果12mini价格表官网报价 iPhone12mini全版本价格汇总 2020-11-13
返回顶部