如何用Python的googletrans API翻译网页及解决TypeError报错
错误原因
- 你使用的旧版
googletrans已经停止维护,内置调用的谷歌翻译公共接口早已变更,请求后无法拿到正常的JSON返回值,得到的是空值None,解析时就触发了该类型错误。 - 少部分场景也可能是请求目标网站时没有携带请求头,被反爬规则拦截返回了空内容,你可以先打印
page.text验证返回内容是否正常。
现有代码修复方案
首先替换旧版googletrans,改用社区维护的适配分支googletrans==4.0.0-rc1,该版本适配了谷歌翻译最新的接口规则:
- 先卸载旧版本,安装适配版本:
pip uninstall googletrans -y pip install googletrans==4.0.0-rc1
- 优化请求逻辑,增加反爬适配和异常校验,修改后的代码如下:
from googletrans import Translator import requests # 初始化翻译器,指定超时时间避免卡住 translator = Translator(timeout=10) url = 'http://www.compactrb.ro/' # 添加模拟浏览器的请求头,避免被反爬拦截 headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36' } page = requests.get(url, headers=headers) # 先验证返回内容正常再执行翻译 if page.status_code == 200 and page.text.strip(): # 指定源语言为罗马尼亚语、目标语言为英文,提高翻译准确率 translated = translator.translate(page.text, src='ro', dest='en') print(translated.text) else: print(f"请求网站失败,状态码:{page.status_code}")
更稳定的替代方案
如果googletrans还是频繁报错,可以改用以下方案实现需求:
- 方案1:使用谷歌翻译官方API,有免费调用额度,稳定性远高于第三方封装的公共接口,适合批量翻译场景。
- 方案2:使用国内翻译平台的开放接口,比如百度翻译、有道翻译的公开API,都有免费调用额度,接口规则稳定,不容易出现适配问题。
- 方案3:如果是少量静态页面处理,可以先用
BeautifulSoup提取网页中的正文内容,剔除HTML标签后再执行翻译,能大幅降低翻译器解析异常的概率。
内容的提问来源于stack exchange,提问作者Suwaid Aslam
相关产品推荐
相关产品推荐

