前言:
而今各位老铁们对“python订票”可能比较看重,同学们都想要知道一些“python订票”的相关文章。那么小编同时在网上搜集了一些有关“python订票””的相关文章,希望小伙伴们能喜欢,看官们一起来学习一下吧!上次正值放假的时候,学姐一直没买到票记得团团转,于是偷偷帮学姐用python自动抢票,当学姐收到购票成功的信息后,对我两眼汪汪,就差以身相许了,哈哈,话不多说,进入正题:
这个脚本目前只能刷一趟车的,人数可以是多个,支持选取作为类型等。
实现思路是splinter.browser模拟浏览器登陆和操作,由于12306的验证码不好自动识别,所以,验证码需要用户进行手动识别,并进行登陆操作,之后的事情,就交由脚本来操作就可以了,下面是我测试时候的一些截图:
一、首先输入抢票基本信息
二、进入登录页手动输入验证码,并点击登陆
三、登陆后自动进入到抢票页面
最后坐等刷票结果,如下图这样,就说是刷票成功了,刷到票后,会进行短信和邮件的通知,请记得及时前往12306进行支付,不然就白抢了。
运行环境
Python运行环境:
python3.6
用到的模块:
resplintertimesyshttplib2urllibsmtplibemail
未安装的模块,使用pip instatll进行安装,例如:pip install splinter
如下代码是这个脚本所有用到的模块引入:
准备城市名COOKIE
刷票前信息准备,我主要说一下始发站和目的地的cookie值获取,因为输入城市的时候,需要通过cookie值,cookie值可以通过12306官网,然后在F12(相信所有的coder都知道这个吧)的network里面的查询请求cookie中可以看到,在请求的header里面可以找到,_jc_save_fromStation值是出发站的cookie,_jc_save_toStation的值是目的地的cookie,然后加入到代码里的城市的cookie字典city_list里即可,键是城市的首字母,值是cookie值的形式。
模拟登陆操作
抢票,肯定需要先登录,我这里模拟的登录操作,会自动填充12306的账号名和密码,当然,你也可以在打开的浏览器中修改账号和密码。
实现的关键代码:
登录之后,就是控制刷票的各种操作处理了,这里,我就不贴代码了,因为代码比较多。
短信和邮件通知
当刷票成功后,我会进行短信和邮件的双重通知,当然,这里短信通知的平台,就看你用那个具体来修改代码了,我用的是互亿无线的体验版的免费短信通知接口;发送邮件模块我用的是smtplib,发送邮件服务器用的是163邮箱,如果用163邮箱的话,你还没有设置客户端授权密码,记得先设置客户端授权密码就好了,挺方便的。
主要实现代码:
源码
说了那么多,感觉都是说了好多废话啊,哈哈,不好意思,耽误大家时间来看我瞎扯了,全部源码私信小编“火车票”即可自动获取源码~
标签: #python订票