最近在學Python,所以用Python寫了這個12306搶票腳本,分享出來,與大家共同交流和學習:
實現思路是splinter.browser模擬瀏覽器登陸和操作,由於12306的驗證碼不好自動識別,所以,驗證碼需要用戶進行手動識別,並進行登陸操作。
之後的事情,就交由腳本來操作就可以了,下面是我測試時候的一些截圖:
第一步:如下圖,首先輸入搶票基本信息
第二步:然後進入登錄頁,需要手動輸入驗證碼,並點擊登陸操作
第三步:登陸後,自動進入到搶票頁面,如下圖這樣的圖片描述
最後:就是坐等刷票結果就好了,如下圖這樣,就說是刷票成功了,刷到票後,會進行短信和郵件的通知,請記得及時前往12306進行支付,不然就白搶了。
下面是代碼實現部分:
一、語言環境及相關模塊
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的賬號名和密碼,當然,你也可以在打開的瀏覽器中修改賬號和密碼,實現的關鍵代碼如下:
四、刷票中處理
登錄之後,就是控制刷票的各種操作處理了,這裡,我就不貼代碼了,因為代碼比較多,別擔心,在最後,我會貼出完整的代碼的。
五、郵件及短信通知
當刷票成功後,我會進行短信和郵件的雙重通知,當然,這裡短信通知的平臺,就看你用那個具體來修改代碼了,我用的是互億無線的體驗版的免費短信通知接口;發送郵件模塊我用的是smtplib,發送郵件服務器用的是163郵箱,如果用163郵箱的話,你還沒有設置客戶端授權密碼,記得先設置客戶端授權密碼就好了,挺方便的。以下是主要實現代碼:
說了那麼多,下面我貼上大家最關心的源碼,請接碼。另外可以在GitHub查看最新源碼:https://github.com/gxcuizy/Python/blob/master/12306%E6%8A%A2%E7%A5%A8/new_qiangpiao.py
最後
源碼私信小編“01”獲取,還可以獲取更多Python入門學習資料!
閱讀更多 編程夢想家 的文章