Python(发音:英[?pa?θ?n],美[?pa?θɑ:n]),是一种面向对象、直译式电脑编程语言,也是一种功能强大的通用型语言,已经具备近二十年的发展历史,成熟且稳定。它包含了一组完善并且容易理解的标准库,可以轻松完成不少常见的任务。它的语法很是简捷和清晰,与其它大多数程序设计语言不同,它使用缩进来定义语句。python
Python支持命令式程序设计、面向对象程序设计、函数式编程、面向切面编程、泛型编程多种编程范式。与Scheme、Ruby、Perl、Tcl等动态语言同样,Python具有垃圾回收功能,可以自动管理存储器使用。它常常被看成脚本语言用于处理系统管理任务和网络程序编写,然而它也很是适合完成各类高级任务。Python虚拟机自己几乎能够在全部的做业系统中运行。使用一些诸如py2exe、PyPy、PyInstaller之类的工具能够将Python源代码转换成能够脱离Python解释器运行的程序。web
最近在学Python,因此用Python写了这个12306抢票脚本,分享出来,与你们共同交流和学习,有不对的地方,请你们多多指正。话很少说,进入正题:编程
这个脚本目前只能刷一趟车的,人数能够是多个,支持选取做为类型等。浏览器
实现思路是splinter.browser模拟浏览器登录和操做,因为12306的验证码很差自动识别,因此,验证码须要用户进行手动识别,并进行登录操做,以后的事情,就交由脚原本操做就能够了,下面是我测试时候的一些截图:服务器
第一步:以下图,首先输入抢票基本信息微信
第二步:而后进入登陆页,须要手动输入验证码,并点击登录操做cookie
第三步:登录后,自动进入到抢票页面,以下图这样的网络
最后:就是坐等刷票结果就行了,以下图这样,就说是刷票成功了,刷到票后,会进行短信和邮件的通知,请记得及时前往12306进行支付,否则就白抢了。运维
Python运行环境:python3.6机器学习
用到的模块:re、splinter、time、sys、httplib二、urllib、smtplib、email
未安装的模块,请使用pip instatll进行安装,例如:pip install splinter
以下代码是这个脚本全部用到的模块引入:
刷票前信息准备,我主要说一下始发站和目的地的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能够作什么?
web开发和 爬虫是比较适合 零基础的
自动化运维 运维开发 和 自动化测试 是适合 已经在作运维和测试的人员
大数据 数据分析 这方面 是很须要专业的 专业性相对而言比较强
科学计算 通常都是科研人员 在用
机器学习 和 人工智能 首先 学历 要求高 其次 高数要求高 难度很大
我有一个微信公众号,常常会分享一些python技术相关的干货;若是你喜欢个人分享,能够用微信搜索“python语言学习”关注
欢迎你们加入千人交流答疑裙:588+090+942