python+splinter自动刷新抢票功能


Posted in Python onSeptember 25, 2018

抢票脚本,python +splinter自动刷新抢票,可以成功抢到(依赖自己的网络环境太厉害,还有机器的好坏),但是感觉不是很完美。

有大神请指导完善一下(或者有没有别的好点的思路),不胜感谢。

# -*- coding: utf-8 -*-
"""
@author: liuyw
"""
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"xxx@qq.com"
 passwd = u"xxxx"
 # cookies值得自己去找, 下面两个分别是上海, 太原南
 starts = u"%u4E0A%u6D77%2CSHH"
 ends = u"%u592A%u539F%2CTYV"
 # 时间格式2018-01-19
 dtime = u"2018-01-19"
 # 车次,选择第几趟,0则从上之下依次点击
 order = 0
 ###乘客名
 users = [u"xxx",u"xxx"]
 ##席位
 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"
 login_url='https://kyfw.12306.cn/otn/login/init'
 def __init__(self):
  self.driver_name='chrome'
  self.executable_path='/usr/local/bin/chromedriver'


 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)
  print u"等待验证码,自行输入..."
  while True:
   if self.driver.url != self.initmy_url:
    sleep(1)
   else:
    break

 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


if __name__ == '__main__':
 huoche=huoche()
 huoche.start()

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

Python 相关文章推荐
pycharm 使用心得(一)安装和首次使用
Jun 05 Python
跟老齐学Python之开始真正编程
Sep 12 Python
Python实现的tab文件操作类分享
Nov 20 Python
python基于twisted框架编写简单聊天室
Jan 02 Python
Python之批量创建文件的实例讲解
May 10 Python
Python定时任务sched模块用法示例
Jul 16 Python
在Python文件中指定Python解释器的方法
Feb 18 Python
Python中单线程、多线程和多进程的效率对比实验实例
May 14 Python
基于python+selenium的二次封装的实现
Jan 06 Python
利用Python裁切tiff图像且读取tiff,shp文件的实例
Mar 10 Python
Jupyter Notebook打开任意文件夹操作
Apr 14 Python
如何在python中执行另一个py文件
Apr 30 Python
python+Splinter实现12306抢票功能
Sep 25 #Python
一百多行python代码实现抢票助手
Sep 25 #Python
python爬虫之自动登录与验证码识别
Jun 15 #Python
python使用matplotlib模块绘制多条折线图、散点图
Apr 26 #Python
python绘制多个曲线的折线图
Mar 23 #Python
python使用Matplotlib绘制分段函数
Sep 25 #Python
python使用Matplotlib画饼图
Sep 25 #Python
You might like
非洲第一个咖啡超凡杯大赛承办国—卢旺达的咖啡怎么样
2021/03/03 咖啡文化
详解WordPress中给链接添加查询字符串的方法
2015/12/18 PHP
PHP使用Session实现上传进度功能详解
2019/08/06 PHP
jquery 输入框数字限制插件
2009/11/10 Javascript
Document对象内容集合(比较全)
2010/09/06 Javascript
一个可拖拽列宽表格实例演示
2012/11/26 Javascript
JavaScript中如何通过arguments对象实现对象的重载
2014/05/12 Javascript
JQuery中使文本框获得焦点的方法实例分析
2015/02/28 Javascript
js实现浏览本地文件并显示扩展名的方法
2015/08/17 Javascript
JS实现动态生成表格并提交表格数据向后端
2020/11/25 Javascript
d3.js实现简单的网络拓扑图实例代码
2016/11/06 Javascript
详解ionic本地相册、拍照、裁剪、上传(单图完全版)
2017/10/10 Javascript
原生javascript AJAX 三级联动的实现代码
2018/05/04 Javascript
深入浅析Vue 中 ref 的使用
2019/04/29 Javascript
vue 实现 rem 布局或vw 布局的方法
2019/11/13 Javascript
Node如何后台数据库使用增删改查功能
2019/11/21 Javascript
Pyramid添加Middleware的方法实例
2013/11/27 Python
对python中raw_input()和input()的用法详解
2018/04/22 Python
python 实现读取一个excel多个sheet表并合并的方法
2019/02/12 Python
python实现多线程端口扫描
2019/08/31 Python
基于python的BP神经网络及异或实现过程解析
2019/09/30 Python
纯CSS打造(无图像无js)的非常流行的讲话(语音)气泡效果
2012/12/28 HTML / CSS
CSS实现限制字数功能当对象内文本溢出时显示省略标记
2014/08/20 HTML / CSS
缓解脚、腿和背部疼痛:Z-CoiL鞋
2019/03/12 全球购物
GafasWorld西班牙:购买太阳镜、眼镜和隐形眼镜
2019/09/08 全球购物
中科方德软件测试面试题
2016/04/21 面试题
家长给孩子的表扬信
2014/01/17 职场文书
高中生活自我鉴定
2014/01/18 职场文书
基本公共卫生服务健康教育工作方案
2014/05/22 职场文书
县长“四风”对照检查材料思想汇报
2014/10/05 职场文书
工作作风整顿个人剖析材料
2014/10/11 职场文书
超市工作总结范文2014
2014/12/19 职场文书
平凡的世界读书笔记
2015/06/25 职场文书
nginx location 带斜杠【 / 】与不带的区别
2022/04/13 Servers
Python万能模板案例之matplotlib绘制直方图的基本配置
2022/04/13 Python
JS精髓原型链继承及构造函数继承问题纠正
2022/06/16 Javascript