这个软件并不是自己写源代码
只是提供一个接口和有道词典相连结

一.获取网站数据

打开有道翻译网站

输入一句带翻译的文本,这样才能在之后找到post数据

鼠标右键点击审查元素

python根据代码直接生成伪代码 python转伪代码_python


再点击右边的Nextwork 再点击左边的翻译键,这样才能让网页反应,获得这个网页methodGETPOST数据

找不到method可以再name上点击右键,就会有method

post是网页上传的数据,get是获得的数据点击post的项目

python根据代码直接生成伪代码 python转伪代码_json_02


preview有我们刚刚翻译的文本

说明找对了点击左边的headers

python根据代码直接生成伪代码 python转伪代码_json_03

generalrequest url就是我们一会要在代码中传入的网址

python根据代码直接生成伪代码 python转伪代码_json_04


这里的UTF-8就是这个网站的编码格式,之后在代码中要转换的

python根据代码直接生成伪代码 python转伪代码_数据_05

最下面的form data是我们一会要解码的数据

python根据代码直接生成伪代码 python转伪代码_html_06

二.代码

python的urllib其实是个包
里面有三个模块,这里用到其中两个requestparse

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解码

输出是这样的

python根据代码直接生成伪代码 python转伪代码_python根据代码直接生成伪代码_07


首先进行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']))

三.结果演示

python根据代码直接生成伪代码 python转伪代码_json_08

不过这翻译也有犯病的时候

python根据代码直接生成伪代码 python转伪代码_python根据代码直接生成伪代码_09


正常翻译应该是我最大的遗憾是我的遗憾与你有关

但是这翻译出来是这么一句狗屁不通的话后来我发现在有道翻译的网页中这个翻译结果是可选的

python根据代码直接生成伪代码 python转伪代码_数据_10


然后这个代码选了一个最不通顺的

吐了

以后慢慢改进⑧