ticket.py

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

"""

@author: aiyou

"""

from splinter.browser import Browser

from time import sleep

import traceback

import time, sysclass ticket(object):

"""docstring for 12306抢票"""

driver_name = ''

executable_path = ''

# 用户名,密码

username = u"153****1009"

passwd = u"*******"

# 车次,选择第几趟,0则从上之下依次点击

order = 1

###乘客名

users = [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"

#需要下载chromedriver

def __init__(self):

self.driver_name = 'chrome'

self.executable_path = 'D:\Chrome Driver\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(1900, 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:

try:

self.driver.find_by_text(u"查询").click()

except Exception as e:

continue

count += 1

#根据td的id获取节点以判断是否有票 id需要手工获取

isTicketElement = self.driver.find_by_id("YW_490000502609")

if len(isTicketElement) == 0:

print("网络错误")

continue

print(u"循环查询... 第 %s 次,还是木有票" % count)

isTicket = self.driver.find_by_id("YW_490000502609")._element.text

sleep(30)

# isTicket = "--" or isTicket = "无" 均是指无相应席位的余票

if isTicket == "无":

continue

# sleep(1)

try:

self.driver.find_by_text(u"预订")[self.order - 1].click()

continue

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

isTicket = self.driver.find_by_id("YW_490000502609")

print(isTicket)

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()

#seatType_1 选择席位 略

print(u"提交订单...")

sleep(1)

#选择席别、票种示例

#self.driver.find_by_xpath('//select[@id="seatType_1"]/option[@value="0"]')._element.click()

# 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)

#需要获取相应站点的cookies

cities = {'青岛': '%u9752%u5C9B%2CQDK',

'临沂': '%u4E34%u6C82%2CLVK'}

if __name__ == '__main__':

ticket = ticket()

ticket.starts = cities['青岛']

ticket.ends = cities['临沂']

ticket.dtime = "2018-02-13"

ticket.start()

计算机编程购票代码,12306自动购票脚本相关推荐

  1. java + Selenium实现12306自动购票

    为什么搞这个东西?[java + Selenium实现12306自动购票, 余票监测] 1.主要是12306是爬虫界的一个分水岭,所以我一直想玩12306[本次的实现并非真正意义上的破解12306实现 ...

  2. 计算机毕业设计之仿12306火车票购票平台

    1 简介 今天向大家介绍一个帮助往届学生完成的毕业设计项目,计算机毕业设计之仿12306火车票购票平台. 计算机毕业生设计,课程设计需要帮助的可以找我 2 设计概要 21世纪是信息化时代,随着信息技术 ...

  3. 爬虫日常-12306自动购票程序

    文章目录 前言 页面分析 代码设计 前言 hello兄弟们,最近在钻研新鲜知识,一不留神没想起来更新.今天我们顺着前面几篇文章完整的写出一篇12306的自动购票软件. 首先把我们已经写完的前期步骤代码 ...

  4. 28. 实战:基于selenium实现12306自动购票

    目录 前言 目的 思路 代码实现 1. 进入登录界面,输入账号密码 2. 点击登录按钮,完成滑块验证 3. 在个人中心点击购票,跳转 4. 输入出发地.目的地,从控制台输入得到 5. 文本框输入出发日 ...

  5. 爬虫练习-12306自动购票升级版

    文章目录 前言 代码更新 前言 hello兄弟们,偷懒归来了.别问为啥这么久没更,问就是失踪了 最近一直在学习Django以及爬虫进阶之类的知识,加上快期末了,一直没有想起来自己还有一个账号没有更新, ...

  6. 12306自动购票 ,抓包分析

    我是在文本编辑工具里写的,然后复制到CSDN格式有点乱,你们可以粘贴到文本编辑工具中慢慢分析 9 首页:   https://kyfw.12306.cn/otn/login/init 12 没有参数 ...

  7. Python3,3行代码,自动为脚本生成命令行,我默默的收藏了。

    为python脚本生成命令行 1.引言 2.常规方法 3.Fire模块 3.1 模块介绍 3.2 代码示例 3.2.1 参数替换 3.2.2 类支持 3.2.3 代码示例 4.总结 1.引言 小屌丝: ...

  8. python12306刷票脚本_python+splinter实现12306网站刷票并自动购票流程

    通过python+splinter,实现在12306网站刷票并自动购票流程(无法自动识别验证码). 此类程序只是提高了12306网站的 刷新频率(默认自动查询的刷新频率为5秒).对于学习splinte ...

  9. 快过年了,Python实现12306查票以及自动购票....

    嗨害大家好鸭!我是小熊猫~ 明天就是2023年啦~ 还有谁像我小熊猫一样没有回家的? 这次康康能不能12306抢票回家!!! Python实现12306查票以及自动购票 [代码来源]: 青灯教育-自游 ...

最新文章

  1. Rsession: R sessions wrapping for Java
  2. 企业如何快速应对市场环境的不断变化
  3. matlab第七章符号对象,MATLAB语言:第七章 MATLAB符号计算
  4. Unity中国张俊波:Unity的国际化、本土化、全球化 | 2019WISE超级进化者大会
  5. vsan主机高级优化参数配置
  6. c语言用h指针n个数求和,C语言程序经典示例—-(20)寻找指定元素的指针
  7. 服务器哪种系统最好,云服务器哪种系统好用
  8. Nokia Imaging SDK滤镜使用入门
  9. 【bzoj1194】 HNOI2006—潘多拉的盒子
  10. qsort和sort的区别
  11. SM4算法java代码实现
  12. 安卓天天练练(五)CompoundButton
  13. 冬季无锡旅游攻略,无锡太湖、鼋头渚之游小记!!!!
  14. Codeforces965—A:Paper Airplanes(思维)
  15. 下载open jdk 和阿里Alibaba Dragonwell (开源open JDK)
  16. 水香木鱼书写PPT总结
  17. 租用服务器一年价格_服务器租用一年多少钱
  18. SC0096—AT32F403A/407 MSC IAP SpiFlash As Disk
  19. 人体红外传感器+继电器
  20. 你在的城市撒币了吗?Python爬取全国各城市消费券发放数据并分析

热门文章

  1. 多个极兔快递单号的物流信息要怎么同时查询
  2. 教程 | 10分钟入门禅绕画 (上)
  3. 我叫mt3.0更新公告
  4. InfluxDB教程
  5. QT:QChart设置
  6. 华为手机微信无法连接到服务器1-500,api访问报500错误
  7. 通过Servlet生成验证码图片 (转孤傲苍狼)
  8. PHP实现获取第一个中文首字母并进行排序的方法
  9. UE4 创建Actor类型蓝图拖拽到场景设置白色球消失
  10. 解决“chrome正受到自动测试软件的控制”信息栏显示问题-V76及以上版本