python自动抢票
# -*- coding: utf-8 -*- from splinter.browser import Browser
from time import sleep
import traceback #初始化信息 # 用户名,密码
username = u"用户名"
passwd = u"密码"
# cookies值得自己去找
starts = u"杭州,HZH"
ends = u"黄石,HSN"
# 时间格式2016-03-22
dtime = u"2016-03-22"
# 车次,选择第几趟,0则从上之下依次点击
order = 0
###乘客名,如果是自己,则上面有个链接是自己的,会跳转到个人中心,用index[1]
#如果乘客不是自己,则用index[0]
pa = 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" def login():
#点击登录,从购票页面调到了登录页面
b.find_by_text(u"登录").click()
sleep(3)
#给name为loginUserDTO.user_name附上用户名
#也可以用Id查找的方法b.find_by_id('username').fill(username)
b.fill("loginUserDTO.user_name", username)
sleep(1)
#给name为userDTO.password值
b.fill("userDTO.password", passwd)
sleep(1)
#验证码必须手动输入
print u"等待验证码,自行输入..." #检测页面是否跳转(用户是否输入了验证码并且提交)
while True:
if b.url != initmy_url:
sleep(1)
else:
break def huoche():
global b
b = Browser(driver_name="chrome")
#访问12306
b.visit(ticket_url) #查找带登录的字符串,u是避免中文报错
while b.is_text_present(u"登录"):
sleep(1)
#如果存在调用登录方法
login()
if b.url == initmy_url:
break #当执行完login方法后,登录成功,继续向下执行
try:
print u"购票页面..."
# 跳回购票页面
b.visit(ticket_url) # 加载查询信息
b.cookies.add({"_jc_save_fromStation": starts})
b.cookies.add({"_jc_save_toStation": ends})
b.cookies.add({"_jc_save_fromDate": dtime})
b.reload() sleep(2) count = 0
# 循环点击预订
#order=0则从第一班车开始全部依次预订
if order != 0:
#如果页面没有跳转到,说明没有抢到票,继续抢票
while b.url == ticket_url:
#点击查询进行刷新
b.find_by_text(u"查询").click()
count +=1
print u"循环点击查询... 第 %s 次" % count
sleep(1)
try:
#点击预订的那班车
b.find_by_text(u"预订")[order - 1].click()
except:
print u"还没开始预订"
continue
else:
while b.url == ticket_url:
b.find_by_text(u"查询").click()
count += 1
print u"循环点击查询... 第 %s 次" % count
sleep(1)
try:
#从第一个开始依次预订
for i in b.find_by_text(u"预订"):
i.click()
except:
print u"还没开始预订"
continue
sleep(1)
#若循环结束了,则选择联系人
b.find_by_text(pa)[0].click()
print u"能做的都做了.....不再对浏览器进行任何操作"
except Exception as e:
print(traceback.print_exc()) if __name__ == "__main__":
huoche()
python自动抢票的更多相关文章
- 春运到了,带你用python来抢票回家!
不知不觉,一年一度的春运抢票大幕已经拉开,想快速抢到回家的车票吗?作为程序员,这些技术手段,你一定要知道. 为了让大家更快捷更便利的抢火车票,各种各样的抢票软件应需而生,这类软件大部分都是付费抢票的机 ...
- python+selenium实现自动抢票
使用说明 程序运行开始,需要输入出发地,目的地,出发时间,乘客信息,车次:乘客信息和车次可以输入多个 刚刚开始学习爬虫,selenium仅仅是解放了双手,运行效率不是很高: 程序运行时会打开chrom ...
- 简单的Python 火车抢票程序
当你想查询一下火车票信息的时候,你还在上12306官网吗?或是打开你手机里的APP?下面让我们来用Python写一个命令行版的火车票查看器, 只要在命令行敲一行命令就能获得你想要的火车票信息!如果你刚 ...
- c# 模拟 网页实现12306登陆、自动刷票、自动抢票完全篇
这一篇文章,我将从头到尾教大家使用c#模拟网页面登陆12306网站,自动刷票,选择订票人,到最后一步提交订单.研究过HTTP协议的童鞋们都知道,我们在访问网站时,是有两种方式的,POST和GET方式, ...
- 360自动抢票还不够,几行js代码设置无人值守
360就是牛逼哄哄的...... 但是最近在使用360浏览器抢票的时候还是发现了一些体验不好的地方,比如搞着搞着就退出了登录,有时候能帮你自动登录进去,但是自动登录之后又不会帮你自动开始抢.然后验证码 ...
- 基于selenium+java的12306自动抢票
import java.util.concurrent.TimeUnit; import org.openqa.selenium.By;import org.openqa.selenium.Keys; ...
- python写12306抢票
#!/usr/bin/env python # -*- coding: utf-8 -*- ''' 利用splinter写的一个手动过验证及自动抢票的例子, 大家可以自己扩展或者弄错窗体.web端. ...
- Python 实现的 12306抢票脚本
Python12306抢票脚本 本脚本使用一个类来实现所有代码,大体上分为以下几个模块及其步骤:- 初始化对象属性(在抢票前进行的属性初始化,包括初始化浏览器模拟对象,个人信息等).- 建立模拟浏览器 ...
- python3.7之12306抢票脚本实现
悲催的12306,彻底沦为各路抢票软件的服务提供方.元旦伊始,纯粹12306官网及APP抢票,愈一周的时间,仅到手一张凌晨3:55回家的站票.为远离脑残,无奈选择抢票软件,预购年后返沪车票.BTW,研 ...
随机推荐
- HDU - 4901 The Romantic Hero(dp)
https://vjudge.net/problem/HDU-4901 题意 给n个数,构造两个集合,使第一个集合的异或和等于第二个集合的相与和,且要求第一个集合的元素下标都小于第二个集合的元素下标. ...
- .NET面试题系列(十)委托与事件
委托 有了委托的存在,使得方法可以作为参数传递给另一个方法. int Max(int x,int y) { return x>y?x:y; } int Min(int x,int y) { re ...
- JavaScript之能力与硬件检测[小结]
//检查浏览器种类及其版本号 function checkBrowserVersion(){ var Sys = {}; var ua = navigator.userAgent.toLowerCas ...
- proxysql 系列 ~ 总揽概括
一 简介: proxysql相关知识汇总 二 proxysql 相关报错 1 proxysql 报错 too many connections 分析 proxysql关于连接池的参数 ...
- Struts自定义拦截器&拦截器工作原理
0.拦截器的调用原理: 拦截器是一个继承了序列化接口的普通接口.其工作原理是讲需要被拦截的对象作为参数传到intercept()方法内,在方法内部对此对象进行处理之后再执行原方法.intercept( ...
- Maven入门-运行struts项目进行测试(三)
maven运行struts项目进行测试: 在入门二中已经导入struts的jar包. 此时的pom.xml文件 <project xmlns="http://maven.apache. ...
- oracle建包,函数demo
create table BOOK ( BOOK_ID NUMBER(10), BOOK_NAME VARCHAR2(10) ); create or replace package chen_pac ...
- linux笔记_day06
1.用户:表示符,凭证 2.用户组:表示符 进程也是有属主和属组的 安全上下文(secure context): 用户:UID,/etc/pawwd 组:GID ,/etc/group 影子口令: 用 ...
- python 退出程序的方式
python程序退出方式[sys.exit() os._exit() os.kill() os.popen(...)] 知乎说明 http://www.zhihu.com/question/21187 ...
- 【转】Python介绍
[转]Python介绍 本节内容 Python简史 Python是一门什么样的语言? Python的优点与缺点 Python解释器 一.Python简史 历史背景 在20世纪80年代,IBM和苹果已经 ...