大数据 爬虫Python AI SqlPython爬虫

「干货」你还在苦逼地邀请助力吗,Python3.6轻松自动抢火车

2019-01-03  本文已影响7人  1a076099f916
「干货」你还在苦逼地邀请助力吗,Python3.6轻松自动抢火车票

最近在学Python,所以用Python写了这个12306抢票脚本,分享出来,与大家共同交流和学习:

实现思路是splinter.browser模拟浏览器登陆和操作,由于12306的验证码不好自动识别,所以,验证码需要用户进行手动识别,并进行登陆操作。

之后的事情,就交由脚本来操作就可以了,下面是我测试时候的一些截图:

「干货」你还在苦逼地邀请助力吗,Python3.6轻松自动抢火车票

第一步:如下图,首先输入抢票基本信息

「干货」你还在苦逼地邀请助力吗,Python3.6轻松自动抢火车票

第二步:然后进入登录页,需要手动输入验证码,并点击登陆操作

「干货」你还在苦逼地邀请助力吗,Python3.6轻松自动抢火车票

第三步:登陆后,自动进入到抢票页面,如下图这样的图片描述

「干货」你还在苦逼地邀请助力吗,Python3.6轻松自动抢火车票

最后:就是坐等刷票结果就好了,如下图这样,就说是刷票成功了,刷到票后,会进行短信和邮件的通知,请记得及时前往12306进行支付,不然就白抢了。

「干货」你还在苦逼地邀请助力吗,Python3.6轻松自动抢火车票

下面是代码实现部分:

一、语言环境及相关模块

Python运行环境:python3.6

用到的模块:re、splinter、time、sys、httplib2、urllib、smtplib、email

未安装的模块,请使用pip instatll进行安装,例如:pip install splinter

如下代码是这个脚本所有用到的模块引入:

<pre style="-webkit-tap-highlight-color: transparent; box-sizing: border-box; font-family: Consolas, Menlo, Courier, monospace; font-size: 16px; white-space: pre-wrap; position: relative; line-height: 1.5; color: rgb(153, 153, 153); margin: 1em 0px; padding: 12px 10px; background: rgb(244, 245, 246); border: 1px solid rgb(232, 232, 232); font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-style: initial; text-decoration-color: initial;">import re
from splinter.browser import Browser
from time import sleep
import sys
import httplib2
from urllib import parse
import smtplib
from email.mime.text import MIMEText
</pre>

二、刷票前信息准备

因为输入城市的时候,需要通过cookie值,我主要说一下始发站和目的地的cookie值获取。

cookie值可以通过12306官网,然后在F12(相信所有的coder都知道这个吧)的network里面的查询请求cookie中可以看到,在请求的header里面可以找到,_jc_save_fromStation值是出发站的cookie,_jc_save_toStation的值是目的地的cookie,然后加入到代码里的城市的cookie字典city_list里即可,键是城市的首字母,值是cookie值的形式。

三、模拟登陆

抢票,肯定需要先登录,我这里模拟的登录操作,会自动填充12306的账号名和密码,当然,你也可以在打开的浏览器中修改账号和密码,实现的关键代码如下:

「干货」你还在苦逼地邀请助力吗,Python3.6轻松自动抢火车票

四、刷票中处理

登录之后,就是控制刷票的各种操作处理了,这里,我就不贴代码了,因为代码比较多,别担心,在最后,我会贴出完整的代码的。

五、邮件及短信通知

当刷票成功后,我会进行短信和邮件的双重通知,当然,这里短信通知的平台,就看你用那个具体来修改代码了,我用的是互亿无线的体验版的免费短信通知接口;发送邮件模块我用的是smtplib,发送邮件服务器用的是163邮箱,如果用163邮箱的话,你还没有设置客户端授权密码,记得先设置客户端授权密码就好了,挺方便的。以下是主要实现代码:

「干货」你还在苦逼地邀请助力吗,Python3.6轻松自动抢火车票

说了那么多,下面我贴上大家最关心的源码,请接码。另外可以在GitHub查看最新源码:https://github.com/gxcuizy/Python/blob/master/12306%E6%8A%A2%E7%A5%A8/new_qiangpiao.py

「干货」你还在苦逼地邀请助力吗,Python3.6轻松自动抢火车票 「干货」你还在苦逼地邀请助力吗,Python3.6轻松自动抢火车票 「干货」你还在苦逼地邀请助力吗,Python3.6轻松自动抢火车票 「干货」你还在苦逼地邀请助力吗,Python3.6轻松自动抢火车票 「干货」你还在苦逼地邀请助力吗,Python3.6轻松自动抢火车票 「干货」你还在苦逼地邀请助力吗,Python3.6轻松自动抢火车票

最后

源码进群:943752371获取,还可以获取更多Python入门学习资料!

「干货」你还在苦逼地邀请助力吗,Python3.6轻松自动抢火车票
上一篇下一篇

猜你喜欢

热点阅读