市场上很多火车票抢票软件大家应该非常熟悉,但很少有人研究具体是怎么实现的,所以觉得很神秘,其实很简单。下面使用Python模拟抢票程序,给大家揭秘抢票到底是怎么回事。

该代码仅供参考,主要用于大家沟通交流,禁止用于商业用途。

具体代码如下,可以修改成自己的12306用户名账号:

# -*- coding: utf-8 -*-

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"

starts = u"%u4E0A%u6D77%2CSHH"

ends = u"%u592A%u539F%2CTYV"

dtime = u"2018-01-19"

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"

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"购票页面开始..."

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"循环点击查询..." % 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"循环点击查询..." % 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抢票犯法吗_火车票抢票python代码公开揭秘!相关推荐

  1. python学习:12306火车票抢票代码公开揭秘

    火车票抢票代码公开揭秘 市场上很多火车票抢票软件大家应该非常熟悉,但很少有人研究具体是怎么实现的,所以觉得很神秘,其实很简单.下面使用Python模拟抢票程序,给大家揭秘抢票到底是怎么回事. 该代码仅 ...

  2. Python爬虫入门(一)火车票余票实时提醒

    Python爬虫入门(一)火车票余票实时提醒 火车票余票实时提醒 最近开始学习爬虫了,参考的教材是<Python网络爬虫从入门到精通>吕云翔,张扬,韩延刚等,机械工业出版社.本篇博客是实战 ...

  3. php写抢票脚本,火车票抢票python代码公开揭秘!

    市场上很多火车票抢票软件大家应该非常熟悉,但很少有人研究具体是怎么实现的,所以觉得很神秘,其实很简单.下面使用Python模拟抢票程序,给大家揭秘抢票到底是怎么回事. 该代码仅供参考,主要用于大家沟通 ...

  4. 基于python的火车票订票系统的设计与实现_火车票订票系统的开发与设计

    火车票订票系统的开发与设计 一.需求分析 1 .功能需求 本程序共有六大功能供客户使用  添加车次信息  车次信息查询  预订车票  车票信息更新  系统推荐车次  信息保存查询 2 .非 ...

  5. 学python去哪做项目_有哪些适合 Python 刚入门者去做的项目?

    学软件开发的都知道实战项目对于学好一门语言是很重要的.在这里可以向大家推荐几个Python实战项目 项目1.Python 图片转字符画 本课程用 50 行 Python 代码完成图片转字符画小工具.通 ...

  6. python实现键盘自动输入_人生苦短我用Python——模拟鼠标点击和键盘输入的操作...

    通过Python可以模拟鼠标点击和键盘输入的操作,进而可以实现一些比较有趣的功能,例如游戏挂机.自动发消息等. 本文以自动发消息为例,实现该功能,通过该代码可以自动往QQ.微信发送任意内容.首先考虑想 ...

  7. python科学计算教程视频_【P14】Python科学计算与图形渲染库视频课程视频教程 it教程...

    Python视频教程名称: Python科学计算与图形渲染库视频课程视频教程 Python视频教程 [IT视频教程网-www.itspjc.com] it教程 6 T6 ^9 L+ E4 C, }0 ...

  8. 趣学python教孩子学编程_《趣学Python——教孩子学编程》学习笔记第1-3章

    第1章 Python不是大蟒蛇 1.1 关于计算机语言 计算机程序是一组让计算机执行某种动作的指令.软件就是计算机程序的集合. 一种编程语言就是一种特定的与计算机交谈的方式,这种方式使用计算机和人都能 ...

  9. python 鱼c工作室作业_#鱼C工作室Python作业#图解python百度云

    最好的python视频教程谁有 我这里有python全套高清教学视频,非常适合新手小白,真实分享,望采纳点赞. python 网盘 python视频教程从入门到精通 有提取码:提取码:8ste 求一个 ...

最新文章

  1. canvas之三:绘制弧和圆
  2. c语言程序二级考试题,2016年计算机二级考试C语言程序设计真题
  3. Python报错:UnicodeDecodeError:‘ascii‘ codec can‘t decode byte 0xe8 in position
  4. 210127阶段三进程间通信-消息队列
  5. R语言学习(10)获取数据
  6. 白盒-CNN纹理深度可视化: 使用MIT Place 场景预训练模型
  7. android怎样添加图片锐化功能,如何在android处理图片(图像二值化锐化转换格式).doc...
  8. 11.14 模拟:总结
  9. 一键发布到Maven Central的方法
  10. 【CodeForces - 827A】String Reconstruction(并查集合并区间,思维)
  11. Codeforces Zepto Code Rush 2014 -C - Dungeons and Candies
  12. docker-1 初识docker
  13. java hmget 最大值,【Redis】基本数据类型及命令操作(超详细)
  14. Android Studio GPU/CPU/Network/Memory monitor使用
  15. 一键备份服务器文件夹权限,教大家一键设置局域网共享文件夹权限
  16. 路由器连接、静态路由配置实例
  17. 人工神经网络翻译的优点,神经网络机器翻译技术
  18. 洛谷试炼场---提高历练地2
  19. STM32移植MPU6050/9250的DMP官方库(motion_driver_6.12)修改移植 DMP简单使用教程
  20. 入门电机系列之2驱动器

热门文章

  1. 【PCL】Win10+VS2015+PCL_1.8.0配置
  2. 阿里云备案服务码怎么申请?
  3. AI 编程“神器”国产化!华为耗时 8 个月,这个能用中文生成代码的模型诞生了...
  4. STM32-cubemx-DMA-UART-笔记(振兴中华)
  5. 加拿大皇家学会院士李明:人工智能赋能个体化癌症免疫治疗
  6. VMware NSX-网络虚拟化基础知识整理
  7. java方法怎么声明_【Java方法的声明和使用】
  8. 网络管理 三大通信模式之桥接模式
  9. 对比自行车,看手机的山寨时代
  10. 数据库第三讲模拟练习题