今年你不妨自己写一段代码来抢回家的火车票,是不是很Cool。

先准备好:

12306网站用户名和密码

chrome浏览器及下载chromedriver

下载Python代码

代码用的Python+Splinter开发,Splinter是一个使用Python开发的开源Web应用测试工具,它可以帮你实现自动浏览站点和与其进行交互。Splinter执行的时候会自动打开你指定的浏览器,访问指定的URL。然后你所开发的模拟的任何行为,都会自动完成,你只需要坐在电脑面前,像看电影一样看着屏幕上各种动作自动完成然后收集结果即可。

了解原理:

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

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模拟火车订票系统_如何用python编写火车抢票助手

    前几天跟朋友说打算写一个抢票助手,最后由于某些原因念头打消了. 可就在昨天晚上,才隐约记起一年前的自己曾经说过:一年后我一定要写一个12306的抢票助手!瞬间激情澎湃,甚至已经是快临近凌晨时便开始动工 ...

  2. python模拟火车订票系统代码_Python3.6实现12306火车票自动抢票,附源码

    原标题:Python3.6实现12306火车票自动抢票,附源码 Python(发音:英[?pa?θ?n],美[?pa?θɑ:n]),是一种面向对象.直译式电脑编程语言,也是一种功能强大的通用型语言,已 ...

  3. 利用python模拟火车订票系统

    title = ['车次 ','出发站-到达站 ','出发时间 ','到达时间 ','历时 '] num = ['T40','T298','Z158','Z62'] place = ['长春-北京', ...

  4. 【Python】【项目模拟】模拟火车订票系统

    本项目代码基于python大作业--列车管理系统_丿灬慕容笑笑的博客-CSDN博客_python 车票管理系统 的代码,本人对其进行重新加工及充实.项目总体仍较为粗糙,后面还需继续完善. 部分项目界面 ...

  5. 模拟火车订票系统(Python)

    模拟火车订票系统,效果显示,输入购买的车次,乘车人,判断车次是否存在,及其行程信息.如下效果图: 程序如下: 输出结果: 总结:难点在于1.使用自建函数判断车次是否存在 2.字符串format方法的使 ...

  6. 实战二、模拟火车订票系统

    实战二.模拟火车订票系统 详细编程要求如下: 应用到的知识点 1)访问列表元素: print(listname[n]) 2)通过键值访问字典: print(dictionary["键值&qu ...

  7. python 模拟飞机订票系统

    本文包括以下内容 模拟订票系统的各个模块说明 运行截图 可能出现的Bug 解决方案 模拟订票系统需要有以下几个部分组成 一.添加飞机信息 二.删除飞机信息 三.航班信息查询 四.航班信息显示 五.修改 ...

  8. python票务系统_python基础学习:模拟火车订票系统

    2020-12-20 str1 = ["车次", "出发站-到达站", "出发时间", "到达时间", "历时 ...

  9. spring boot火车订票系统 毕业设计源码031012

    火车订票系统的设计与实现 摘 要 信息化社会内需要与之针对性的信息获取途径,但是途径的扩展基本上为人们所努力的方向,由于站在的角度存在偏差,人们经常能够获得不同类型信息,这也是技术最为难以攻克的课题. ...

  10. 火车时刻表C语言报告,终稿火车订票系统的设计与实现课程设计.doc最终版(范文1)...

    <火车订票系统的设计与实现课程设计.doc>由会员分享,可免费在线阅读全文,更多与<(终稿)火车订票系统的设计与实现课程设计.doc(最终版)>相关文档资源请在帮帮文库(www ...

最新文章

  1. 使用sqlserver来存放和取得session
  2. 腾讯云 视频 点播 视频上传接口
  3. html基础知识点列表
  4. 生效linux内核,Linux内核
  5. 肉体之爱的解释圣经_可以解释的AI简介,以及我们为什么需要它
  6. expdp导出 schema_Oracle使用数据泵在异机之间导出导入多个 schema
  7. Linux操作系统基础解析之(四)——Linux基本命令剖析(2)
  8. java 定义接口school_Java接口介绍
  9. leetCode:35. 搜索插入位置
  10. Python学习资源收集
  11. 游戏必备组件_没有网络也可以肝的单机小游戏!玩一局就停不下来
  12. php 结巴分词,将开源PHP组件注册为服务提供者,以结巴分词为例
  13. IP 网络实验(模拟+设备)(IP网络)
  14. 微信群总是有人发广告?我用Python写个机器人消灭他!
  15. android 坐标度分秒转换工具,百度地图API详解之坐标系转换
  16. 我的大三,青山隐隐,绿水悠悠
  17. 哇塞!集齐7张卡片,真的可以召唤神龙耶!
  18. Java 遍历 Redis Hash key中所有数据
  19. 淘宝SQA工作随写 [ 光影人像 东海陈光剑 的博客 ]
  20. 【frp】使用 frp 实现内网穿透(CentOS 云服务器 + Win10)

热门文章

  1. (转)2017中国互联网证券年度报告
  2. Julia: Dates =DateFormat, format,parse.......
  3. SQLite的查询优化
  4. 机器学习笔记(十四):主成分分析法(PCA)(2)
  5. Kafka从上手到实践-Kafka集群:重要配置和性能探讨 | 凌云时刻
  6. 计算机网络基础大学教材,计算机网络基础(高等院校信息技术应用型规划教材)...
  7. java tsp问题_蚁群算法(Java)tsp问题
  8. 毕设题目:Matlab优化布局
  9. 【优化预测】基于matlab布谷鸟搜索算法优化SVM预测【含Matlab源码 1525期】
  10. 【心音信号】基于matlab GUI心音诊断系统【含Matlab源码 762期】