Python製作有道翻譯小工具

  • 2019 年 10 月 19 日
  • 筆記

該工具主要是利用了爬蟲,爬取web有道翻譯的內容. 然後利用簡易GUI來可視化結果。

首先我們進入有道詞典的首頁,並點擊翻譯結果的審查元素

之後request響應網頁,並分析網頁,定位到翻譯結果。

使用tkinter來製作一個建議的GUI

期間遇到的一個問題則是如何刷新翻譯的結果,否則的話會在text里一直累加翻譯結果。

於是,在mainloop裏面用到了T1.delete方法,來每次刪除TEXT里的內容。

 

import urllib.request  import  urllib.parse  import json  import tkinter as tk  from tkinter import *    from tkinter import messagebox    window = tk.Tk()  window.geometry('600x400+200+200')  window.title("有道詞典翻譯")  L1=tk.Label(window,text='請輸入翻譯內容:',font=('楷體',20),fg='blue')  L1.place(x=30)  E1=tk.Entry(window,text="",font=('宋體',16),width=30)  E1.place(x=80,y=50)  def transit():      T1.delete(1.0, tk.END)      var = E1.get()      if var == '':          messagebox.showinfo('提示', message='請輸入要翻譯內容')      else:            data = {              'i': var,              'from': 'AUTO',              'to': 'AUTO',              'smartresult': 'dict',              'client': 'fanyideskweb',              'salt': '15619904887064',              'sign': 'a14ab29954353efd9d6aa92ebd94aa62',              'ts': '1561990488706',              'bv': '3a019e7d0dda4bcd253903675f2209a5',              'doctype': 'json',              'version': '2.1',              'keyfrom': 'fanyi.web',              'action': 'FY_BY_CLICKBUTTION'          }          url = "http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule"            data = urllib.parse.urlencode(data).encode('utf-8')          response = urllib.request.urlopen(url,data)          html = response.read().decode('utf-8')            #print(html)          target=json.loads(html)          #print(target)          #a=target['translateResult'][0][0]          #print(a)          b=target['translateResult'][0][0]['tgt']          #print(b)          T1.insert('end', b)        T1=tk.Text(window,height=4)  T1.place(x=20,y=130)    B1=tk.Button(window,text='TransLate it',width=10,height=3,fg='red',command=transit)  B1.place(x=500,y=30)    canvas = tk.Canvas(window, height=160, width=500)#創建畫布  image_file = tk.PhotoImage(file="cat.gif")#加載圖片文件  image = canvas.create_image(0,0, anchor='nw', image=image_file)#將圖片置於畫布上  canvas.place(x=50,y=210)#放置畫布(為上端)        window.mainloop()

以下是運行結果: