代码中存在一些问题,导致没有返回值。我来帮你修复一下。
首先,你定义了一个字典`head`,但是在接下来的代码中又重新给`head`赋值为一个字符串,这样会导致后续使用`head`时出错。我们可以将`head`定义为一个字典,并添加User-Agent头部信息,代码如下:
head = {}
head['User-Agent'] = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36 Edg/125.0.0.0'
其次,你将需要传递的数据都赋值给了同一个变量`data`,导致前面的值被后面的值覆盖掉。我们可以将所有需要传递的数据放入一个字典中,并用`urllib.parse.urlencode()`方法将它们编码成URL参数字符串。然后,将参数字符串转换成字节流并传递给`urllib.request.Request()`函数,代码如下:
data = {
'i': content,
'from': 'AUTO',
'to': 'AUTO',
'smartresult': 'dict',
'client': 'fanyideskweb',
'salt': f,
'sign': sign,
'doctype': 'json',
'version': '2.1',
'keyfrom': 'fanyi.web',
'action': 'FY_BY_CL1CKBUTTON',
'typoResult': 'true'
}
data = urllib.parse.urlencode(data).encode('utf-8')
request = urllib.request.Request(url=url, data=data, method='POST', headers=head)
最后,完成以上修改后,我们可以得到翻译结果。具体代码如下:
import urllib.request
import urllib.parse
import json
import time
import random
import hashlib
content = input('请输入需要翻译的句子:')
url = '发不了,这里省略'
head = {}
head['User-Agent'] = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36 Edg/125.0.0.0'
data = {}
u = 'fanyideskweb'
d = content
f = str(int(time.time() * 1000) + random.randint(1, 10))
c = 'rY0D^0\'nM0}g5Mm1z%1G4'
sign = hashlib.md5((u + d + f + c).encode('utf-8')).hexdigest()
data = {
'i': content,
'from': 'AUTO',
'to': 'AUTO',
'smartresult': 'dict',
'client': 'fanyideskweb',
'salt': f,
'sign': sign,
'doctype': 'json',
'version': '2.1',
'keyfrom': 'fanyi.web',
'action': 'FY_BY_CL1CKBUTTON',
'typoResult': 'true'
}
data = urllib.parse.urlencode(data).encode('utf-8')
request = urllib.request.Request(url=url, data=data, method='POST', headers=head)
response = urllib.request.urlopen(request)
result = json.loads(response.read().decode('utf-8'))
print(result['translateResult'][0][0]['tgt'])
现在运行这段代码,就能得到翻译结果啦!希望能帮到你。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 |