Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >python调用谷歌翻译

python调用谷歌翻译

作者头像
小贝壳
发布于 2020-03-05 06:59:35
发布于 2020-03-05 06:59:35
2.8K00
代码可运行
举报
文章被收录于专栏:贝塔博客贝塔博客
运行总次数:0
代码可运行

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

首先可以使用python库googletrans

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
pip install googletrans
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#使用方法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),代码中需要相应修改。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import grequestsimport loggingimport jsonfrom googletrans import Translatorfrom 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 resdef 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 textdef 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句。
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019-05-09,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
调用谷歌翻译接口_api如何调用
在平时使用谷歌翻译的过程中,经常会遇到需要批量翻译大量文本的情景,这种时候需要调用谷歌翻译的API
全栈程序员站长
2022/11/03
5K0
Python调用谷歌翻译接口
https://py-googletrans.readthedocs.io/en/latest/
未名编程
2024/10/12
2150
[314]谷歌翻译
首先在github上我们找到了这篇链接 https://github.com/ssut/py-googletrans 然后运行 pip install googletrans 这个命令,去下载提供的这个库。
周小董
2022/04/12
1.4K0
[314]谷歌翻译
网上翻译嫌麻烦?Python破解有道JS加密,让你随时能翻译
前言 使用有道翻译接口,将英文文章翻译成中文。 英语文章看不懂怎么办?没关系,教你如何把一篇英语文章转化为双语文章。 知识点: requests 的使用 js 加密如何处理 英文文章变双语文章 开发环
松鼠爱吃饼干
2020/09/24
1.2K0
网上翻译嫌麻烦?Python破解有道JS加密,让你随时能翻译
Python3 动手自己写谷歌翻译(学员作品)
本篇为实现谷歌翻译的功能,在编写的时候以为只是一个接口的问题。 没想到的是每次翻译都会触发一次JS的执行,在请求参数中生成一个tk。 文中tk的实现是复用的网上大神的代码生成tk。 好了,不说了直接看代码吧! # /usr/bin/env python # -*- coding: utf-8 -*- import urllib.parse import execjs,requests,termcolor class Return_tk(): def __init__(self):
IT苦逼一枚
2020/11/25
8560
Python3 动手自己写谷歌翻译(学员作品)
python编写登录接口
要求: 输入用户名密码       认证成功显示欢迎信息    输错三次以后锁定 代码如下: # Author:YK while(True): select=input('请问是注册还是登录') if select == '注册': register='' #将需要保存的user和password放在register中 username = input('please input your count...') password = inpu
py3study
2020/01/19
1.1K0
Python自动化开发学习-爬虫3
讲师的博客:https://www.cnblogs.com/wupeiqi/p/6229292.html 在编写爬虫时,性能的消耗主要在IO请求中,当单进程单线程模式下请求URL时必然会引起等待,从而使得请求整体变慢。 比如找10个国外的资源爬取,慢的效果就很明显。
py3study
2020/01/06
6080
爬虫性能相关
根据文章内容撰写摘要总结。
coders
2018/01/04
6070
python 调用Google Tran
调用Google 翻译API进行翻译 #!/usr/bin/python #coding: UTF-8 import sys reload(sys) sys.setdefaultencoding('utf8') from xml.etree import ElementTree as ET #引入解析xml文件的模块 import re import urllib,urllib2 #引入接入网络接口API的模块 from socket import error as SocketE
py3study
2020/01/09
1.1K0
干货合集│最好用的 python 库都在这
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/170859.html原文链接:https://javaforall.cn
全栈程序员站长
2022/09/22
3920
Python3调用Google翻译
想弄一个批量翻译的东西,奈何百度翻译别人根本不研究,所以只能看谷歌翻译的了;这份代码的作者写的太聪明了,是真的很棒,思路很好,看到这样的代码简直年轻10岁
Elapse
2020/08/17
1.5K1
Python文件读写
#文件操作,创建文件对象,通过open()函数创建文件对象 mode:代表文件要执行的操作的类型 r:读模式 w:写模式(每次写入文件之前都会先将文件中的内容清空,之后重新写入) a:添加模式(每次写入文件时,不会清空文件内容)
py3study
2020/01/15
9350
只需 10 行代码,Python 教你自制屏幕翻译工具,高效办公
大家如果平常遇到不认识的英文,相信大部分的人都会复制内容后,使用翻译软件,或者拷贝到网站上去执行翻译。
AirPython
2020/03/21
9840
干货合集│最好用的 python 库都在这
一、分词 - jieba优秀的中文分词库,依靠中文词库,利用词库确定汉子之间关联的概率,形成分词结果import jiebaword = '伟大的中华人民共和国'jieba.cut(word)jieba.lcut(word)二、词云库 - wordcloud对数据中出现频率较高的 关键词 生成的一幅图像,予以视觉上的突出import jiebaimport numpy as npimport PIL.Image as Imagefrom wordcloud import WordClouddef run(w
程序员亮仔
2022/06/09
5731
干货合集│最好用的 python 库都在这
Python与PubMed
这期是和半月刊一起在出,本来的想法是,使用Python构建一个可以自动整理文献的工具
DrugScience
2021/12/13
8050
Python与PubMed
Python3--批量爬取数据之调用有道api进行翻译
上代码: # coding=utf-8 import urllib,urllib.request from fake_useragent import UserAgent import json import time import hashlib import urllib.parse import requests import random import csv,re class YouDaoFanyi: def __init__(self, appKey, appSecret):
K同学啊
2019/01/22
1.1K0
技巧与工具03-调用百度翻译API进行中英文翻译
工作中有时会遇到需要中英文互相翻译的情况,词数少的话可以手动使用翻译软件进行 翻译,如果量很大,编写程序自动翻译会是个更好的选择.
零式的天空
2022/03/02
1.2K0
最新C#调用Google即时翻译
主要是调用谷歌的翻译API进行翻译,WebRequest的请求,将获取到的翻译提取出来。下面上代码
kiki.
2022/09/29
8020
最新C#调用Google即时翻译
Qt多语言翻译示例
一个基础的翻译示例和一些注意事项 ---- 示例目录 QtTranslation/ ├── Languages │ ├── en.qm │ ├── en.ts │ ├── Languages.qrc │ ├── zh_CN.qm │ └── zh_CN.ts ├── main.cpp └── QtTranslation.pro 注意事项 将翻译文件(ts后缀)生成的qm后缀文件用资源文件( Languages.qrc)包括以供程序引用; translator.load(":/zh_CN.
Qt君
2019/07/15
2.1K0
python实现APP多语种翻译
最近接触运动手环项目,因业务需求,需对APP进行多国语言进行翻译,因人工比对容易出错,加上需要大量的时间去反复验证。因此就想能不能通过脚本的方式去实现。
用户6367961
2019/10/24
2.1K0
相关推荐
调用谷歌翻译接口_api如何调用
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验