调用谷歌翻译接口_api如何调用

调用谷歌翻译接口_api如何调用在平时使用谷歌翻译的过程中,经常会遇到需要批量翻译大量文本的情景,这种时候需要调用谷歌翻译的API首先可以使用python库googletranspipinstallgoogletrans#使用方法fromgoogletransimportTranslatortranslator=Translator(service_urls=[‘translate.google.cn’])sour…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全家桶1年46,售后保障稳定

在平时使用谷歌翻译的过程中,经常会遇到需要批量翻译大量文本的情景,这种时候需要调用谷歌翻译的API

首先可以使用python库googletrans

pip install googletrans

#使用方法

from googletrans import Translator

translator = Translator(service_urls=[‘translate.google.cn’])

source = ‘我还是不开心!’

text = translator.translate(source,src=’zh-cn’,dest=’en’).text

print(text)

“i’m still not happy!”

但是在面对大规模需要翻译的句子时就会很慢,所以可以使用协程的方法。

这里我们使用了基于gevents库的grequests库。

仔细看了下googletrans库的核心代码,发现主要是构造一个url,然后发起get请求,得到一个json的结果,从中提取出翻译结果。

构造url的过程需要一个token,根据某些规则生成,所以为了方便还是调用googletrans的部分函数。

具体的参考代码如下:

这里是将德语(de)翻译成英语(en),代码中需要相应修改。

import grequests

import logging

import json

from googletrans import Translator

from googletrans.utils import format_json

headers = {‘User-Agent’:’Mozilla/5.0 (Windows NT 10.0; Win64; x64)’}

translator = Translator(service_urls=[‘translate.google.cn’])

logging.basicConfig(level = logging.INFO,format = ‘%(asctime)s – %(name)s – %(levelname)s – %(message)s’,filename=’log.txt’)

logger = logging.getLogger()

def exception_handler(request, exception):

logger.warning(‘exception when at %s :%s’,request.url,exception)

def work(urls):

reqs = (grequests.get(u,verify=True, allow_redirects=True, timeout=4) for u in urls)

res = grequests.map(reqs, exception_handler=exception_handler,size=20)

return res

def totaltranslate():

file2 = open(‘de2en_en.txt’,mode=’a’,encoding=’utf-8′)

with open(‘de.txt’,mode=’r’,encoding=’utf-8′) as f:

urls = []

num = 0

for line in f:

num+=1

line = line.strip()

token = translator.token_acquirer.do(line)

url=”https://translate.google.cn/translate_a/single?client=t&sl=de&tl=en&hl=en&dt=at&dt=bd&dt=ex&dt=ld&dt=md&dt=qca&dt=rw&dt=rm&dt=ss&dt=t&ie=UTF-8&oe=UTF-8&otf=1&ssel=3&tsel=0&kc=1&tk={0}&q={1}”.format(token,line)

urls.append(url)

if len(urls) >= 50:

res = work(urls)

for r in res:

if hasattr(r,’status_code’):

if r.status_code == 200:

try:

a=format_json(r.text)

target = ”.join([d[0] if d[0] else ” for d in a[0]])

source = ”.join([d[1] if d[1] else ” for d in a[0]])

except Exception as e:

logger.error(‘when format:%s’,e)

logger.error(‘%s\n%s’,r.text)

source = ”

target = ”

if len(source) != 0 and len(target) != 0:

file2.write(target+’\n’)

else:

file2.write(‘\n’)

else:

file2.write(‘\n’)

urls = []

logger.info(‘finish 50 sentence, now at %s’,num)

file2.close()

def sentencetranslate(line):

line = line.strip()

text = translator.translate(line,src=’de’,dest=’en’).text

return text

def completetranslate():

file1 = open(‘de2en_en.txt’,mode=’r’,encoding=’utf-8′)

file2 = open(‘new_de2en_en.txt’,mode=’a’,encoding=’utf-8′)

i = 1

with open(‘de.txt’,mode=’r’,encoding=’utf-8′) as f:

for line in f:

t = file1.readline()

if len(t) == 1:#’only \n’

text = sentencetranslate(line)

file2.write(text+’\n’)

else:

file2.write(t)

i += 1

if i%100 == 0:

print(i)

file1.close()

file2.close()

if __name__ == “__main__”:

totaltranslate()

completetranslate()

totaltranslate()以及翻译了大部分的句子,但是可能因为某些原因有一些句子没有翻译,所以还需要completetranslate()来补全翻译结果。

在grequests.map()中size设置为20的情况下,平均每秒翻译20句。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/201108.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • JDK1.8下载与安装完整教程[通俗易懂]

    JDK1.8下载与安装完整教程[通俗易懂]JDK1.8下载与安装1.JDK下载首先在Oracle官网上下载jdk1.8.https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html,如下图所示,找到jdk1.8,选择对应的版本,但是现在jdk已经更新到14.0了,所以大家可以根据自己的需要进行下载。此文以jdk1.8为例。如果下载的时候显示让你登录,你可以进行登录。如果不想下载可以私信我,可以将jdk执行文件进行分享,不过还是建议自己动手下载,熟悉过程

    2022年6月14日
    40
  • 2、Java基础02 – 【命令行运行HelloWorld】[通俗易懂]

    2、Java基础02 – 【命令行运行HelloWorld】[通俗易懂]操作步骤:1、新建一个文件夹(可以命名为Java)2、新建一个.txt文本文件,在文件中输入如下代码:publicclassHelloWorld{publicstaticvoidmain(String[]args){System.out.println(“helloworld”);}}3、重命名将文件名改为HelloWorld.java,并创建第一个java源文件4、编译.java文件是java的源文件,但是不能直接运行,必须先被编译成为.class文件才能够

    2022年5月20日
    40
  • Delphi中QuotedStr介绍及使用

    Delphi中QuotedStr介绍及使用delphi函数给字符串两边加单引号并返回.声明:functionQuotedStr(constS:string):string;用函数QuotedStr把字符串S转换成为用引号括起来的字符串。单引号”‘”将被插入到字符串s的最前和最后。例如:abc->’abc’

    2022年10月18日
    4
  • CSS 改变鼠标样式(大全)[通俗易懂]

    CSS 改变鼠标样式(大全)[通俗易懂]前端经常会用到改变鼠标的样式来达到更好的页面效果,比如经常会使用到改变成小手,拖拽时改变成移动拖拽的鼠标样式,可每次都需要查阅资料来完成代码,在此做下详细总结:使用方法:<spanstyle=”cursor:auto”>Auto</span><spanstyle=”cursor:crosshair”>Crosshair</span><spanstyle=”cursor:default”>Default&..

    2022年5月31日
    155
  • 怎么安装pycharm及环境变量配置_pycharm配置python环境

    怎么安装pycharm及环境变量配置_pycharm配置python环境pycharm安装以及其环境的配置说明此次我们使用win10系统安装pycharm的64位社区版,并且对Anaconda3中自带的Python3进行环境的配置,如果您没有Anaconda3甚至是没有Python3环境,可以参考Anaconda3安装教程及说明,如果您的pip源未更改,这里推荐您改为使用国内的pip源,这样可以更快的下载组件,方法见修改pip源至国内镜像网站。教程从开始菜单中找到你的AnacondaPrompt并打开…

    2022年8月26日
    7
  • python基础知识入门_python新手学院

    python基础知识入门_python新手学院1变量和简单数据类型变量命名格式:变量名=“赋值”1.1变量使用规范使用变量时,需要遵守一些规则。违反这些规则将引发错误。~变量名只能包含数字、字母、下划线。变量名不能以数字开头以及不

    2022年8月5日
    5

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号