Python3.6實現12306火車票自動搶票,附源碼

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

相關文章
相關標籤/搜索