OS: win 7 + python 3.7
适用于翻译多条英文短句。
使用
- 下载并安装 Python3.7
- 安装引用包
- pip install urllib3 & openpyxl
- 官网使用的包http.client返回的是整个页面的源码,改为urllib,3.7版本中包名改为urllib3
- openpyxl是python操作excel的包
- pip install urllib3 & openpyxl
- 参数调整
- 见源码: Git hub
- 百度翻译官方API文档
- 申请翻译API服务
- 已登录百度账号的用户,点击“立即使用”,注册成为开发者,即可获得APPID和密钥信息;同一个账户或手机号码仅能申请一组APPID和密钥信息,该APPID和密钥信息可用于多项服务调用。
源码
#/usr/bin/env python
#coding=utf8
import hashlib
import random
import openpyxl
from openpyxl import Workbook
import json
import urllib.request
print('translate begin...')
#set parameter
appid = '2015063000000001'
secretKey = '12345678'
fromLang = 'en' # 源语言
toLang = 'zh' # 翻译后的语言
srcFilename = 'c:\_Work\chinesetranslation.xlsx'
srcColumn=3
srcRowBegin=121
srcRowEnd=207
srcSheet = 'Sheet1'
desFilename = 'c:\_Work\chinesetranslation_result.xlsx'
desColumn=1
desSheet = 'result'
def translateBaidu(content):
apiurl = 'http://api.fanyi.baidu.com/api/trans/vip/translate'
q = content
salt = random.randint(32768, 65536)
sign = str(appid) + q + str(salt) + secretKey
sign = hashlib.md5(sign.encode("utf-8")).hexdigest()
myurl = apiurl + '?appid=' + appid + '&q=' + urllib.parse.quote(q) + '&from=' + fromLang + '&to=' + toLang + '&salt=' + str(salt) + '&sign=' + sign
try:
paramas = {
'q':q,
'from':'zh',
'to':'en',
'appid':'%s'%appid,
'salt':'%s'%salt,
'sign':'%s'%sign
}
response = urllib.request.urlopen(myurl)
jsonResponse = response.read()# 获得返回的结果,结果为json格式
js = json.loads(jsonResponse) # 将json格式的结果转换字典结构
dst = str(js["trans_result"][0]["dst"]) # 取得翻译后的文本结果
return dst
except Exception as e:
print(e)
wb = openpyxl.load_workbook(srcFilename)
ws = wb[srcSheet]
wb2 = Workbook()
ws2 = wb2.create_sheet(title=desSheet)
for i in range (srcRowBegin,srcRowEnd,1):
result=ws.cell(row=i, column=srcColumn).value
if not (result is None):
ws2.cell(row=i-srcRowBegin+1,column=desColumn).value = translateBaidu(result)
wb2.save(desFilename)
print('ending...')