项目内容

(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实现抢火车票功能(上)相关推荐

  1. 如何用python抢火车票_Python3实现抢火车票功能(上)

    原标题:Python3实现抢火车票功能(上) 项目内容 (1)利用python实现火车/高铁票查询功能: (2)利用python实现抢火车/高铁票功能: 项目内容1 相关模块: requests模块. ...

  2. 用python抢火车票_Python3实现抢火车票功能(中)

    导语 在"python抢火车票(上)"一文中我们完成了项目内容1和项目内容2,即利用python实现火车/高铁票查询功能以及利用python实现抢火车/高铁票功能,对项目内容1和项 ...

  3. python12306抢学生票票下载,基于Python3.6+splinter实现自动抢火车票

    本文实例为大家分享了python实现自动抢火车票,供大家参考,具体内容如下 splinter使用 首先介绍一下splinter使用: plinter.brower是一个开源工具,通过Python自动化 ...

  4. python3 ftp服务器_python3实现ftp服务功能(服务端 For Linux)

    本文实例为大家分享了python3实现ftp服务功能的具体代码,供大家参考,具体内容如下 功能介绍: 可执行的命令: ls pwd cd put rm get mkdir 1.用户加密认证 2.允许多 ...

  5. HTML5编写抢高铁票,Python3实现抢火车票功能(中)

    下载W3Cschool手机App,0基础随时随地学编程>>戳此了解 导语 在"python抢火车票(上)"一文中我们完成了项目内容1和项目内容2,即利用python实现 ...

  6. Python之——实现自动抢火车票(基于Python3.6+splinter)

    转载请注明出处:http://blog.csdn.net/l1028386804/article/details/79134306 splinter使用 首先介绍一下splinter使用: plint ...

  7. 手机版猎豹浏览器推出“抢火车票功能”

    借着去年"抢火车票"的东风,猎豹浏览器彻底火了一把.在十一长假临近的时候,金山网络再次推出猎豹浏览器"十一抢票专版",通过手机也可以抢火车票.尤其针对上班时间, ...

  8. python判断火车票座位_Python抢票程序优化,可以选择车次和座次

    Python抢票程序优化,可以选择车次和座次 阅读文本大概需要 5 分钟. pk 哥在元旦前写了一篇关于自动化抢票的程序 用Python抢火车票加邮件通知,同时建了一个火车票助力群,本来只是写着玩玩, ...

  9. 技术宅---我的网上抢火车票攻略

    原文地址为: 技术宅---我的网上抢火车票攻略 写在前面 写这篇文章的起因是今天在12306上买火车票时,被这牛逼的网站给震撼到了,靠,牛叉得让人无语的用户体验啊.就讲讲我是如何利用一个小工具做辅助, ...

  10. Python骚操作-自动抢火车票

    平常回家.出去玩或者碰上急事的时候,买火车票好像并不是一件容易的事情,尤其是遇上春运,那么,不妨试用下本文的 Python 程序来帮你抢火车票,也可以帮你的家人和朋友来抢票,顺带学习一下 Python ...

最新文章

  1. Linux下解决命令未找到的问题
  2. Linux学习笔记(知识点总结)
  3. frps与frpc的区别
  4. listbox icon
  5. 2018\National _Java_A\1.三角形面积
  6. a fast way to get list of all BSP application according to different search criteria
  7. python 天气预报地图_在树莓派上用 python 做一个炫酷的天气预报
  8. java中el是什么_java中jsp的EL的定义以及使用
  9. 案例全是电商零售,B2B的用户画像怎么做???
  10. 二次元《尤里国简介》
  11. photoshop cc 2017 mac 破解版
  12. MySQL表空间碎片产生原因和优化
  13. 动作游戏设计三部曲 之一 交互至上
  14. 事件代理(事件委托)
  15. SumaTraPDF
  16. 如何根据业务需求来选择合适的代理IP
  17. 录屏时如何录制麦克风声音?-QVE屏幕录制
  18. latex输入3.3.1类型的标题
  19. 2020-2021考研南京大学软件学院学习经验分享(英语90,842自命题110+)
  20. 计算机更名无法登陆用友u8,用友T6软件修改了计算机名称后,系统管理提示不能连接服务器-用友T6...

热门文章

  1. 8.4 单片机按键介绍
  2. python plot线形和颜色
  3. console口和telnet登录交换机
  4. 会网站seo技巧,提升流量不难
  5. Java百度网盘上传图片(文件)
  6. [技术分享 – FCS 篇] 驭龙五式3之飞龙在天:安装 FCS 服务器
  7. 关于python里面xlwt操作excel文件的时候去掉页眉页脚
  8. Linux ftrace 2.3、kprobe event的使用
  9. lob 索引 oracle,LOB字段相关概念(自动创建LOB索引段和重建索引方法)
  10. 2020第六届上海市大学生网络安全大赛线上赛Misc-可乐加冰