python3刷火车票_Python3实现抢火车票功能(上)
项目内容
(1)利用python实现火车/高铁票查询功能;
(2)利用python实现抢火车/高铁票功能;
项目内容1
相关模块:
requests模块、prettytable模块以及python自带的一些基本模块。(相关模块均使用pip安装即可)
主要思路:
构建相关的URL请求,并对返回的JSON数据进行解析处理最后显示即可。
其中值得一提的有:
(1)需要对特殊的URL发送请求来获得输入车站的字母代号;
(2)车票余量查询的URL有两个,任意某时刻两个URL中仅有一个是有效的。
环境搭建:
安装python3.5.4(添加到环境变量)并pip安装相关第三方库即可。
使用方式:
使用演示:
最终代码:
见相关文件。
项目内容2
相关模块:
splinter模块以及python自带的一些基本模块。(相关模块均使用pip安装即可)
主要思路:
其实无非是利用splinter库,来实现模拟登陆、查询、订票等操作。换句话说只要找到相关的控件名称即可,具体流程可以参考相关文件中的源代码,我都做了详细的注释。
值得一提的有:
(1)出发地和目的地不是直接输入的页面值,需要在cookie中查出;
(2)验证码需要手动输入。
环境搭建:
安装python(添加到环境变量)并pip安装相关的第三方库,最后将相关文件中提供的chromedriver.exe文件放在python安装文件夹中的Scripts文件夹内。
使用方式:
在下图所示的代码段中填写相关信息:
确认无误后在cmd中运行即可。
其中cookie值查找方式如下图:
使用演示:
输入验证码后其余操作均将自动进行:
抢到票之后我们需要手动打开12306官网或者官方APP在未完成订单中进行支付后购票:
最终代码:
from splinter.browser import Browser
from time import sleep
import traceback
class Buy_Tickets(object):
# 初始化
def __init__(self, username, passwd, order, passengers, dtime, starts, ends):
self.username = username
self.passwd = passwd
# 车次,0代表所有车次
self.order = order
# 乘客名
self.passengers = passengers
# 起始地和终点
self.starts = starts
self.ends = ends
# 日期
self.dtime = dtime
self.login_url = '中国铁路12306'
self.ticket_url = '中国铁路12306'
self.driver_name = 'chrome'
self.executable_path = 'D:\\Python35\\Scripts\\chromedriver.exe'
# 登录
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)
# sleep(1)
print('请输入验证码...')
while True:
if self.driver.url != self.initMy_url:
sleep(1)
else:
break
# 买票
def start_buy(self):
self.driver = Browser(driver_name=self.driver_name, executable_path=self.executable_path)
self.driver.driver.set_window_size(700, 500)
self.login()
self.driver.visit(self.ticket_url)
try:
print('开始购票...')
# 加载查询信息
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('查询').click()
count += 1
print('第%d次点击查询...' % count)
try:
self.driver.find_by_text('预订')[self.order-1].click()
sleep(1.5)
except Exception as e:
print(e)
print('预订失败...')
continue
else:
while self.driver.url == self.ticket_url:
self.driver.find_by_text('查询').click()
count += 1
print('第%d次点击查询...' % count)
try:
for i in self.driver.find_by_text('预订'):
sleep(1)
except Exception as e:
print(e)
print('预订失败...')
continue
print('开始预订...')
sleep(1)
print('开始选择用户...')
for p in self.passengers:
self.driver.find_by_text(p).last.click()
sleep(0.5)
if p[-1] == ')':
self.driver.find_by_id('dialog_xsertcj_ok').click()
print('提交订单...')
sleep(1)
self.driver.find_by_id('submitOrder_id').click()
sleep(2)
print('确认选座...')
self.driver.find_by_id('qr_submit_id').click()
print('预订成功...')
except Exception as e:
print(e)
if __name__ == '__main__':
# 用户名
username = 'xxx'
# 密码
password = 'xxx'
# 车次选择,0代表所有车次
order = 0
# 乘客名,比如passengers = ['王二狗', '王三狗']
# 学生票需注明,注明方式为:passengers = ['王二狗(学生)', '王三狗']
passengers = ['xxx', 'xxx']
# 日期,格式为:'2018-01-20'
dtime = 'xxxx-xx-xx'
# 出发地(需填写cookie值)
starts = '%u5357%u4EAC%2CNJH' #南京
# 目的地(需填写cookie值)
ends = '%u91D1%u534E%2CJBH' #金华
Buy_Tickets(username, password, order, passengers, dtime, starts, ends).start_buy()
python3刷火车票_Python3实现抢火车票功能(上)相关推荐
- 如何用python抢火车票_Python3实现抢火车票功能(上)
原标题:Python3实现抢火车票功能(上) 项目内容 (1)利用python实现火车/高铁票查询功能: (2)利用python实现抢火车/高铁票功能: 项目内容1 相关模块: requests模块. ...
- 用python抢火车票_Python3实现抢火车票功能(中)
导语 在"python抢火车票(上)"一文中我们完成了项目内容1和项目内容2,即利用python实现火车/高铁票查询功能以及利用python实现抢火车/高铁票功能,对项目内容1和项 ...
- python12306抢学生票票下载,基于Python3.6+splinter实现自动抢火车票
本文实例为大家分享了python实现自动抢火车票,供大家参考,具体内容如下 splinter使用 首先介绍一下splinter使用: plinter.brower是一个开源工具,通过Python自动化 ...
- python3 ftp服务器_python3实现ftp服务功能(服务端 For Linux)
本文实例为大家分享了python3实现ftp服务功能的具体代码,供大家参考,具体内容如下 功能介绍: 可执行的命令: ls pwd cd put rm get mkdir 1.用户加密认证 2.允许多 ...
- HTML5编写抢高铁票,Python3实现抢火车票功能(中)
下载W3Cschool手机App,0基础随时随地学编程>>戳此了解 导语 在"python抢火车票(上)"一文中我们完成了项目内容1和项目内容2,即利用python实现 ...
- Python之——实现自动抢火车票(基于Python3.6+splinter)
转载请注明出处:http://blog.csdn.net/l1028386804/article/details/79134306 splinter使用 首先介绍一下splinter使用: plint ...
- 手机版猎豹浏览器推出“抢火车票功能”
借着去年"抢火车票"的东风,猎豹浏览器彻底火了一把.在十一长假临近的时候,金山网络再次推出猎豹浏览器"十一抢票专版",通过手机也可以抢火车票.尤其针对上班时间, ...
- python判断火车票座位_Python抢票程序优化,可以选择车次和座次
Python抢票程序优化,可以选择车次和座次 阅读文本大概需要 5 分钟. pk 哥在元旦前写了一篇关于自动化抢票的程序 用Python抢火车票加邮件通知,同时建了一个火车票助力群,本来只是写着玩玩, ...
- 技术宅---我的网上抢火车票攻略
原文地址为: 技术宅---我的网上抢火车票攻略 写在前面 写这篇文章的起因是今天在12306上买火车票时,被这牛逼的网站给震撼到了,靠,牛叉得让人无语的用户体验啊.就讲讲我是如何利用一个小工具做辅助, ...
- Python骚操作-自动抢火车票
平常回家.出去玩或者碰上急事的时候,买火车票好像并不是一件容易的事情,尤其是遇上春运,那么,不妨试用下本文的 Python 程序来帮你抢火车票,也可以帮你的家人和朋友来抢票,顺带学习一下 Python ...
最新文章
- Linux下解决命令未找到的问题
- Linux学习笔记(知识点总结)
- frps与frpc的区别
- listbox icon
- 2018\National _Java_A\1.三角形面积
- a fast way to get list of all BSP application according to different search criteria
- python 天气预报地图_在树莓派上用 python 做一个炫酷的天气预报
- java中el是什么_java中jsp的EL的定义以及使用
- 案例全是电商零售,B2B的用户画像怎么做???
- 二次元《尤里国简介》
- photoshop cc 2017 mac 破解版
- MySQL表空间碎片产生原因和优化
- 动作游戏设计三部曲 之一 交互至上
- 事件代理(事件委托)
- SumaTraPDF
- 如何根据业务需求来选择合适的代理IP
- 录屏时如何录制麦克风声音?-QVE屏幕录制
- latex输入3.3.1类型的标题
- 2020-2021考研南京大学软件学院学习经验分享(英语90,842自命题110+)
- 计算机更名无法登陆用友u8,用友T6软件修改了计算机名称后,系统管理提示不能连接服务器-用友T6...
热门文章
- 8.4 单片机按键介绍
- python plot线形和颜色
- console口和telnet登录交换机
- 会网站seo技巧,提升流量不难
- Java百度网盘上传图片(文件)
- [技术分享 – FCS 篇] 驭龙五式3之飞龙在天:安装 FCS 服务器
- 关于python里面xlwt操作excel文件的时候去掉页眉页脚
- Linux ftrace 2.3、kprobe event的使用
- lob 索引 oracle,LOB字段相关概念(自动创建LOB索引段和重建索引方法)
- 2020第六届上海市大学生网络安全大赛线上赛Misc-可乐加冰