admin管理员组

文章数量:1557661

还有不到一个月就过春节了,你回家的火车票都买了吗?如果没有买到的话,不妨试用下本文的 Python 程序来帮你抢火车票,也可以帮你的家人和朋友来抢票,顺带学习一下 Python 爬虫技术,可谓一举两得,何乐而不为?

我本来想自己写一个练练手的,但是转眼一想,Python 本身最大的优势是什么,不就是有很多牛逼的人已经造好轮子了吗?你只需要知道这些轮子并会使用就行了,这样会节省你大量的精力和时间,而且站在巨人的肩膀上,会看得更远。于是我在 github 上一搜索,果然有不少抢票程序,有的是 Python2,有的是 Python3,按 start 数据排序,经过亲自使用和对比,我选择了一个相对较好用的程序,并稍加以改进和完善。

项目 github 地址:https://github/xiaoshun007/12306Python,在此感谢作者 xiaoshun007 的分享。

项目简介:hack12306.py 是一个 Python 3.x 版的12306自动订票程序。利用splinter(一个开源的用来通过python自动化测试web的工具),让电脑自动操作网页。支持的功能:
1、支持配置出发地、目的地、乘车日
2、支持配置车次类型(动车、高铁等)
3、支持配置出发时间
4、需要手动输入登录验证码
5、支持配置预定车次的选择顺序(使用 order 字段配置,数字0:从上至下选择;数字x(1、2、3、4…):车次从上到下的序号,配置2表示列表中的第二个车次)
6、支持预定、购票自动完成
7、支持配置文件路径指定
8、支持席别指定
9、支持是否允许分配无座
还不支持的功能:
1、邮件提醒

于是,我在此基础上,加入邮件提醒的功能,并修复一些小 bug,公众号后台回复关键字【12306】获取我完善后的抢票程序源码,再按下方的步骤来操作即可。程序的流程图如下:

步骤一、环境准备

1、安装 chromedriver
由于程序使用 chrome 浏览器,因此需要安装 chromedriver,其实很简单,就是下载自己电脑上 chrome 浏览器对应的 chromedriver 即可,网上bing 一下就找到了,也可参考之前的文章Python 云端学习 中 chromedriver 的安装方法。我分享在网盘里 chromedriver 对应的 chrome 浏览器版本为 71.0.3578.98,不过也没有那么严格,只要是较新的 chrome 浏览器都可以使用我提供的这个 chromedriver 。将 chromedriver 放在一个你想放置的目录下,这个路径需要配置在配置文件中。


2、安装依赖的 Python 三方库
安装自动化工具库 splinter 和 邮件发送模块 zmail 。直接命令行执行

> 1.pip install splinter
>  2.pip install zmail

步骤二、修改配置文件

配置文件 config.ini 需要修改以下几个地方:
1、你的12306账号、密码

> ## 登陆账号和密码 [login]
> ### username:12306登录用户名,必选参数 username= 填写你的12306用户名
> ### password:12306登录密码,必选参数 password= 填写你的12306密码

2、你要买票的始发站,终点站,日期

## cookie信息,出发站,目的站
[cookieInfo]
### starts:对应搜索框出发地,必选参数,请输入中文名称,例如:武汉
starts=苏州
### ends:对应搜索框目的地,必选参数,请输入中文名称,例如:南京
ends=信阳
### dtime:对应搜索框出发日,必选参数,时间格式:年--日,例如 2018-01-19
## 时间格式2018-01-19
dtime=2019-02-02

3、你要为其买票的人姓名

## users:乘客姓名,必选参数,中文姓名,支持多个乘客,用英文逗号隔开,例如:张三,李四
### 乘客姓名需要提前加入到登录的12306账号的联系人中,为了程序自动选择乘客姓名
[userInfo]
users = 郑征 

4、chromedirver 的路径

## 路径信息
[pathInfo]
### driver_name: 浏览器名称,必选参数
driver_name = chrome
### executable_path: 浏览器驱动路径,必选参数
### windows路径例如:C:\Users\sanshunfeng\Downloads\chromedriver.exe
executable_path = E:\GitHub\python\pachong\tools\chromedriver.exe

5、发送邮件的配置信息

[mail]
mail_user = 你的邮箱如 :somenzz@163.com
mail_pwd = 你的密码
receiver = 你的收件地址:如 somenzz@163.com

其他如要买车次类型,几等座,顺序号等参考配置文件的注释进行修改即可 ,大多数人使用默认的配置就够了。

步骤三、运行源代码

直接在命令行执行

python hack12306.py

即可自动读取配置文件并运行自动抢票程序。
代码修改说明:

1、手工确认登陆成功。程序在登陆12306网站后,12306可能会跳转到出现问题的报错

本文标签: 火车票操作Python