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,研 ...
随机推荐
- LaTeX简历模板
%# -*- coding:utf-8 -*- %% start of file `template_en.tex'. %% Copyright 2006-1008 Xavier Danaux (xd ...
- WebStrom设置默认浏览器
- 第三次实验计算分段函数 第四次计算分段函数和循环NEW 第五次分支+循环加强版 实验报告
一.实验题目,设计思路,实现方法 第四次分支+循环 加强版 (2-2计算个人所得税,2-7 装睡,2-8计算天数) 设计思路:2-2 用if-else的语句,与计算分段函数的题类似的做法:2-7 运用 ...
- luogu P2303 [SDOi2012]Longge的问题
传送门 \[\sum_{i=1}^{n}\gcd(i,n)\] 考虑枚举所有可能的gcd,可以发现这一定是\(n\)的约数,当\(\gcd(i,n)=x\)时,\(gcd(\frac{i}{x},\f ...
- vue学习之用 Vue.js + Vue Router 创建单页应用的几个步骤
通过vue学习一:新建或打开vue项目,创建好项目后,接下来的操作为: src目录重新规划——>新建几个页面——>配置这几个页面的路由——>给根实例注入路由配置 src目录重整 在项 ...
- block循环引用
block里边会有循环引用的风险,它可能对外部一个变量出现强引用,所以需要判断里边是否有循环引用,通过dealloc方法(销毁当前控制器.或销毁要测试的变量),判断是否循环引用.主要在block 里边 ...
- 【Shell】带颜色输出(白底x色)
echo -e "\033[31mHello World.\033[0m" 红色31m 绿色32m 黄色33m 蓝色34m 黑色30m 白色37m 紫色35m 深绿色36m
- 字符串cookies转字典 scrapy使用。
配置文件 DOWNLOADER_MIDDLEWARES = { 'weibo.middlewares.CookiesMiddleware': 543, } 中间件内容 class CookiesMid ...
- jq常用功能操作
//表示所有选中的商品 var $goods=$(".goods:checked"); var arr=[]; for(i=0;i<$goods.length;i++){ a ...
- nginx常见异常分析
1.nginx不转发消息头header问题 proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_ ...