「乾貨」你還在苦逼地邀請助力嗎,Python3.6輕鬆自動搶火車票

「乾貨」你還在苦逼地邀請助力嗎,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

如下代碼是這個腳本所有用到的模塊引入:

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

二、刷票前信息準備

因為輸入城市的時候,需要通過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輕鬆自動搶火車票

最後

源碼私信小編“01”獲取,還可以獲取更多Python入門學習資料!

「乾貨」你還在苦逼地邀請助力嗎,Python3.6輕鬆自動搶火車票


分享到:


相關文章: