这个软件并不是自己写源代码
只是提供一个接口和有道词典相连结
一.获取网站数据
打开有道翻译网站
输入一句带翻译的文本,这样才能在之后找到post
数据
鼠标右键点击审查元素
再点击右边的Nextwork
再点击左边的翻译键,这样才能让网页反应,获得这个网页method
的GET
和POST
数据
找不到method
可以再name
上点击右键,就会有method
post
是网页上传的数据,get
是获得的数据点击post
的项目
在preview
有我们刚刚翻译的文本
说明找对了点击左边的headers
在general
的request url
就是我们一会要在代码中传入的网址
这里的UTF-8就是这个网站的编码格式,之后在代码中要转换的
最下面的form data
是我们一会要解码的数据
二.代码
python的urllib
其实是个包
里面有三个模块,这里用到其中两个request
和parse
import urllib.request #申请数据
import urllib.parse #解析
import json
这个json
是个数据类型,最后我们获得的结果是这个格式
所以要把他转换成我们熟悉的python数据类型
json.dumps(): 对数据进行编码。
json.loads(): 对数据进行解码。
之后将这个网页的url网址储存
#链接
url = 'http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule'
#源地址是 http://fanyi.youdao.com/translate_o?smartresult=dict&smartresult=rule
#但是会出现errorcode:50 去掉里面的_o就可以了,鬼知道这是为什么
数据from data
也储存进来
不过这里的data要以字典的形式储存
#数据
data = {}
data['i'] = content
data['from'] = 'AUTO'
data['to'] = 'AUTO'
data['smartresult'] = 'dict'
data['client'] = 'fanyideskweb'
data['salt'] = '15946979284607'
data['sign'] = '435d1688ed58d07624822d5eae596de8'
data['ts'] = '1594697928460'
data['bv'] = '6275445dcf58d2f326d4a0dd44c9b352'
data['doctype'] = 'json'
data['version'] = '2.1'
data['keyfrom'] = 'fanyi.web'
data['action'] = 'FY_BY_CLICKBUTTION'
对数据进行编码
使用包urllib
中的parse
模块对data
进行以utf-8
的格式编码
#编码函数
data = urllib.parse.urlencode(data).encode('UTF-8')
获得编码后的文件
将这个网页文件打开
#获得文件
response = urllib.request.urlopen(url,data)
对上述文件进行解码
#将utf-8的文件解码
html = response.read().decode('UTF-8')
获得翻译结果
target = json.loads(html)
print('翻译结果:%s ' % (target['translateResult'][0][0]['tgt']))
这里为什么会是一个target['translateResult'][0][0]['tgt']
如果我们不进行json
解码
输出是这样的
首先进行json
解码
然后获得一个字典
翻译结果在关键字translatResult
中
这个关键字的内容又是一个列表的列表,最后又套了一个字典
所以是target['translateResult'][0][0]['tgt']
完整源代码
import urllib.request #申请数据
import urllib.parse #解析
import json
#输入翻译文本
content = input('输入翻译文本')
#链接
url = 'http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule'
#源地址是 http://fanyi.youdao.com/translate_o?smartresult=dict&smartresult=rule
#但是会出现errorcode:50 去掉里面的_o就可以了,鬼知道这是为什么
#数据
data = {}
data['i'] = content
data['from'] = 'AUTO'
data['to'] = 'AUTO'
data['smartresult'] = 'dict'
data['client'] = 'fanyideskweb'
data['salt'] = '15946979284607'
data['sign'] = '435d1688ed58d07624822d5eae596de8'
data['ts'] = '1594697928460'
data['bv'] = '6275445dcf58d2f326d4a0dd44c9b352'
data['doctype'] = 'json'
data['version'] = '2.1'
data['keyfrom'] = 'fanyi.web'
data['action'] = 'FY_BY_CLICKBUTTION'
#编码函数
data = urllib.parse.urlencode(data).encode('UTF-8')
#获得文件
response = urllib.request.urlopen(url,data)
#将utf-8的文件解码
html = response.read().decode('UTF-8')
target = json.loads(html)
print('翻译结果:%s ' % (target['translateResult'][0][0]['tgt']))
三.结果演示
不过这翻译也有犯病的时候
正常翻译应该是我最大的遗憾是我的遗憾与你有关
但是这翻译出来是这么一句狗屁不通的话后来我发现在有道翻译的网页中这个翻译结果是可选的
然后这个代码选了一个最不通顺的
吐了
以后慢慢改进⑧