今天咱们用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中发现了我们传入的数据,如图:
一切准备就绪了,可以开始书写代码了,爬虫部分代码如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
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
|
2.tkinter部分
tkinter是python的标准gui库。python 使用 tkinter 可以快速的创建 gui 应用程序。
由于 tkinter 是内置到 python 的安装包中、只要安装好 python 之后就能 import tkinter 库、而且 idle 也是用 tkinter 编写而成、对于简单的图形界面 tkinter 能应付自如。
代码如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
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第三方库。
1
|
pip install pylnstaller
|
然后使用cmd,切换到需要打包的python程序的存储目录,然后输入该语句即可完成打包。
1
|
pyinstaller - f - w xxx.py
|
以上就是本文的全部内容了,希望能够对大家的学习起到一定的帮助作用!
四、代码获取
https://github.com/bigtigeryo/yingyihan
以上就是python爬虫+tkinter制作一个翻译软件的示例的详细内容,更多关于python 制作翻译软件的资料请关注服务器之家其它相关文章!
原文链接:https://www.cnblogs.com/python147/archive/2021/02/20/14420845.html