今天我們用Python爬蟲和Tkinter界面來作一個翻譯軟件。css
軟件實現功能:當咱們輸入英文或中文時,程序便可打印出來對應的譯文,如圖:python
實現一鍵翻譯最簡單的方式就是爬蟲,咱們只需將要翻譯的內容傳入,而後將翻譯的結果爬取下來呈現給用戶便可。在本文中,咱們選擇的網站是有道翻譯。git
下圖這個界面,你在左邊輸入文字,那麼瀏覽器會把你輸入的信息傳輸給服務器。再在右側返回對應翻譯結果。這就是一個典型的Post操做。github
因爲以前咱們的爬取都是採用的Get方式來獲取數據的,並無用過Post方式,因此這裏簡單給你們說一下怎麼用python發送Post請求:web
發送post請求分爲表單類(x-www-form-urlencoded)和json(application/json)格式,data參數支持字典格式和字符串格式,建議使用字典格式,在使用json.dumps()方法把data轉換爲合法的json格式字符串,或者將data參數賦值給post方法的json參數,data以字符串格式傳輸須要注意的事項:json
咱們仍是按F12打開開發者模式,發現傳入的數據並無在原網頁中出現,因此判斷這是一個使用異步刷新的網站,因此該URL,應該去XHR中尋找,在XHR中發現了咱們傳入的數據,如圖:瀏覽器
一切準備就緒了,能夠開始書寫代碼了,爬蟲部分代碼以下:bash
url='http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule' #使用post須要一個連接 data={'i': word, 'from': 'AUTO', 'to': 'AUTO', 'smartresult': 'dict', 'client': 'fanyideskweb', 'doctype': 'json', 'version': '2.1', 'keyfrom': 'fanyi.web', 'action': 'FY_BY_REALTIME', 'typoResult': 'false'} #將須要post的內容,以字典的形式記錄在data內。 r = requests.post(url, data) #post須要輸入兩個參數,一個是剛纔的連接,一個是data,返回的是一個Response對象 answer=json.loads(r.text) #你能夠本身嘗試print一下r.text的內容,而後再閱讀下面的代碼。 result = answer['translateResult'][0][0]['tgt'] return result
Tkinter是Python的標準GUI庫。Python 使用 Tkinter 能夠快速的建立 GUI 應用程序。服務器
因爲 Tkinter 是內置到 python 的安裝包中、只要安裝好 Python 以後就能 import Tkinter 庫、並且 IDLE 也是用 Tkinter 編寫而成、對於簡單的圖形界面 Tkinter 能應付自如。app
代碼以下:
self.window = Tk()
self.fanyi = YouDaoFanyi()
self.window.title(u'翻譯器') #設置窗口大小和位置 self.window.geometry('310x370+500+300') self.window.minsize(310,370) self.window.maxsize(310,370) #建立一個文本框 self.result_text1 = Text(self.window,background = 'azure') self.result_text1.place(x = 10,y = 5,width = 285,height = 155) self.result_text1.bind("<Key-Return>",self.submit1) #建立一個按鈕 #爲按鈕添加事件 self.submit_btn = Button(self.window,text=u'翻譯',command=self.submit) self.submit_btn.place(x=205,y=165,width=35,height=25) self.submit_btn2 = Button(self.window,text=u'清空',command = self.clean) self.submit_btn2.place(x=250,y=165,width=35,height=25) #翻譯結果標題 self.title_label = Label(self.window,text=u'翻譯結果:') self.title_label.place(x=10,y=165) #翻譯結果 self.result_text = Text(self.window,background = 'light cyan') self.result_text.place(x = 10,y = 190,width = 285,height = 165)
來看看效果圖:
雖然有一些單調,可是能作到這樣仍是很不錯的。
作好程序後,能夠將其打包,這樣之後無論電腦上有沒有python環境,咱們均可以使用這個軟件來進行翻譯,下面來教你們一個簡單的python打包方法。
首先安裝PyInstaller第三方庫。
pip install Pylnstaller
而後使用cmd,切換到須要打包的python程序的存儲目錄,而後輸入該語句便可完成打包。
pyinstaller -F -w xxx.py
以上就是本文的所有內容了,但願可以對你們的學習起到必定的幫助做用!