用tkinter创建两个text和一个button,在输入的text中输入待翻译的内容,点击按钮,程序获取输入的内容,提交表单并爬取有道翻译,获取翻译结果,显示在另一个text内
附上菜鸟工具 HTML取色器:https://c.runoob.com/front-end/5449
效果图:
程序代码:
import requests
from bs4 import BeautifulSoup
import json
import tkinter as tk
from tkinter import scrolledtext
from datetime import datetime
def trs():
word = src.get("0.0","end")#获取编辑框数据
word = word.lstrip()
word = word.rstrip()#去掉两端的空格
if len(word) == 0: #判断输入框内容是否为空
return -1
html = get_html(word)#获取有道翻译返回html
res = parser_data(html)#处理数据,返回翻译结果
tgt.delete("0.0","end")#清空原来的显示
tgt.insert(tk.INSERT,res)#显示新翻译内容
def get_html(word):
url = "http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule"
head = {"User-Agent":"Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.75 Safari/537.36"}
form = { #提交表单-> network -> XHR
"i":word,
"from":"AUTO",
"to":"AUTO",
"smartresult":"dict",
"client":"fanyideskweb",
"salt":"15550368029030",
"sign":"1a07b4fe5d7cc90cec2aefb87b5cd17f",
"ts":"1555036802903",
"bv":"d39271655f6b7da338c7d58f74b0fad8",
"doctype":"json",
"version":"2.1",
"keyfrom":"fanyi.web",
"action":"FY_BY_REALTlME"
}
res = requests.post(url,headers=head,data=form)
return res.text
def parser_data(html):
res = json.loads(html)
res = res["translateResult"]
length = len(res)
trs = ""
for x in range(length):
trs = trs + res[x][0]["tgt"] +"\n"
return trs
mainWindow = tk.Tk()
mainWindow.minsize(800,540)
mainWindow.title("翻译官")
font_text = "Calibri"
font_size = 16
src = scrolledtext.ScrolledText(mainWindow,font=(font_text,font_size),bg="#0B3B39",fg="white")
src.place(x=0,y=0,width=400,height=500)
translation = tk.Button(mainWindow,font=(font_text,font_size),text="翻译",
bg="orange",fg="white",command=lambda:trs())
translation.place(x=0,y=500,width=800,height=40)
tgt = scrolledtext.ScrolledText(mainWindow,font=(font_text,font_size),bg="#292A0A",fg="white")
tgt.place(x=400,y=0,width=400,height=500)
mainWindow.mainloop()