本搶票軟體功能設計分為4個部分:
1.模擬登入
2.自主選座
3.新增郵寄位址和購票人資訊
4.軟體封裝
這裡以大麥網的搶票軟體為例,**登入提供三種方法(暫時不考慮通過第三方進行登入),簡訊登入由於涉及和手機端或者模擬手機端進行通訊,不考慮,僅剩下密碼登入和掃碼登入兩種方式,故初步思考實現模擬登入有三種方法。
1.每次登入時手動輸入賬號密碼進行登入
2.軟體自動輸入賬號密碼,繞過進度條驗證過程
3.軟體自動通過儲存cookie進行掃碼登入
方案一:
在程式實現過程中,發現大麥網有防止刷票的機制,在刷票時如果多次進行重新整理,就會讓使用者重新登入,這種情況是在刷票的同時不允許出現的,故方案一被拋棄。
方案二:
由於不清楚大麥網內部關於爬蟲登入的進度條機制,且經過測試發現在selenium下進度條的篩選極為嚴格,甚至有時候人來拖動都沒辦法通過,考慮程式演算法實現的較難驗證的特性,拋棄。
方案三:
掃碼登入是一種比較特殊的登入方式,不需要經過進度條驗證,這樣可以通過儲存人的一次登入過程產生的cookie進行重複登入,是一種很好的方法。
原始碼如下:
def set_cookie(self):
self.driver.get(damai_url)
print("###登入###")
while self.driver.title.find('大麥網-全球演出賽事官方購票平台') != -1:
sleep(1)
print("###請掃碼登入###")
while self.driver.title == '大麥登入':
sleep(1)
print("###掃碼成功###")
pickle.dump(self.driver.get_cookies(), open("cookies.pkl", "wb"))
print("###cookie儲存成功###")
self.driver.get(target_url)
def get_cookie(self):
try:
cookies = pickle.load(open("cookies.pkl", "rb"))
for cookie in cookies:
cookie_dict =
self.driver.add_cookie(cookie_dict)
print('###載入cookie###')
except exception as e:
print(e)
def login(self):
if self.login_method == 0:
self.driver.get(login_url)
print('###開始登入###')
elif self.login_method == 1:
if not os.path.exists('cookies.pkl'):
self.set_cookie()
else:
self.driver.get(target_url)
self.get_cookie()
def enter_concert(self):
print('###開啟瀏覽器,進入大麥網###')
self.driver = webdriver.chrome()
self.login()
self.driver.refresh()
self.status = 2
print("###登入成功###")
需要注意的是,在追蹤**前端的標籤時,其名稱,標籤名時經常更新的,可以通過f12在瀏覽器中檢視對應的標籤號進行程式邏輯的修改。
github工程:
搶票軟體開發 四 軟體封裝
封裝軟體是採用的是config.ini配置檔案與pyinstaller進行結合的方式,1.config檔案中主要配置的是 鏈結等資訊,供使用者根據需要進行調整 2.pyinstaller是將軟體封裝成exe檔案,目的是在其他電腦上也可以執行 其中需要提及的是 1.ini檔案的操作由於其中涉及通過co...
軟體開發實操彙總(二)軟體開發基礎
有了上述經營戰略 內部資源配置及專案自身情況等內容的彙總及分析,針對不同情況,在開發前,應具體深入的進行專案的前期調研,梳理出專案的具體需求及各種問題,將需求和問題一一落實到文件編制。此過程是專案是否能夠順利實施並取得預期效果的關鍵,大體分為以下幾個步驟 1 需求和問題的歸納 2 編制需求文件 問題...
軟體開發不可與建築模擬
多年以來,軟體行業一直在使用一種模擬,即以建築來做參考和比喻。這種比較在軟體語言裡隨處可見,比如架構 architecture 地基 foundation 建造者 constructor 專案 project 施工規範 building code 等。這些說法是如此之流行,以至於影響到了我們對軟體開...