今天咱們用Python爬蟲和Tkinter界面來做一個翻譯軟體,
一、運行效果
軟體實作功能:當我們輸入英文或中文時,程式即可列印出來對應的譯文,如圖:
二、實作方法
1. 爬蟲部分
實作一鍵翻譯最簡單的方式就是爬蟲,我們只需將要翻譯的內容傳入,然后將翻譯的結果爬取下來呈現給用戶即可,在本文中,我們選擇的網站是有道翻譯,
下圖這個界面,你在左邊輸入文字,那么瀏覽器會把你輸入的資訊傳輸給服務器,再在右側回傳對應翻譯結果,這就是一個典型的Post操作,
由于之前我們的爬取都是采用的Get方式來獲取資料的,并沒有用過Post方式,所以這里簡單給大家說一下怎么用python發送Post請求:
發送post請求分為表單類(x-www-form-urlencoded)和json(application/json)格式,data引數支持字典格式和字串格式,建議使用字典格式,在使用json.dumps()方法把data轉換為合法的json格式字串,或者將data引數賦值給post方法的json引數,data以字串格式傳輸需要注意的事項:
- 必須是json格式字串,必須用雙引號,k-v之家必須有逗號,布林值必須是小寫的true/false
- 不能有中文,直接傳字串不會自動編碼
我們還是按F12打開開發者模式,發現傳入的資料并沒有在原網頁中出現,所以判斷這是一個使用異步重繪的網站,所以該URL,應該去XHR中尋找,在XHR中發現了我們傳入的資料,如圖:
一切準備就緒了,可以開始書寫代碼了,爬蟲部分代碼如下:
url='http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule'
#使用post需要一個鏈接
data=https://www.cnblogs.com/python147/archive/2021/02/20/{'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
2.Tkinter部分
Tkinter是Python的標準GUI庫,Python 使用 Tkinter 可以快速的創建 GUI 應用程式,
由于 Tkinter 是內置到 python 的安裝包中、只要安裝好 Python 之后就能 import Tkinter 庫、而且 IDLE 也是用 Tkinter 撰寫而成、對于簡單的圖形界面 Tkinter 能應付自如,
代碼如下:
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
以上就是本文的全部內容了,希望能夠對大家的學習起到一定的幫助作用!
四、代碼獲取
https://github.com/bigtigeryo/yingyihan
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/261628.html
標籤:其他
