100行Python代码实现自动抢火车票(附源码)


Posted in Python onJanuary 11, 2018

前言

又要过年了,今年你不妨自己写一段代码来抢回家的火车票,是不是很Cool。下面话不多说了,来一起看看详细的介绍吧。

先准备好:

  • 12306网站用户名和密码
  • chrome浏览器及下载chromedriver
  • 下载Python代码,来自网络整理 [点击下载 |  本地下载 ]

代码用的Python+Splinter开发,Splinter是一个使用Python开发的开源Web应用测试工具,它可以帮你实现自动浏览站点和与其进行交互。

Splinter官网:http://splinter.readthedocs.io/en/latest/。

Splinter执行的时候会自动打开你指定的浏览器,访问指定的URL。然后你所开发的模拟的任何行为,都会自动完成,你只需要坐在电脑面前,像看电影一样看着屏幕上各种动作自动完成然后收集结果即可。

了解原理:

找到相应URL,找到控件模拟登录、查询、订票操作。关键是找到控件名称,难点是起始地不是直接输入的页面值,需要在cookie中查出。

12306查询URL: https://kyfw.12306.cn/otn/leftTicket/init

12306登录URL: https://kyfw.12306.cn/otn/login/init

我的12306URL: https://kyfw.12306.cn/otn/index/initMy12306

购票确认URL: https://kyfw.12306.cn/otn/confirmPassenger/initDc

Python代码打开URL,找到控件填充值:

def login(self):
  self.driver.visit(self.login_url)
  # 填充用户名
  self.driver.fill("loginUserDTO.user_name", self.username)
  # 填充密码
  self.driver.fill("userDTO.password", self.passwd)
  print u"等待验证码,自行输入..."

100行Python代码实现自动抢火车票(附源码)

找到用户名密码控件名

100行Python代码实现自动抢火车票(附源码)

找到起始地控件名

确定起始地的值,方法Chrome浏览器中的“检查”功能(按F12),Network ---> Cookies中找到:

100行Python代码实现自动抢火车票(附源码)

cookie中起始地的值

拷贝起始地的cookie值,我把几个常用的城市拷出来,放到了字典中:

cities= {'成都':'%u6210%u90FD%2CCDW',
'重庆':'%u91CD%u5E86%2CCQW',
'北京':'%u5317%u4EAC%2CBJP',
'广州':'%u5E7F%u5DDE%2CGZQ',
'杭州':'%u676D%u5DDE%2CHZH',
'宜昌':'%u5B9C%u660C%2CYCN',
'郑州':'%u90D1%u5DDE%2CZZF',
'深圳':'%u6DF1%u5733%2CSZQ',
'西安':'%u897F%u5B89%2CXAY',
'大连':'%u5927%u8FDE%2CDLT',
'武汉':'%u6B66%u6C49%2CWHN',
'上海':'%u4E0A%u6D77%2CSHH',
'南京':'%u5357%u4EAC%2CNJH',
'合肥':'%u5408%u80A5%2CHFH'}

查询车票代码:

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.find_by_text(u"查询").click()

其实,你只需要运行代码:

python tickets.py 上海 广州 2018-02-05

当然,还需要手动点一下的还是万恶的12306验证码,抢到票后确认支付就行啦。

100行Python代码实现自动抢火车票(附源码)抢票进行中

100行Python代码实现自动抢火车票(附源码)

抢票成功!

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对三水点靠木的支持。

Python 相关文章推荐
python 获取本机ip地址的两个方法
Feb 25 Python
python线程池的实现实例
Nov 18 Python
详解Python中DOM方法的动态性
Apr 11 Python
Python实现Linux中的du命令
Jun 12 Python
python3解析库BeautifulSoup4的安装配置与基本用法
Jun 26 Python
Python实现矩阵相乘的三种方法小结
Jul 26 Python
对python函数签名的方法详解
Jan 22 Python
Python操作多维数组输出和矩阵运算示例
Nov 28 Python
python垃圾回收机制(GC)原理解析
Dec 30 Python
Pytorch之卷积层的使用详解
Dec 31 Python
使用 Python 处理3万多条数据只要几秒钟
Jan 19 Python
IntelliJ 中配置 Anaconda的过程图解
Jun 01 Python
python实现外卖信息管理系统
Jan 11 #Python
Python实现学生成绩管理系统
Apr 05 #Python
名片管理系统python版
Jan 11 #Python
Python学生成绩管理系统简洁版
Apr 05 #Python
Python实现学校管理系统
Jan 11 #Python
Python实现GUI学生信息管理系统
Apr 05 #Python
使用python 爬虫抓站的一些技巧总结
Jan 10 #Python
You might like
PHP session_start()问题解疑(详细介绍)
2013/07/05 PHP
PHP验证信用卡卡号是否正确函数
2015/05/27 PHP
一个加载js文件的小脚本
2007/06/28 Javascript
解决AJAX中跨域访问出现'没有权限'的错误
2008/08/20 Javascript
jquery制作居中遮罩层效果分享
2014/02/21 Javascript
使用Node.js实现一个简单的FastCGI服务器实例
2014/06/09 Javascript
javascript实现百度地图鼠标滑动事件显示、隐藏
2015/04/02 Javascript
js控制文本框输入的字符类型方法汇总
2015/06/19 Javascript
JavaScript与jQuery实现的闪烁输入效果
2016/02/18 Javascript
JS实现获取剪贴板内容的方法
2016/06/21 Javascript
JS制作适用于手机和电脑的通知信息效果
2016/10/28 Javascript
AngularJS模板加载用法详解
2016/11/04 Javascript
JavaScript贪吃蛇小组件实例代码
2017/08/20 Javascript
30分钟快速入门掌握ES6/ES2015的核心内容(上)
2018/04/18 Javascript
实例讲解JavaScript截取字符串
2018/11/30 Javascript
tweenjs缓动算法的使用实例分析
2019/08/26 Javascript
React中使用Vditor自定义图片详解
2020/12/25 Javascript
[04:27]DOTA2官方论坛水友赛集锦
2013/09/16 DOTA
[01:03:59]2018DOTA2亚洲邀请赛3月30日 小组赛B组VGJ.T VS Secret
2018/03/31 DOTA
[57:59]完美世界DOTA2联赛循环赛 Ink Ice vs LBZS BO2第一场 11.05
2020/11/05 DOTA
Python中.py文件打包成exe可执行文件详解
2017/03/22 Python
对django的User模型和四种扩展/重写方法小结
2019/08/17 Python
python模拟点击网页按钮实现方法
2020/02/25 Python
python通用读取vcf文件的类(复制粘贴即可用)
2020/02/29 Python
Django数据结果集序列化并展示实现过程
2020/04/22 Python
pandas将list数据拆分成行或列的实现
2020/12/13 Python
JD Sports丹麦:英国领先的运动时尚零售商
2020/11/24 全球购物
工程部主管岗位职责
2013/11/17 职场文书
高中生的自我评价
2014/03/04 职场文书
有趣的广告词
2014/03/18 职场文书
2014年社会实践活动总结范文
2014/04/29 职场文书
难忘的一天教学反思
2014/04/30 职场文书
大学优秀班集体申报材料
2014/05/23 职场文书
房地产营销活动策划方案
2014/09/15 职场文书
干部作风建设年活动剖析材料
2014/10/23 职场文书
战友聚会致辞
2015/07/28 职场文书