如何调用谷歌翻译API?
背景图来源:click
写在前面:
这篇小文章主要介绍了Python中能够直接调用翻译的接口,模块的方法,作为livery1.2.x国际化的功能(AndroidLocalizePlugin
不好用)的技术支持,感兴趣的的朋友可以参考下 本文的思路主要来源文知乎这篇讨论如果调用接口翻译,那里讨论很多解决方案,比如Go语言,java语言,还有node等等
1:通过网络请求
http://translate.google.cn/translate_a/single?client=at&sl=en&tl=zh-CN&dt=t&q=google http://translate.google.cn/translate_a/single?client=gtx&sl=en&tl=zh-CN&dt=t&q=google
dt参数的作用,这里说明一下,dt决定了最终返回的数据,可以包含多个dt参数,以下是dt的一些值:
t - 源text的翻译
at - 会额外返回一些近义词
ex - examples
ss - 如果翻译的是单个词,会返回与该词相关的动词、形容词、名词
md - 如果翻译的是单个词,返回该词的定义
rw - 组词
bd
rm
dt - 似乎是设定返回数据的格式
可以用这个API,优点是不需要tk,缺点是返回的内容比较简单
还有如果次数限制了,client=at修改为:client=gtx
一般at和t正常一点。其它格式可能无法正常得到翻译结果或正确的翻译结果
使用方法:
> import requests
> url = 'http://translate.google.cn/translate_a/single?'
> param = 'client=at&sl=en&tl=zh-CN&dt=t&q=google'
> # from urllib.parse import urlencode
> # param = urlencode(param)
> r = requests.get(url+param)
> print(r.status_code)
200
> print(r.text)
[[["谷歌","google",null,null,1]
]
,null,"en",null,null,null,null,[]
]


2:通过python模块goslate
官方网站 $ pip install goslate
$ pip install goslate
> import goslate
> gs = goslate.Goslate()
> print(gs.translate('hello world', 'zh'))
你好,世界
> print(gs.translate('李芳芳','en'))
Li Fangfang

其它功能不太好用,但基本的翻译还是可以的。但经常出现httperror 491,429:
报错:'urllib.error.HTTPError: HTTP Error 429: Too Many Requests' 访问次数过多。。。可能API用的太多?这里先留个坑,回头整理下,提供以下思路
方案1:写一个爬虫,找一下google的tk加密算法,缺点是爬虫的没有网页翻译的准。
方案2:万能的selenium,爬取google翻译,缺点是慢。
方案3:万能的selenium+chrome,调用chrome的网页翻译功能,缺点是更慢。
两个方法的难点都在于计算token,即tk值
3:通过Docker
https://github.com/John-Theo/google-translate-server
特点:
新,和 Google Translate API 同步升级,本质上调用其网页版接口;
快速,可以选择不翻墙的 https://translate.google.cn 作为数据来源;
自动纠错,可以使用谷歌原生的接口给输入预料自动纠错;
0配置,docker 封装,一行命令一分钟完成部署立刻使用;
开源,永远免费
以上便是《Python如何调用谷歌翻译API》的全部内容,本文仅为参考,主要目的是为了livery1.2.x升级作为技术支持,后期会继续维护出一个@翻译工具类出来,方便android开发者使用
请尊重劳动成果,注意文中版权声明,Android专栏不定时更新,欢迎点击关注我知乎。也可以同时关注人工智能专栏,文艺语录专栏,本内容作者sunst0069,技术上有问题请沟通qyddai@gmail.com
作者:sunst发布于: 2021-01-23 17:15 && 修改于:null
8 条评论