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 re
import urllib.parse, urllib.request
import hashlib
import urllib
import random
import json
import 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) + secretKey
sign = hashlib.md5(sign.encode()).hexdigest()
url = url_baidu + '?appid=' + appid + '&q=' + urllib.parse.quote(text) + '&from=' + f + '&to=' + t + \
'&salt=' + str(salt) + '&sign=' + sign
response = 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 dict
dict['i'] = text
data = 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有哪些好用的语言翻译方法 - 路上的脚印