欢迎各位兄弟 发布技术文章

这里的技术是共享的

You are here

如何调用谷歌翻译API? 有大用

如何调用谷歌翻译API?

背景图来源:click

写在前面:

这篇小文章主要介绍了Python中能够直接调用翻译的接口,模块的方法,作为livery1.2.x国际化的功能(AndroidLocalizePlugin不好用)的技术支持,感兴趣的的朋友可以参考下 本文的思路主要来源文知乎这篇讨论如果调用接口翻译,那里讨论很多解决方案,比如Go语言,java语言,还有node等等

1:通过网络请求

translate.google.cn/tra translate.google.cn/tra

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,[]
]
图1/2-(python通过网络请求翻译)
图1/2-(python通过网络请求翻译)


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
图3-(python通过goslate模块翻译)
其它功能不太好用,但基本的翻译还是可以的。但经常出现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

github.com/John-Theo/go

特点:

  • 新,和 Google Translate API 同步升级,本质上调用其网页版接口;

  • 快速,可以选择不翻墙的 translate.google.cn 作为数据来源;

  • 自动纠错,可以使用谷歌原生的接口给输入预料自动纠错;

  • 0配置,docker 封装,一行命令一分钟完成部署立刻使用;

  • 开源,永远免费


以上便是《Python如何调用谷歌翻译API》的全部内容,本文仅为参考,主要目的是为了livery1.2.x升级作为技术支持,后期会继续维护出一个@翻译工具类出来,方便android开发者使用

请尊重劳动成果,注意文中版权声明Android专栏不定时更新,欢迎点击关注我知乎。也可以同时关注人工智能专栏文艺语录专栏,本内容作者sunst0069,技术上有问题请沟通qyddai@gmail.com

作者:sunst发布于: 2021-01-23 17:15 && 修改于:null
编辑于 2021-01-23 17:25

8 条评论

  • 魔偶某2021-09-24
    现在这个谷歌api貌似301了
  • booowen回复魔偶某2021-10-20
    是的,这个接口没办法用了
  • 那些年回复booowen2021-10-30
    现在用什么接口才行
  • 无名2021-08-27
    您好,这个服务是不是已经关闭不能使用了
  • Bgwan (作者) 回复无名2021-08-27
    应该不会, 你检查一下你的网络呢
  • 前世泪不缺泪回复Bgwan (作者)2021-09-27
    现在已经关闭了
  • 聪明累2021-05-11
    您好,能简单问一下利用Docker调用API的流程吗
  • Bgwan (作者) 回复聪明累2021-05-11
    docker安装后默认只开了unixsocket的方式进行api调用,远程调用只需要在/etc/sysconfig/docker中的option上加入tcp端口和地址,然后控制台curl https:xxxxxx.api 就可以得到翻译后的json串

文章被以下专栏收录



来自  https://zhuanlan.zhihu.com/p/346484391

普通分类: