鱼C论坛

 找回密码
 立即注册
查看: 216|回复: 1

有道翻译爬虫

[复制链接]
发表于 2024-6-10 17:21:13 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
小甲鱼爬虫第二课
代码:
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
data['from'] = 'AUTO'
data['to'] = 'AUTO'
data['smartresult'] = 'dict'
data['client'] = 'fanyideskweb'
data['salt'] = f
data['sign'] = sign
data['doctype'] = 'json'
data['version'] = '2.1'
data['keyfrom'] = 'fanyi.web'
data['action'] = 'FY_BY_CL1CKBUTTON'
data['typoResult'] = 'true'

data = urllib.parse.urlencode(data).encode('utf-8')
request = urllib.request.Request(url=url, data=data, method='POST')
response = urllib.request.urlopen(request)

print(response.read().decode('utf-8'))
没有返回值
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2024-6-10 17:24:15 | 显示全部楼层
代码中存在一些问题,导致没有返回值。我来帮你修复一下。

首先,你定义了一个字典`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 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-9-22 20:29

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表