1. 程式人生 > >女朋友是機票販子?用Python寫個刷飛機票的指令碼!生活費多了兩百

女朋友是機票販子?用Python寫個刷飛機票的指令碼!生活費多了兩百

女朋友是機票販子?用Python寫個刷飛機票的指令碼!生活費多了兩百

 

女朋友是機票販子?用Python寫個刷飛機票的指令碼!生活費多了兩百

 

進群:548377875   即可獲取數十套PDF從零基礎到專案實戰的哦!

看到上面的介面你是否也有下面的感受:

 

女朋友是機票販子?用Python寫個刷飛機票的指令碼!生活費多了兩百

 

 

簡單描述一下eterm的操作流程,方便理解指令碼的實現過程。

輸入查詢命令:

AVH/PEKNRT/15NOV/CA

【查詢從北京首都機場到日本東京成田國際機場,11月15日,國航的航班資訊】

然後雙擊 後面的空白部分,即可顯示各個航班的機票情況詳細資訊。

女朋友是機票販子?用Python寫個刷飛機票的指令碼!生活費多了兩百

 

女朋友是機票販子?用Python寫個刷飛機票的指令碼!生活費多了兩百

 

正文

上面提到的文章中使用了windows的api介面,但我按文章中的操作,使用spy++並沒有找到這個操作介面的“控制代碼”。對於我這個software菜鳥來說,找控制代碼實在是太難了,找到控制代碼還有再操作控制代碼就更難了。

上面的文章還使用了另一個工具:PyMouse。我在學習上面的文章時,發現這個庫真的真的太好用了。PyMouse 再配合PyKeyboard簡直就是windows 自動化的神器呀。

在安裝PyMouse這個庫時遇到了一個坑,記錄一下:

Python3中使用的PyMouse這個庫作者已經不在維護,直接使用pip install PyMouse會失敗,失敗後記得uninstall。

現在這個庫包含在PyUserInput這個庫中。PyUserInput還包括操作鍵盤的PyKeyboard庫。

在安裝PyUserInput時還是需要安裝Pyhook。不清楚為什麼PyHook不可以直接pip安裝,需要先下載Pyhook的whl,具體可以參考下文:

https://blog.csdn.net/yanshuai_tek/article/details/80868917

https://blog.csdn.net/shij19/article/details/53046048

雖然我沒有找到eTerm的api介面,沒辦法直接操作eTerm,但我現在有了可以模擬滑鼠鍵盤的庫,我就可以直接模擬人工操作eTerm的過程了呀。

女朋友是機票販子?用Python寫個刷飛機票的指令碼!生活費多了兩百

 

由於eTerm這個軟體大家應該聽都沒聽過,應該沒辦法執行整個指令碼,部分指令碼如下:

 1from pykeyboard import PyKeyboard
 2from pymouse import PyMouse
 3import time
 4import re
 5import win32clipboard as w
 6import win32con
 7import smtplib 
 8from email.mime.text import MIMEText
 9
10
11k = PyKeyboard()
12m = PyMouse()
13passList = ['A','1','2','3','4','5','6','7','8','9']
14mailto_list=['
[email protected]
'] 15 16#用於將剪貼簿中的資訊複製到text變數中 17def getText(): 18 w.OpenClipboard() 19 t = w.GetClipboardData(win32con.CF_TEXT) 20 w.CloseClipboard() 21 text = str(t,encoding = 'utf8') 22 return text 23 24#解析航班資訊的函式,此處省略了 25def exText(txtList): 26 fDict = {} 27 ....... 28 return fDict 29 30#重新整理航班資訊,複製航班資訊到剪貼簿 31def checkData(a_x,a_y,b_x,b_y,c_x,c_y): 32 m.click(c_x,c_y,1,2)#第3個引數1表示左鍵,第4個引數2表示雙擊 33 time.sleep(3) 34 m.click(a_x,a_y) 35 k.press_key(k.shift_key) 36 m.click(b_x,b_y) 37 k.release_key(k.shift_key) 38 k.press_key(k.control_key) 39 k.tap_key('C') 40 k.release_key(k.control_key) 41 time.sleep(3) 42 newText = getText() 43 return newText 44 45 46#發現有低艙時,給自己發郵件,在之前文章中有此程式碼。 47class mailhelper(object): 48 pass 49 50def main(): 51 print("請在3秒內把滑鼠放在第一個點位置") 52 time.sleep(3) 53 a_x,a_y = m.position() 54 print("請在3秒內把滑鼠放在第二個點位置")#前兩個位置用於獲取航班資訊 55 time.sleep(3) 56 b_x,b_y = m.position() 57 print("請在3秒內把滑鼠放在要雙擊的位置")#這個位置用於重新整理航班資訊 58 time.sleep(3) 59 c_x,c_y = m.position() 60 for i in range(3): 61 text = checkData(a_x,a_y,b_x,b_y,c_x,c_y) 62 textList = text.split(' ') 63 flyDict = exText(textList) 64 emailText = checkClass('UA850','L',flyDict) 65 print(emailText) 66 time.sleep(10) 67 68 if emailText : 69 mailhelper().send_mail(mailto_list,'發現一個低艙',emailText) 70 71 72 73if __name__ == '__main__': 74 main()

>>>>價格

最後,問一下大家,我把這個指令碼賣個我的客戶(老婆),收多少錢合適~~多了兩百塊生活費。真開心!