鱼C论坛

 找回密码
 立即注册
查看: 62|回复: 2

python访问有道翻译问题

[复制链接]
发表于 6 天前 | 显示全部楼层 |阅读模式

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

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

x
有如下一段代码,通过python访问有道翻译, (由于我没有发送带url 权限的帖子,这里省略的url网址, 可以认为网址是正确的。)
import urllib.request
import urllib.parse
import json

content = input("请输入需要翻译的内容:")

ur l = '......'
data = {}
data['type'] =  'AUTO'
data['i'] = content
data['doctype']= 'json'
data['xmlversion']= '1.6'
data['keyfrom']= 'fanyi.web'
data['ue'] =  'UTF-8'
data['typoResult'] =  'true'
#data['smartresult'] =  'dict'
data = urllib.parse.urlencode(data).encode('utf-8')
response = urllib.request.urlopen(url, data)
html = response.read().decode('utf-8')


target = json.loads(html)
print("翻译结果: %s" % (target['translateResult'][0][0]['tgt']))

当执行上述代码时, 却出现如下错误:
Traceback (most recent call last):
  File "D:/program/python_code/translate.py", line 23, in <module>
    target = json.loads(html)
  File "D:\program\Python\Python312\Lib\json\__init__.py", line 346, in loads
    return _default_decoder.decode(s)
  File "D:\program\Python\Python312\Lib\json\decoder.py", line 337, in decode
    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
  File "D:\program\Python\Python312\Lib\json\decoder.py", line 355, in raw_decode
    raise JSONDecodeError("Expecting value", s, err.value) from None
json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)

哪位高手能帮忙给看看, 谢谢

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 6 天前 | 显示全部楼层
从错误信息来看,`json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)` 表示你在尝试解析 JSON 数据时,收到的内容不是有效的 JSON 格式。这通常意味着请求的响应为空,或者未能正确返回 JSON 格式的数据。以下是一些可能的解决办法和建议:

1. **检查请求数据构造**:
   你的 `data` 变量需要以字典格式准备,然后用 `urllib.parse.urlencode()` 编码。如果你用字符串直接覆盖 `data` 变量,会导致请求参数丢失。

   正确的构造方式应该是:
data = {
       'from': 'AUTO',
       'to': 'AUTO',
       'i': content,
       'doctype': 'json',
       'version': '1.6',
       'keyfrom': 'fanyi.web',
       'ue': 'UTF-8',
       'action': 'FY_BY_CLICKBUTTON',
       'typoResult': 'true'
   }

2. **确保 URL 正确**:
   请确保 `url` 是指向有道翻译接口的正确 URL,且服务可用。

3. **检查网络连接**:
   确保你的网络连接正常,能够访问有道翻译的服务器。

4. **检查看有道翻译接口是否需要额外的 Header**:
   有时请求接口可能需要带有特殊 HTTP 头信息(如 User-Agent、Referer)。你可以通过 `urllib.request.Request` 来设置这些头信息。例如:
headers = {
       'User-Agent': 'Mozilla/5.0',
       'Referer': '...',
   }
   request = urllib.request.Request(url, data=data, headers=headers)
   response = urllib.request.urlopen(request)

5. **打印调试信息**:
   在发送请求后,检查响应内容是否为空或是错误提示。例如,打印 `html` 内容看看是什么:
print(html)

这些步骤应该可以帮助你解决问题。如果仍然收到错误,可以进一步检查返回的 `html` 内容,以了解更详细的信息。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 6 天前 | 显示全部楼层
你得 print(html) 看看
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-21 19:30

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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