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发送和接收邮件
Sep 27 Python
浅谈终端直接执行py文件,不需要python命令
Jan 23 Python
Python正确重载运算符的方法示例详解
Aug 27 Python
Python类装饰器实现方法详解
Dec 21 Python
Python实现字符串匹配的KMP算法
Apr 04 Python
PyTorch搭建一维线性回归模型(二)
May 22 Python
python正则爬取某段子网站前20页段子(request库)过程解析
Aug 10 Python
用Python批量把文件复制到另一个文件夹的实现方法
Aug 16 Python
深入浅析Python 中的sklearn模型选择
Oct 12 Python
Python: tkinter窗口屏幕居中,设置窗口最大,最小尺寸实例
Mar 04 Python
python3 中使用urllib问题以及urllib详解
Aug 03 Python
Python绘制散乱的点构成的图的方法
Apr 21 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
层叠菜单的动态生成
2006/10/09 PHP
php 团购折扣计算公式
2011/11/24 PHP
php中XMLHttpRequest(Ajax)不能设置自定义的Referer的解决方法
2011/11/26 PHP
php压缩HTML函数轻松实现压缩html/js/Css及注意事项
2013/01/27 PHP
PHP、Java des加密解密实例
2015/04/27 PHP
浅谈使用PHP开发微信支付的流程
2015/10/04 PHP
详解WordPress中过滤链接与过滤SQL语句的方法
2015/12/18 PHP
laravel 修改记住我功能的cookie保存时间的方法
2019/10/14 PHP
20个非常棒的Jquery实用工具 国外文章
2010/01/01 Javascript
firefox下jQuery UI Autocomplete 1.8.*中文输入修正方法
2012/09/19 Javascript
Javascript图像处理—亮度对比度应用案例
2013/01/03 Javascript
jquery 动态创建元素的方式介绍及应用
2013/04/21 Javascript
javascript实现json页面分页实例代码
2014/02/20 Javascript
Angularjs制作简单的路由功能demo
2015/04/14 Javascript
Nodejs获取网络数据并生成Excel表格
2020/03/31 NodeJs
JavaScript基本类型值-Number类型
2017/02/24 Javascript
基于JavaScript实现新增内容滚动播放效果附完整代码
2017/08/24 Javascript
前端vue-cli项目中使用img图片和background背景图的几种方法
2019/11/13 Javascript
taro 实现购物车逻辑的实例代码
2020/06/05 Javascript
SQLite3中文编码 Python的实现
2017/01/11 Python
解决出现Incorrect integer value: '' for column 'id' at row 1的问题
2017/10/29 Python
3个用于数据科学的顶级Python库
2018/09/29 Python
python解析多层json操作示例
2019/12/30 Python
解决Python发送Http请求时,中文乱码的问题
2020/04/30 Python
matplotlib 多个图像共用一个colorbar的实现示例
2020/09/10 Python
如何基于Python实现word文档重新排版
2020/09/29 Python
Python读取图像并显示灰度图的实现
2020/12/01 Python
英国著名的茶叶品牌:Whittard of Chelsea
2016/09/22 全球购物
Agoda西班牙:全球特价酒店预订
2017/06/03 全球购物
韩国最大的购物网站:Gmarket
2019/06/20 全球购物
保安员岗位职责
2013/11/17 职场文书
高中自我评价分享
2013/12/05 职场文书
2014年财务工作总结范文
2014/11/11 职场文书
先进人物事迹材料
2014/12/29 职场文书
任长霞观后感
2015/06/16 职场文书
pycharm无法安装cv2模块问题
2022/05/20 Python