大家好,今天我们来制作一款有图形界面的翻译小软件,下面我们开始吧
|Tkinter模块介绍
tkinter模块是一款让我们有图形界面的库,是大部分初学者要学习的。
|urllib包
urllib包里一共有4个模块,第一个模块是最复杂也是最重要的,它包含了对服务器请求的发出、跳转、代理和安全等各方面。
通过urllib.request.urlopen()就可以了
但是我们发现,python爬取的是以utf-8编码的bytes对象,要对其进行解码,将他变成unicode:
|实战:翻译
在实战之前,以下3个函数你还会用到:
·geturl()——返回请求的url
·info()——返回一个httplib,HTTPMessage对象
·getcode()——fanhuiHTTP状态码
下面开始了:
我们要用到有道词典来翻译文本
首先来到翻译官网(http://fanyi.youdao.com)出现这个画面:
要使用浏览器的“检查元素”功能,切换到Network窗口,找到translate_o?这项,requestmethod应是POST:
找到上图所示的headers,里面有各种信息
这是我们就可以开始写代码了:
import jsonfrom tkinter import *import requestsimport base64#翻译函数,el是要翻译的,res是翻译结果def translate(el,res): content = el.get().strip() #得到要翻译的内容 url = "http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule&smartresult=ugc&sessionForm=http://www.youdao.com/" #传输参数 key = { 'from':'AUTO', 'to':'AUTO', 'i':content, "smartresult":"dict", "client":"fanyideskweb", "version":"2.1", "doctype":"json", "keyform":"fanyi.web", "ue":"UTF-8", "action":"FY_BY_REALTIME", } #key字典发送给有道服务器 response = requests.post(url,data=key) if response.status_code == 200: response = response.text #通过json.loads加载成json格式 result = json.loads(response) #结果返回到文本框 res.set(result['translateResult'][0][0]['tgt']) #判断是否发送成功''' target = json.loads(html) print("翻译结果:%s"%(target['translateResult'][0][0]['tgt']))''' #用做测试def tk(): root=Tk() root.title("贤谈小栈翻译软件") root.geometry('450x200') Label(root,text='原文:').place(x=30,y=30) Label(root,text='译文:').place(x=30,y=70)#设置焦点 el=Entry(root) el.focus() el.place(x=80,y=30,width=250,height=30) res = StringVar() e2 = Entry(root,textvariable=res) e2.place(x=80,y=70,width=250,height=30) Button(root,text='翻译',width=10,command=lambda:translate(el,res)).place(x=80,y=120) Button(root,text='退出',width=10,command=root.quit).place(x=240,y=120) #消息循环 mainloop()def main(): tk()if __name__ == '__main__': main()
|运行结果
结果
|转换成exe
转换exe有很多工具,这里用的pyinstaller
cmd里使用pip:
pip install pyinstaller
如果觉得慢可以使用其他网站资源
然后输入
pyinstaller -F -w 文件位置:\fanyi.py
就可以了
生成的exe:
|总结
主要讲了python的爬虫,tkinter模块。如果你觉得有意思,赶紧点再看分享给身边的小伙伴吧!(本文原创不易)