使用Googletrans API触发JSONDecodeError的原因及解决方法
Googletrans JSONDecodeError 问题排查与修复方案
问题背景
你提到之前用Googletrans API可以正常完成翻译,但在批量处理对话转录文本后,突然出现了JSONDecodeError: Expecting value: line 1 column 1 (char 0)的错误——甚至连最基础的测试代码都跑不通了。从错误栈能看出来,问题核心是谷歌翻译返回的内容无法被解析成有效JSON,这说明返回的结果根本不是预期的翻译数据格式。
可能的原因
- 谷歌翻译公开接口变更:Googletrans本质是调用谷歌翻译的非官方公开接口,谷歌会不定期调整这个接口的返回格式。旧版本的Googletrans库没适配新格式,自然会解析失败,这是这类问题最常见的诱因。
- 反爬机制触发:批量处理时请求频率太高,触发了谷歌的反爬限制,此时谷歌返回的可能是验证码页面、限流提示页,而非正常的翻译结果JSON,解析自然出错。
- 库版本兼容性问题:可能你无意中升级或降级了Googletrans、requests等依赖库,导致版本不兼容,进而引发JSON解析异常。
修复方案
1. 更换为维护中的Googletrans分支
官方的Googletrans已经很久没更新了,推荐使用第三方维护的4.0.0预览版,这个版本专门修复了接口变更的问题:
pip install googletrans==4.0.0-rc1
更新后,测试代码可以这样写(新版本用法略有调整,但稳定性更强):
from googletrans import Translator translator = Translator() # 可明确指定目标语言,比如翻译成英文 result = translator.translate('안녕하세요.', dest='en') print(result.text)
2. 优化批量请求,规避反爬
如果是批量处理触发了限流,试试这两个方法:
- 添加请求延迟:每处理完一行文本后,暂停1-2秒,降低请求频率:
import time from googletrans import Translator translator = Translator() with open('your_transcript.txt', 'r', encoding='utf-8') as f: for line in f: line = line.strip() if line: result = translator.translate(line, dest='zh-CN') print(result.text) time.sleep(1) # 延迟1秒,避免请求过于频繁 - 使用代理IP:如果你的IP被限制,可以通过代理来请求:
translator = Translator(proxies={ 'http': 'http://your-proxy-address:port', 'https': 'https://your-proxy-address:port' })
3. 检查并更新依赖库
有时候requests等依赖库的版本也会影响解析,执行以下命令更新依赖:
pip install --upgrade requests
验证修复
先运行最简单的测试代码,确认翻译功能正常,再逐步测试批量处理的场景,看看是否还会出现JSON解析错误。
内容的提问来源于stack exchange,提问作者Rethliopuks
相关产品推荐
相关产品推荐

