前言

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

先准备好:

12306网站用户名和密码

chrome浏览器及下载chromedriver

下载Python代码,来自网络整理 [点击下载 |  本地下载 ]

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

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"等待验证码,自行输入..."

找到用户名密码控件名

找到起始地控件名

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

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验证码,抢到票后确认支付就行啦。

抢票进行中

抢票成功!

总结

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

python火车票购买程序代码_100行Python代码实现自动抢火车票(附源码)相关推荐

  1. 曝肝三天,两千行Python代码,制作B站视频下载工具(附源码)

    曝肝三天,两千行Python代码,制作B站视频下载工具(附源码) 文章目录 一.准备工作 二.预览 1.启动 2.解析 3.下载中 4.下载完成 5.结果 三.设计流程 1.bilibili_vide ...

  2. Python爬虫鲁迅先生《经典语录》保存到Excel表格(附源码)

    Python爬虫鲁迅先生<经典语录>保存到Excel表格(附源码) 前言 今天用Python 爬取鲁迅先生<经典语录>,直接开整~ 代码运行效果展示 开发工具 Python版本 ...

  3. 【表白神器】Python超火隐藏表白图 你能看出来吗?【附源码】

    ​ 导语 浪漫至死不渝,温柔绝对屈服. -马上国庆了-没啥送的-那就送大家一些表白的代码吧- 大兄弟小姐妹们,大家好! 我是准时上线更新代码+讲故事的程序媛小姐姐! 整理了一款超火的『 隐藏表白代码  ...

  4. 「表白神器」Python超火隐藏表白图 你能看出来吗?「附源码」

    导语 浪漫至死不渝,温柔绝对屈服. -马上国庆了-没啥送的-那就送大家一些表白的代码吧- 大兄弟小姐妹们,大家好! 我是准时上线更新代码+讲故事的程序媛小姐姐! 整理了一款超火的『 隐藏表白代码 』希 ...

  5. 黯然微信小程序杂记(二):小程序最新版登录并进行缓存模块的实现 附源码

    黯然微信小程序杂记(二):小程序最新版登录进行缓存模块的实现 附源码 一.功能描述 二.mine.wxml界面图片 三.mine.wxml代码 四.mine.wxss代码 五.mine.js代码 六. ...

  6. 谁说程序员不懂浪漫——我的C语言结婚请柬(附源码)

    前言:但行好事,莫问前程--<增广贤文> 从上学起开始学C++,后面也做过H5,现在做Android.无论是学习用的,还是工作用的,上百个软件不止.但最另我骄傲的是,我用程序烂漫了一把. ...

  7. Android一行代码实现网络加载GIF闪图(附源码)

    最近项目有个需求是要从网络加载GIF闪图, 但是Android原生的ImageView并不支持Gif... 于是从网上看了些Dome, 发现总是有些这样那样的问题, 譬如: ☹ 没有缓存,还要自己写一 ...

  8. 【Python游戏】Python基于pygame实现的人机大战的斗兽棋小游戏 | 附源码

    前言 有粉丝说要我出一期Python版本的斗兽棋,今天宠粉狂魔的我不就来啦!! 虽然是一个简单的小游戏,但是对于新手小伙伴来说还是有一定的小难度的哟!要是不理解都可以找到小编的哈!! 相关文件 关注小 ...

  9. Python一键获取某排名第一的手游,所有英雄皮肤(附源码)

    目录 最近总是有老妹喊我打王者带她们上分,但是我吧不经常玩,有哪些皮肤,叫什么名字,长啥样都不知道,万一妹妹问起来答不上岂不是很尴尬! 这不得先把功课做足了,于是我用Python把这些皮肤全部给爬下来 ...

最新文章

  1. 开发过程真相...太真实了!一毛一样有没有!
  2. eureka 和zookeeper 区别 优势【转】
  3. boost::outcome模块constexpr相关的测试程序
  4. 「最简单」的 Core Data 上手指南
  5. No access for action Display of object type Product (PRODUCT)
  6. 十七、MySQL触发器(创建、删除、查看)详解
  7. 高价买的博客网站织梦模板
  8. 【版本控制管理】 深入 001 A successful Git branching model GIT 项目分支策略和释放管理
  9. java 财付通支付_工商变更:马化腾卸任财付通支付科技有限公司法定代表人
  10. 比想象中更旗舰,金立M2017国内首秀堪称完美!
  11. 电子计算机 电子工程 职称,电子信息工程师职称评定
  12. SDIO接口(3)——SDIO总线接口
  13. 以VS2017+OpenCV3.4.7+opencv_contrib3.4.7 为例,用cmake编译,实现所有版本轻松编译,其他版本组合都可借鉴
  14. c语言 如何筛选小数点,怎样在表格里筛选有出整数与有小数点的数值
  15. 什么是TPM设备管理系统?本文来告诉你
  16. python小应用之整理手机图片_手把手:扫描图片又大又不清晰?这个Python小程序帮你搞定!...
  17. 小春日记 - 基金初识
  18. python俄语词库_jieba分词-强大的Python 中文分词库
  19. oracle创建导入数据库,unix下手动创建oracle以及imp数据导入
  20. 创维e900v21e芯片_创维e900v21e网络机顶盒强制刷机教程及注意事项

热门文章

  1. 爬取热榜2k图片,爬虫入门即可
  2. XMPP协议和asmack
  3. 关于淘宝店铺运营的一点思考
  4. Zemax操作26--像差理论和修正(场曲、畸变、色差)
  5. 申请ISO13485认证的周期及费用
  6. 三坐标检测之工件检测选择合适测针
  7. 邮件中的:请看附件;请知悉,英语怎么说。要比较正式的用语
  8. java g722 解码_AMR音频编码器概述及文件格式分析
  9. S3C2440 Linux驱动移植——SD卡驱动
  10. Mac 安装 Truffle 和 Ganache