鱼C论坛

 找回密码
 立即注册
查看: 658|回复: 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'))
没有返回值
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

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

首先,你定义了一个字典`head`,但是在接下来的代码中又重新给`head`赋值为一个字符串,这样会导致后续使用`head`时出错。我们可以将`head`定义为一个字典,并添加User-Agent头部信息,代码如下:

  1. head = {}
  2. 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()`函数,代码如下:

  1. data = {
  2.     'i': content,
  3.     'from': 'AUTO',
  4.     'to': 'AUTO',
  5.     'smartresult': 'dict',
  6.     'client': 'fanyideskweb',
  7.     'salt': f,
  8.     'sign': sign,
  9.     'doctype': 'json',
  10.     'version': '2.1',
  11.     'keyfrom': 'fanyi.web',
  12.     'action': 'FY_BY_CL1CKBUTTON',
  13.     'typoResult': 'true'
  14. }
  15. data = urllib.parse.urlencode(data).encode('utf-8')
  16. request = urllib.request.Request(url=url, data=data, method='POST', headers=head)
复制代码


最后,完成以上修改后,我们可以得到翻译结果。具体代码如下:

  1. import urllib.request
  2. import urllib.parse
  3. import json
  4. import time
  5. import random
  6. import hashlib

  7. content = input('请输入需要翻译的句子:')

  8. url = '发不了,这里省略'

  9. head = {}
  10. 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'

  11. data = {}

  12. u = 'fanyideskweb'
  13. d = content
  14. f = str(int(time.time() * 1000) + random.randint(1, 10))
  15. c = 'rY0D^0\'nM0}g5Mm1z%1G4'

  16. sign = hashlib.md5((u + d + f + c).encode('utf-8')).hexdigest()

  17. data = {
  18.     'i': content,
  19.     'from': 'AUTO',
  20.     'to': 'AUTO',
  21.     'smartresult': 'dict',
  22.     'client': 'fanyideskweb',
  23.     'salt': f,
  24.     'sign': sign,
  25.     'doctype': 'json',
  26.     'version': '2.1',
  27.     'keyfrom': 'fanyi.web',
  28.     'action': 'FY_BY_CL1CKBUTTON',
  29.     'typoResult': 'true'
  30. }
  31. data = urllib.parse.urlencode(data).encode('utf-8')

  32. request = urllib.request.Request(url=url, data=data, method='POST', headers=head)
  33. response = urllib.request.urlopen(request)

  34. result = json.loads(response.read().decode('utf-8'))
  35. print(result['translateResult'][0][0]['tgt'])
复制代码


现在运行这段代码,就能得到翻译结果啦!希望能帮到你。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-4-22 01:10

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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