python 打包 无需安装运行环境_无需Python环境,小白也可以运行的抢票程序
閱讀文本大概需要 5 分鐘。
又到周末了,pk 哥抽空對搶票程序作了優化,并把優化后的程序做打包處理,打包后沒有 Python 環境的電腦也可以正常運行程序了。前兩篇關于搶票的文章沒看可點下方鏈接查看。
目錄優化瀏覽器驅動路徑
優化車站cookie值
優化參數輸入
打包搶票程序
源碼獲取優化瀏覽器驅動路徑
之前的代碼中會讓大家在初始化函數中輸入自己瀏覽器驅動的本地路徑,很繁瑣,可能有些伙伴忘了輸入或者有轉義字符的問題。這次 pk 哥直接把 driver 的路徑賦值這一行代碼拿掉了。
注釋掉這行代碼的后果很嚴重,程序會找不到驅動去啟動瀏覽器,哈哈。怎么辦?很簡單,我們把下載解壓后的驅動 chromedriver 放在 Python 的安裝路徑下即可解決。
優化車站cookie值
之前運行程序前會讓大家去瀏覽器中調試模式中查看對應城市的 cookie 值,把 cookie 填入到出發地和目的地的參數里,才能搶你想要的車次的火車票。能不能直接輸入我們熟悉的站名,然后代碼自動轉化為 cookie 呢?通過觀察分析,我們發現,這些 cookie 值前部分是中文對應的 Unicode 碼,我們用轉碼的方法把中文轉換成 Unicode 碼。
后面 %2c 是固定的,最后的大寫的字母是車站的縮寫,這些縮寫哪里獲取呢?12306 提供了一個接口,鏈接如下。
https://kyfw.12306.cn/otn/resources/js/framework/station_name.js?station_version=1.9058
這個接口我們直接瀏覽器打開可以看到所有的車站信息。
接下來,我們需要對這些信息進行處理,這個思路和方法來自公眾號一位讀者,在上一篇文章中,他也給我留言了并告知了優化的方法,非常感謝。他把我上一篇的代碼優化后放在了 GitHub 上,地址如下。歡迎大家一起優化這個程序。https://github.com/Archiewyq/12306/blob/master/12306.example.py
處理后把 Unicode 碼和車站的簡寫拼接成完成的車站 cookie 值。
優化參數輸入
這個優化是針對于下面的打包做準備的,因為打包后我們看不到源碼,只能用輸入的形式來改變這些變量參數,輸入的方法 Python3 中用的是 input()。如果不想每次輸入的話可以把 input 方法替換成之前固定字符串的寫法就行。
打包搶票程序
現在講講本文的另一個知識點,Python 程序打包。我們知道,Python 腳本如果在沒有安裝 Python 的機器上不能運行,所以將腳本打包成 exe 文件,降低腳本對環境的依賴性,同時運行更加迅速。但這個搶票程序需要輸入的配置項比較多,其實不太適合打包,大家可以作為一個知識點來學,對于那些基本沒有配置項的程序來說非常合適。
打包的庫是 pyinstaller,用 pip 命令直接安裝。
pip?install?pyinstaller
安裝成功后,我們就可以用 pyinstaller 庫對 Python 文檔進行打包了,打包 Python 文檔的命令格式如下:pyinstaller?[options]?script?[script?...]?|?specfile
option 參數有很多,大家有興趣的可參考官方文檔。
https://pyinstaller.readthedocs.io/en/stable/usage.html
今天我只用到一種 option,就是 -f:僅生成一個可執行文件。執行命令后需要等待幾分鐘。
顯示 successfully 表示打包成功,exe 包在你的代碼同一目錄下,exe 文件在打包時自動新建的 dist 目錄下。
打開 dist 目錄下的 exe 文件,在 windows 系統下雙擊文件即可運行程序實現搶票。顯示的信息頁面和我們用編輯器看到的是一樣的。
ps:本次程序去掉了發郵件功能的代碼。
我建了一個火車票助力群,也是為了讓大家有更多的途徑搶到票,回家過年,大家可以在群里可以相互點點小程序助力,這樣搶到額概率更大一下。群里也歡迎討論搶票技術,討論 Python,一起成長。
總結
以上是生活随笔為你收集整理的python 打包 无需安装运行环境_无需Python环境,小白也可以运行的抢票程序的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java mysql连接两张表,如何使用
- 下一篇: python多个异常处理_python中