前言
Git上Star9.4K的py12306,慕名而來,在本地搭建購票環境。
尊重作者成果,先貼別人鏈接,py12306的Git地址是:https://github.com/pjialin/py12306
先說我搭建環境的結果:剛開始登陸期間長時間打碼失敗,嘗試了幾分鐘之後才登陸成功。
打碼失敗: 錯誤原因 從免費打碼獲取結果失敗
在登陸成功之後設置買硬座與無座票,由於沒有硬座,log信息爲:
檢查完成 開始提交訂單 提交訂單失敗,錯誤原因 網絡錯誤
不知道是不是bug。買不到無座票。
開始
-
按照py12306的Readme,安裝依賴,
pip install -r requirements.txt
,結果發現lxml沒有安裝成功。於是我不管了,直接不指定版本,直接install lxml,看到lxml版本是4.4.2。我本地使用的是Python3.8。requirements.txt裏面設定的是lxml==4.3.0,於是我把這個文件裏面的lxml設定爲4.4.2。所有的依賴全部安裝成功。 -
cp env.py.example env.py,其實也就是copy前者爲後者,直接複製粘貼改名爲env.py。
-
啓動前測試,python main.py -t發現報錯。TypeError: required field “type_ignores” missing from Module,網上查了下,原來是python3.8的版本與werkzeug包的衝突, werkzeug的routing.py報錯。
module = ast.fix_missing_locations(ast.Module([func_ast], []))
Python3.8要求ast.Module()方法裏面必須帶第二個參數,這裏什麼都沒有,就傳個空列表。第二個參數加了“[]”。
解決這個問題的參考鏈接是:https://www.jianshu.com/p/95588bf4e63d
-
到這裏在運行python main.py,沒什麼問題了。
-
然後需要在env.py文件裏面修改自己的賬號密碼,車次等等信息。開啓log等。
最後
在log裏面發現下載驗證碼經常失敗,非常不穩定。
運行成功之後的截圖如下:
謝謝!