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开发的单词频率统计工具wordsworth使用方法
Jun 25 Python
python中的多重继承实例讲解
Sep 28 Python
python编写暴力破解FTP密码小工具
Nov 19 Python
python通过exifread模块获得图片exif信息的方法
Mar 16 Python
Python中处理字符串之isalpha()方法的使用
May 18 Python
python中将\\uxxxx转换为Unicode字符串的方法
Sep 06 Python
python 高效去重复 支持GB级别大文件的示例代码
Nov 08 Python
python如何爬取网站数据并进行数据可视化
Jul 08 Python
python 将字符串中的数字相加求和的实现
Jul 18 Python
Python绘制股票移动均线的实例
Aug 24 Python
使用Django实现把两个模型类的数据聚合在一起
Mar 28 Python
python list的index()和find()的实现
Nov 16 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实现的mongodb操作类实例
2015/04/03 PHP
php实现遍历多维数组的方法
2015/11/25 PHP
PHP创建/删除/复制文件夹、文件
2016/05/03 PHP
List the Stored Procedures in a SQL Server database
2007/06/20 Javascript
类似CSDN图片切换效果脚本
2009/09/17 Javascript
javascript 循环调用示例介绍
2013/11/20 Javascript
JavaScript重载函数实例剖析
2016/05/13 Javascript
webpack中引用jquery的简单实现
2016/06/08 Javascript
浅谈JavaScript 中有关时间对象的方法
2016/08/15 Javascript
原生js代码实现图片放大境效果
2016/10/30 Javascript
jQuery基于xml格式数据实现模糊查询及分页功能的方法
2016/12/25 Javascript
分分钟学会vue中vuex的应用(入门教程)
2017/09/14 Javascript
浅谈Vue.nextTick 的实现方法
2017/10/25 Javascript
Angular实现下拉框模糊查询功能示例
2018/01/03 Javascript
vue如何根据网站路由判断页面主题色详解
2018/11/02 Javascript
详解express使用vue-router的history踩坑
2019/06/05 Javascript
Node.js之删除文件夹(含递归删除)代码实例
2019/09/09 Javascript
es6函数之箭头函数用法实例详解
2020/04/25 Javascript
Vue路由 重定向和别名的区别说明
2020/09/09 Javascript
python机器学习之随机森林(七)
2018/03/26 Python
python+opencv 读取文件夹下的所有图像并批量保存ROI的方法
2019/01/10 Python
Python实现个人微信号自动监控告警的示例
2019/07/03 Python
Django框架自定义模型管理器与元选项用法分析
2019/07/22 Python
python BlockingScheduler定时任务及其他方式的实现
2019/09/19 Python
python读取hdfs上的parquet文件方式
2020/06/06 Python
python爬虫把url链接编码成gbk2312格式过程解析
2020/06/08 Python
GAP美国官网:美国休闲时尚品牌
2016/08/26 全球购物
Giglio俄罗斯奢侈品购物网:男士、女士、儿童高级时装
2018/07/27 全球购物
美国户外运动商店:Sun & Ski
2018/08/23 全球购物
北美主要的汽车零部件零售商:AutoShack.com
2019/02/23 全球购物
Cecil Mode法国在线商店:女性时尚
2021/01/08 全球购物
平面设计专业大学生职业规划书
2014/03/12 职场文书
县政府办公室领导班子个人对照检查材料
2014/09/16 职场文书
机动车交通事故协议书
2015/01/29 职场文书
高三生物教学反思
2016/02/22 职场文书
python使用PySimpleGUI设置进度条及控件使用
2021/06/10 Python