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 相关文章推荐
Linux上安装Python的PIL和Pillow库处理图片的实例教程
Jun 23 Python
Python的Tornado框架实现图片上传及图片大小修改功能
Jun 30 Python
python日志记录模块实例及改进
Feb 12 Python
Django原生sql也能使用Paginator分页的示例代码
Nov 15 Python
Python3中条件控制、循环与函数的简易教程
Nov 21 Python
Python3学习urllib的使用方法示例
Nov 29 Python
Win10下python3.5和python2.7环境变量配置教程
Sep 18 Python
python对html过滤处理的方法
Oct 21 Python
Python2和Python3之间的str处理方式导致乱码的讲解
Jan 03 Python
Django 对象关系映射(ORM)源码详解
Aug 06 Python
使用ITK-SNAP进行抠图操作并保存mask的实例
Jul 01 Python
python编程项目中线上问题排查与解决
Nov 01 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
全国FM电台频率大全 - 9 上海市
2020/03/11 无线电
PHP编程网上资源导航
2006/10/09 PHP
基于PHP常用字符串的总结(待续)
2013/06/07 PHP
PHP Ajax实现无刷新附件上传
2016/08/17 PHP
详解php中 === 的使用
2016/10/24 PHP
jquery 分页控件实现代码
2009/11/30 Javascript
如何使用jquery控制CSS样式,并且取消Css样式(如背景色,有实例)
2013/07/09 Javascript
node.js中的fs.readFile方法使用说明
2014/12/15 Javascript
浅谈Javascript Base64 加密解密
2014/12/28 Javascript
JQuery判断radio(单选框)是否选中和获取选中值方法总结
2015/04/15 Javascript
bootstrap选项卡使用方法解析
2017/01/11 Javascript
vuejs 动态添加input框的实例讲解
2018/08/24 Javascript
JS Object.preventExtensions(),Object.seal()与Object.freeze()用法实例分析
2018/08/25 Javascript
使用Node.js写一个代码生成器的方法步骤
2019/05/10 Javascript
Vue 3.0双向绑定原理的实现方法
2019/10/23 Javascript
vue 父组件通过$refs获取子组件的值和方法详解
2019/11/07 Javascript
深入讲解Python函数中参数的使用及默认参数的陷阱
2016/03/13 Python
Python实现简单的四则运算计算器
2016/11/02 Python
python:socket传输大文件示例
2017/01/18 Python
使用python编写监听端
2018/04/12 Python
python 读取文本文件的行数据,文件.splitlines()的方法
2018/07/12 Python
pandas删除行删除列增加行增加列的实现
2019/07/06 Python
使用python实现数组、链表、队列、栈的方法
2019/12/20 Python
卡西欧B级产品官方网站:Casio Outlet
2018/05/22 全球购物
英国最大的宝石首饰超市:QP Jewellers
2018/09/23 全球购物
婚礼证婚人证婚词
2014/01/08 职场文书
三爱活动实施方案
2014/03/19 职场文书
《三顾茅庐》教学反思
2014/04/10 职场文书
小学数学课后反思
2014/04/23 职场文书
优秀本科毕业生自荐信
2014/07/04 职场文书
2014应届本科生自我评价
2014/09/13 职场文书
给医院的感谢信
2015/01/21 职场文书
小升初自荐信怎么写
2015/03/26 职场文书
2016年学校综治宣传月活动总结
2016/03/16 职场文书
大学迎新生的欢迎词
2019/06/25 职场文书
CSS filter 有什么神奇用途
2021/05/25 HTML / CSS