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()
时间: 2024-10-19 01:04:35

python自动抢票的相关文章

春运到了,带你用python来抢票回家!

不知不觉,一年一度的春运抢票大幕已经拉开,想快速抢到回家的车票吗?作为程序员,这些技术手段,你一定要知道. 为了让大家更快捷更便利的抢火车票,各种各样的抢票软件应需而生,这类软件大部分都是付费抢票的机制. 作为程序员,如何用技术手段抢到回家的票?来看看用 Python 写的抢票脚本. 手把手教你用 Python 抢票回家过年 环境介绍 windows 8.1python3.6.1firefox插件 geckodriver.exe 操作步骤 引入要的模块 from selenium import

c# 模拟 网页实现12306登陆、自动刷票、自动抢票完全篇(转)

这一篇文章,我将从头到尾教大家使用c#模拟网页面登陆12306网站,自动刷票,选择订票人,到最后一步提交订单.研究过HTTP协议的童鞋们都 知道,我们在访问网站时,是有两种方式的,POST和GET方式,HTTP协议是TCP/IP的一部分,有兴趣的可以使用Socket通讯可以模拟出 HTTP的访问机制.我们再说POST和GET方式,在访问一个页面时,浏览器会提交一个本地cookie提交到网站服务器,cookie的作用可以是保 存我们登陆网站成功后取得的一串钥匙,也可以是其他的一些重要的信息.这是至

Python3.6实现12306火车票自动抢票,附源码

Python(发音:英[?pa?θ?n],美[?pa?θɑ:n]),是一种面向对象.直译式电脑编程语言,也是一种功能强大的通用型语言,已经具有近二十年的发展历史,成熟且稳定.它包含了一组完善而且容易理解的标准库,能够轻松完成很多常见的任务.它的语法非常简捷和清晰,与其它大多数程序设计语言不一样,它使用缩进来定义语句. Python支持命令式程序设计.面向对象程序设计.函数式编程.面向切面编程.泛型编程多种编程范式.与Scheme.Ruby.Perl.Tcl等动态语言一样,Python具备垃圾回收

[转]简单的Python 火车抢票程序

当你想查询一下火车票信息的时候,你还在上12306官网吗?或是打开你手机里的APP?下面让我们来用Python写一个命令行版的火车票查看器, 只要在命令行敲一行命令就能获得你想要的火车票信息!如果你刚掌握了Python基础,这将是个不错的小练习. 接口设计 一个应用写出来最终是要给人使用的,哪怕只是给你自己使用.所以,首先应该想想你希望怎么使用它?让我们先给这个小应用起个名字吧,既然及查询票务信息,那就叫它tickets好了.我们希望用户只要输入出发站,到达站以及日期就让就能获得想要的信息,所以

360自动抢票还不够,几行js代码设置无人值守

360就是牛逼哄哄的...... 但是最近在使用360浏览器抢票的时候还是发现了一些体验不好的地方,比如搞着搞着就退出了登录,有时候能帮你自动登录进去,但是自动登录之后又不会帮你自动开始抢.然后验证码几次失败之后 流程就停住了, 所以必须的有人看守. 由于360浏览器是使用Chrome内核 而且提供了调试功能,所以我们写一小段js让360达到无人值守抢票的目的 setInterval(function () { if ($('.username').html() != undefined &&am

基于selenium+java的12306自动抢票

import java.util.concurrent.TimeUnit; import org.openqa.selenium.By;import org.openqa.selenium.Keys;import org.openqa.selenium.WebDriver;import org.openqa.selenium.WebElement;import org.openqa.selenium.chrome.ChromeDriver;import org.openqa.selenium.i

python3.7之12306抢票脚本实现

悲催的12306,彻底沦为各路抢票软件的服务提供方.元旦伊始,纯粹12306官网及APP抢票,愈一周的时间,仅到手一张凌晨3:55回家的站票.为远离脑残,无奈选择抢票软件,预购年后返沪车票.BTW,研究一下抢票脚本的实现思路,参考:(https://juejin.im/post/5b116504f265da6e0636cbc2 - Python3.6实现12306火车票自动抢票). 在原作者之上,对执行代码做了以下处理: 删除短信/邮件通知功能 删除控制台输入功能 新增登陆cookie的刷新 新

神助攻的抢票软件能否成为真正的惠民神器?

近日,一则"自今年6月起12306只能本人购票"的谣言在网上广泛流传,并引起网友的热议与担忧,随后铁路部门发声辟谣,证实此事纯属谣言,作为中国铁路客户服务中心推出的唯一官方购票软件,大部分人对于铁路12306是"恨不起,爱不得".不可否认,自2011年全国铁路推出网络售票以来,铁路12306确实为用户提供了全新的购票体验,然而,节假日"购票难.一票难求"等问题仍然是每个人心中挥之不去的痛. 眼瞅着高考结束,暑假临近,铁路部门又将进入暑运阶段,并再

12306 分流抢票 纯净绿色版

全程自动抢票,云打码自动识别验证码,多线程秒单.稳定捡漏,支持多天.多车次.短信提醒.??12306Bypass,12306分流抢票软件,完全免费的12306抢票软件,功能强易使用,全程自动抢票,云打码自动识别验证码,多线程秒单.稳定捡漏,支持多天.多车次.多席别.多乘客.短信邮件提醒等功能. ?2018年春运即将开启,根据火车票预售期为30天的规定,今天起,2018春运火车票正式发售,现在就可以购买2月1日(农历腊月十六),即春运首日的火车票了!1月17日可以购买除夕(2月15日)当天的火车票