欢迎访问
这是个实用的Python网站

用Python抢火车票加邮件通知

临近五一了,大家也都开始抢火车票了,pk 哥每年假期或者过年也要抢火车票回去过年。我还记得去年过年用软件抢了一个月都没抢到,当时计划第二天返程上班,当天坐在电脑前不停的刷新,提交订单,在无数次的点击刷新下,还真让我手动刷新抢到了难能可贵的返程票。

今年 pk 哥想换一种方式来抢票,就是用 Python 代替手工去不停的刷新,检测到余票马上点进去提交订单,提交订单成功后发邮件通知我去支付,30 分钟内支付成功就购票成功了。

目录

  • 抢票效果
  • splinter 库安装导入
  • 准备工作:初始化属性
  • 登录功能实现
  • 邮件通知实现
  • 查票功能实现
  • 买票功能实现
  • 源码获取方式

抢票效果

运行代码后,Splinter 会自动启动浏览器,代替手工去操作页面,执行打印日志如下。

抢票成功后,我们会收到抢票成功的邮件。

同时,火车票订单中有一张刚才待支付的火车票,手动支付成功后就完成整个抢票流程了。

splinter 库安装导入

这次用到的库是 Splinter,Splinter 是一个使用 Python 测试 Web 应用程序的开源工具。它允许你自动执行浏览器操作,例如访问 URL 和与其项目交互,和 Selenium 库类似。

使用 pip 命令直接安装。

我用的 Python 环境是 Python3,用的编辑器是 Pycharm,编辑器大家可自行选择。安装后导入即可用。

准备工作

在开始写购票程序之前,我们得先建一个购票类,并初始化实例属性,初始化各种相关链接,定义好浏览器(我用的是 Chrome 浏览器)和浏览器驱动的保存路径。

登录功能实现

登录页面需要三要素:用户名、密码、图形验证码,用户名和密码我们直接通过自动化输入完成,图形验证码太复杂,用自动化识别输入的话正确率不高,我们直接手动输入好了。登录成功后和刚才初始化的登录 URL 匹配,匹配成功则表示登录成功。

邮件通知功能

我们先定义下邮件通知函数,等下购票成功后直接调用这个函数发邮件就可。发邮件功能的程序之前 pk 哥详细给大家分析过的,没看过的戳这里查看  30行Python代码实现自动收发邮件

我用的是 QQ 邮箱,因为 QQ 邮箱绑定微信和 QQ 后,通知更及时。

查票功能实现

接下来,我们在买票功能中先写好查票的功能,定义好查询的信息并添加到 cookie 中,cookie 信息我们可以在调试信息中查看。我们主要用到的是图中标示的乘车日期、出发地、目的地。

接下来我们对火车票进行查询判断,如果没票的话就持续的点击查询按钮直到有票为止,当然有时候也会出现网络不好或者 12306 的服务不稳定,出现查询异常的情况。

遇到这些情况,程序会持续的重复查询直到有数据显示,部分代码如下。

买票功能实现

一旦有票就会点击预定按钮进入预定流程,选择乘车人并提交订单。

提交订单后有确认选座的提示,点击确定后订票订单就生成了,生成后调用刚才定义的发邮件程序。

最后,主函数里给出必须传的一些参数:用户名、登录密码、乘车人姓名、乘车日期、出发地 cookie、目的地 cookie、邮件标题、邮件内容,调用购票程序,搞定!

源码可在我的公众号「Python知识圈」回复「12306」获取

 

赞(0) 打赏
未经允许不得转载:Python知识圈 » 用Python抢火车票加邮件通知

评论 抢沙发