【问题标题】:googletranslator "No JSON object could be decoded"googletranslator“无法解码任何 JSON 对象”
【发布时间】:2018-05-28 19:14:40
【问题描述】:

使用谷歌翻译翻译网站内容我发现错误“无法解码 JSON 对象”。代码如下:

import requests
from dragnet import extract_content
from googletrans import Translator

url = "https://bitcoin-bitcoin.themedia.jp/posts/4222377/"
r = requests.get(url)
content = extract_content(r.content)
translator = Translator()
text = translator.translate(content, dest='en').text

输出错误:

Traceback (most recent call last):
  File "test.py", line 9, in <module>
    text = translator.translate(content, dest='en').text
  File "/usr/local/lib/python2.7/dist-packages/googletrans/client.py", line 132, in translate
    data = self._translate(text, dest, src)
  File "/usr/local/lib/python2.7/dist-packages/googletrans/client.py", line 63, in _translate
    data = utils.format_json(r.text)
  File "/usr/local/lib/python2.7/dist-packages/googletrans/utils.py", line 62, in format_json
    converted = legacy_format_json(original)
  File "/usr/local/lib/python2.7/dist-packages/googletrans/utils.py", line 54, in legacy_format_json
    converted = json.loads(text)
  File "/usr/lib/python2.7/json/__init__.py", line 339, in loads
    return _default_decoder.decode(s)
  File "/usr/lib/python2.7/json/decoder.py", line 364, in decode
    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
  File "/usr/lib/python2.7/json/decoder.py", line 382, in raw_decode
    raise ValueError("No JSON object could be decoded")
ValueError: No JSON object could be decoded

【问题讨论】:

  • 我有一个问题:你为什么要翻译这个,已经是英文了。
  • @PaulaThomas 感谢回复,我只是随机选择了列表中的一个,我遇到了同样的问题。我更新了帖子,谢谢!
  • Thabks 让我很困惑!尝试了修改后的 url - 通过 puttinng json.dumps(content) 设法停止错误消息,但 translate 返回相同的 json 对象!这不是我们所需要的。
  • 对,我正在那里测试。感谢您的尝试!

标签: python json translation google-translate


【解决方案1】:

根据错误,您传递的content 变量不是预期的格式。使用print(type(content)) 和print(content) 了解您传递的信息是什么以及它是否是预期的类型。

您使用的库不是 Google 官方库。查找official example here。确实,您无法翻译整个网站并且没有实施等效的解决方案。您需要阅读该页面并充分了解它;或在您的情况下使用 Dragnet 预处理 content。

在下面找到一个用于翻译 API 的 Python 客户端库示例:

# Imports the Google Cloud client library
from google.cloud import translate

# Instantiates a client
translate_client = translate.Client()

# The text to translate
text = u'Hello, world!'
# The target language
target = 'ru'

# Translates some text into Russian
translation = translate_client.translate(
    text,
    target_language=target)

print(u'Text: {}'.format(text))
print(u'Translation: {}'.format(translation['translatedText']))  

【讨论】:

  • 谢谢!我现在正在尝试使用谷歌云客户端,它没有这个问题。似乎该错误在googletrans中,但我不知道它是什么。 type(content) 返回 unicode (使用该字符串 googletrans 有效,使用该字符串无效)。
  • 完美!我看到您的声誉点很少,如果他们解决了您的问题/疑问,我会提示您 accept answers。如果您仍想收到更多答案,可以暂时不接受它们。
  • 我打算让它打开一段时间,因为我想使用 googletrans 库找到解决方案,因为 google 云客户端还有另一个问题,比如请求速率限制。谢谢!
猜你喜欢
  • 2013-01-19
  • 1970-01-01
  • 2017-02-26
  • 2015-01-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多