0. 调用 googletrans 库
0.1 安装:
$ pip install googletrans
0.2 调用:
from googletrans import Translator# 中 -> 英print(translator_google.translate('你好,世界!', dest='en').text)# 英 -> 中print(translator_google.translate('Hello World!', dest='zh-CN').text)
完整使用请参考:py-translate · pypi
0.3 报错:
不出意外的话,在使用过程中会出现连接超时等报错,这是因为它默认调用的接口在墙外,我们需要手动修改模块的源码把
translate.google.com修改为translate.google.cn。具体操作如下: 分别打开/Python路径/Lib/site-packages/googletrans中的gtoken.py、urls.py和client.py,把这三个文件中的translate.google.com修改为translate.google.cn即可。
0.4 笔记:
谷歌翻译一次最多5000字符,大概就是500个单词,20-30句话左右,每次翻译时间1s以内,所以如果翻译的文本较长,建议拆分为5000个字符一段一段的来翻译,并使用多线程,能大幅度提升翻译效率。
1. 使用网页接口
1.1 导入模块
import reimport urllib.parse, urllib.requestimport hashlibimport urllibimport randomimport jsonimport time
1.2 百度翻译
appid = 'your_appid'secretKey = 'your_secretKey'url_baidu = 'http://api.fanyi.baidu.com/api/trans/vip/translate'def translateBaidu(text, f='ja', t='zh'):salt = random.randint(32768, 65536)sign = appid + text + str(salt) + secretKeysign = hashlib.md5(sign.encode()).hexdigest()url = url_baidu + '?appid=' + appid + '&q=' + urllib.parse.quote(text) + '&from=' + f + '&to=' + t + \'&salt=' + str(salt) + '&sign=' + signresponse = urllib.request.urlopen(url)content = response.read().decode('utf-8')data = json.loads(content)result = str(data['trans_result'][0]['dst'])print(result)
参数:text—待翻文本,f—初始语言,t—目标语言,后面方法类似。
1.3 有道翻译
url_youdao = 'http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule&smartresult=ugc&sessionFrom=' \'http://www.youdao.com/'dict = {}dict['type'] = 'AUTO'dict['doctype'] = 'json'dict['xmlVersion'] = '1.8'dict['keyfrom'] = 'fanyi.web'dict['ue'] = 'UTF-8'dict['action'] = 'FY_BY_CLICKBUTTON'dict['typoResult'] = 'true'def translateYoudao(text):global dictdict['i'] = textdata = urllib.parse.urlencode(dict).encode('utf-8')response = urllib.request.urlopen(url_youdao, data)content = response.read().decode('utf-8')data = json.loads(content)result = data['translateResult'][0][0]['tgt']print(result)
参数主要由字典dict指定,发现没有地方可以指定语言(可能是我没找到),测试结果是不管输入什么语言的文本,输出均是中文。
1.4 谷歌翻译
url_google = 'http://translate.google.cn'reg_text = re.compile(r'(?<=TRANSLATED_TEXT=).*?;')user_agent = r'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) ' \r'Chrome/44.0.2403.157 Safari/537.36'def translateGoogle(text, f='ja', t='zh-cn'):values = {'hl': 'zh-cn', 'ie': 'utf-8', 'text': text, 'langpair': '%s|%s' % (f, t)}value = urllib.parse.urlencode(values)req = urllib.request.Request(url_google + '?' + value)req.add_header('User-Agent', user_agent)response = urllib.request.urlopen(req)content = response.read().decode('utf-8')data = reg_text.search(content)result = data.group(0).strip(';').strip('\'')print(result)
1.5 笔记
如果觉得耗时的话可以使用线程,能将翻译速度提升几倍。 本篇部分内容参考自python有哪些好用的语言翻译方法 - 路上的脚印
