计算机编程购票代码,12306自动购票脚本
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自动购票脚本相关推荐
- java + Selenium实现12306自动购票
为什么搞这个东西?[java + Selenium实现12306自动购票, 余票监测] 1.主要是12306是爬虫界的一个分水岭,所以我一直想玩12306[本次的实现并非真正意义上的破解12306实现 ...
- 计算机毕业设计之仿12306火车票购票平台
1 简介 今天向大家介绍一个帮助往届学生完成的毕业设计项目,计算机毕业设计之仿12306火车票购票平台. 计算机毕业生设计,课程设计需要帮助的可以找我 2 设计概要 21世纪是信息化时代,随着信息技术 ...
- 爬虫日常-12306自动购票程序
文章目录 前言 页面分析 代码设计 前言 hello兄弟们,最近在钻研新鲜知识,一不留神没想起来更新.今天我们顺着前面几篇文章完整的写出一篇12306的自动购票软件. 首先把我们已经写完的前期步骤代码 ...
- 28. 实战:基于selenium实现12306自动购票
目录 前言 目的 思路 代码实现 1. 进入登录界面,输入账号密码 2. 点击登录按钮,完成滑块验证 3. 在个人中心点击购票,跳转 4. 输入出发地.目的地,从控制台输入得到 5. 文本框输入出发日 ...
- 爬虫练习-12306自动购票升级版
文章目录 前言 代码更新 前言 hello兄弟们,偷懒归来了.别问为啥这么久没更,问就是失踪了 最近一直在学习Django以及爬虫进阶之类的知识,加上快期末了,一直没有想起来自己还有一个账号没有更新, ...
- 12306自动购票 ,抓包分析
我是在文本编辑工具里写的,然后复制到CSDN格式有点乱,你们可以粘贴到文本编辑工具中慢慢分析 9 首页: https://kyfw.12306.cn/otn/login/init 12 没有参数 ...
- Python3,3行代码,自动为脚本生成命令行,我默默的收藏了。
为python脚本生成命令行 1.引言 2.常规方法 3.Fire模块 3.1 模块介绍 3.2 代码示例 3.2.1 参数替换 3.2.2 类支持 3.2.3 代码示例 4.总结 1.引言 小屌丝: ...
- python12306刷票脚本_python+splinter实现12306网站刷票并自动购票流程
通过python+splinter,实现在12306网站刷票并自动购票流程(无法自动识别验证码). 此类程序只是提高了12306网站的 刷新频率(默认自动查询的刷新频率为5秒).对于学习splinte ...
- 快过年了,Python实现12306查票以及自动购票....
嗨害大家好鸭!我是小熊猫~ 明天就是2023年啦~ 还有谁像我小熊猫一样没有回家的? 这次康康能不能12306抢票回家!!! Python实现12306查票以及自动购票 [代码来源]: 青灯教育-自游 ...
最新文章
- Rsession: R sessions wrapping for Java
- 企业如何快速应对市场环境的不断变化
- matlab第七章符号对象,MATLAB语言:第七章 MATLAB符号计算
- Unity中国张俊波:Unity的国际化、本土化、全球化 | 2019WISE超级进化者大会
- vsan主机高级优化参数配置
- c语言用h指针n个数求和,C语言程序经典示例—-(20)寻找指定元素的指针
- 服务器哪种系统最好,云服务器哪种系统好用
- Nokia Imaging SDK滤镜使用入门
- 【bzoj1194】 HNOI2006—潘多拉的盒子
- qsort和sort的区别
- SM4算法java代码实现
- 安卓天天练练(五)CompoundButton
- 冬季无锡旅游攻略,无锡太湖、鼋头渚之游小记!!!!
- Codeforces965—A:Paper Airplanes(思维)
- 下载open jdk 和阿里Alibaba Dragonwell (开源open JDK)
- 水香木鱼书写PPT总结
- 租用服务器一年价格_服务器租用一年多少钱
- SC0096—AT32F403A/407 MSC IAP SpiFlash As Disk
- 人体红外传感器+继电器
- 你在的城市撒币了吗?Python爬取全国各城市消费券发放数据并分析