Python 12306抢火车票脚本


Posted in Python onFebruary 07, 2018

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

# -*- 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()

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python多线程结合队列下载百度音乐的方法
Jul 27 Python
Django中的ajax请求
Oct 19 Python
Python分支语句与循环语句应用实例分析
May 07 Python
PyQt5实现简易电子词典
Jun 25 Python
Python 中PyQt5 点击主窗口弹出另一个窗口的实现方法
Jul 04 Python
python实现引用其他路径包里面的模块
Mar 09 Python
python3.6使用SMTP协议发送邮件
May 20 Python
Windows 平台做 Python 开发的最佳组合(推荐)
Jul 27 Python
有关pycharm登录github时有的时候会报错connection reset的问题
Sep 15 Python
python3中编码获取网页的实例方法
Nov 16 Python
python3实现飞机大战
Nov 29 Python
Python代码,能玩30多款童年游戏!这些有几个是你玩过的
Apr 27 Python
django限制匿名用户访问及重定向的方法实例
Feb 07 #Python
Python用 KNN 进行验证码识别的实现方法
Feb 06 #Python
Python实现的径向基(RBF)神经网络示例
Feb 06 #Python
python实现淘宝秒杀聚划算抢购自动提醒源码
Jun 23 #Python
初探TensorFLow从文件读取图片的四种方式
Feb 06 #Python
用十张图详解TensorFlow数据读取机制(附代码)
Feb 06 #Python
Python实现matplotlib显示中文的方法详解
Feb 06 #Python
You might like
在php MYSQL中插入当前时间
2008/04/06 PHP
PHP判断搜索引擎蜘蛛并自动记忆到文件的代码
2012/02/04 PHP
php服务器的系统详解
2019/10/12 PHP
Yii实现微信公众号场景二维码的方法实例
2020/08/30 PHP
THREE.JS入门教程(2)着色器-上
2013/01/24 Javascript
jquery实现网站超链接和图片提示效果
2013/03/21 Javascript
JS+flash实现chrome和ie浏览器下同时可以复制粘贴
2013/09/22 Javascript
JavaScript中的正则表达式简明总结
2014/04/04 Javascript
JS简单计算器实例
2015/01/20 Javascript
js实现滑动触屏事件监听的方法
2015/05/05 Javascript
基于jQuery实现中英文切换导航条效果
2016/09/18 Javascript
javascript实现获取指定精度的上传文件的大小简单实例
2016/10/25 Javascript
深入了解JavaScript的逻辑运算符(与、或)
2016/12/20 Javascript
express框架实现基于Websocket建立的简易聊天室
2017/08/10 Javascript
js实现简易聊天对话框
2017/08/17 Javascript
weui框架实现上传、预览和删除图片功能代码
2017/08/24 Javascript
React Native使用Modal自定义分享界面的示例代码
2017/10/31 Javascript
vue.js 嵌套循环、if判断、动态删除的实例
2018/03/07 Javascript
微信小程序画布圆形进度条显示效果
2020/11/17 Javascript
angular中如何绑定iframe中src的方法
2019/02/01 Javascript
微信小程序开发之map地图组件定位并手动修改位置偏差
2019/08/17 Javascript
VUE渲染后端返回含有script标签的html字符串示例
2019/10/28 Javascript
Python实现从URL地址提取文件名的方法
2015/05/15 Python
python学习笔记之调用eval函数出现invalid syntax错误问题
2015/10/18 Python
Python嵌套列表转一维的方法(压平嵌套列表)
2018/07/03 Python
CSS3美化表单控件全集
2016/06/29 HTML / CSS
HTML5 文件上传下载的实例代码
2017/07/03 HTML / CSS
Ann Taylor官方网站:美国最大的女性产品制造商之一
2016/09/14 全球购物
美国知名的时尚购物网站:Anthropologie
2016/12/22 全球购物
英国珠宝和手表专家:Pleasance & Harper
2020/10/21 全球购物
最新大学职业规划书范文
2013/12/30 职场文书
校园环保标语
2014/06/13 职场文书
西安兵马俑导游词
2015/02/02 职场文书
小学教师年度个人总结
2015/02/05 职场文书
清明扫墓感想
2015/08/11 职场文书
Python基础之教你怎么在M1系统上使用pandas
2021/05/08 Python