• Python 小工具:调用「百度翻译 API」实现英汉互译及多语言翻译
    • API 简介
    • 过程详解
    • 完整代码
    • 结果展示
      • 附:官方 Demo - Python 2 版本

Python 小工具:调用「百度翻译 API」实现英汉互译及多语言翻译

官方 Demo 是 Python 2 版本的,笔者基于 Python 3 实现,并简化请求翻译结果的过程、扩展功能

前段时间写的小脚本,得空整理一下和大家交流学习

API 简介

  • 什么是百度翻译开放平台?
    百度翻译开放平台是百度翻译面向广大开发者提供开放服务的平台。服务涵盖:通用翻译API、定制化翻译API、语音翻译SDK、拍照翻译SDK等,并持续更新中。
  • 通用翻译 API
    通用翻译API支持28种语言互译,覆盖中、英、日、韩、西、法、泰、阿、俄、葡、德、意、荷、芬、丹等;支持28种语言的语种检测。您只需调用通用翻译API,传入待翻译的内容,并指定要翻译的源语言(支持源语言语种自动检测)和目标语言,即可得到相应的翻译结果。任何第三方应用或网站都可以通过使用通用翻译API为用户提供实时优质的多语言翻译服务,提升产品体验。
  • 语种识别 API
    语种识别API可识别给出文本的语种,并返回识别结果。首批支持中文、英语、日语、韩语、泰语、越南语等六个语种的语种识别。

摘自官网介绍,官网还有更多高级(shou fei)功能的介绍,可移步了解详情 →

过程详解

通用翻译 API 采用全流程自助申请的模式:
    点击网站上方的“登录”按钮,以百度账号登录平台;
    在产品服务页面点击“立即使用”,按照页面提示信息注册成为开发者,即可获得APPID和密钥信息。

  • 首先需要去百度翻译开放平台注册为开发者、申请 通用翻译 APIAPI Key
  • 通过 HTTP 接口调用通用翻译 API,传入待翻译的内容,并指定要翻译的源语言和目标语言种类,就可以得到相应的翻译结果。
  • 向通用翻译 API HTTP 地址:http://api.fanyi.baidu.com/api/trans/vip/translate 通过POST或GET方法发送下列字段即可访问服务:
  • 语言列表:(源语言语种不确定时可设置为 auto,目标语言语种不可设置为 auto)
  • 其中, sign 是使用 MD5 算法生成的一段长度为 32位的字符串,具体方法如下:
    • 1.准备好请求参数中的 appid、q、salt 以及平台分配的密钥;
    • 2.按照 appid+q+salt+密钥 的顺序拼接得到字符串1;
    • 3.对字符串1计算 MD5 值即可得到32位小写的 sign
  • 返回结果是json格式,包含以下字段:(其中 trans_result 包含了 src 和 dst 字段)
字段名 类型 描述
from TEXT 翻译源语言
to TEXT 译文语言
trans_result MIXED LIST 翻译结果
src TEXT 原文
dst TEXT 译文

例如:

     {"from":"en","to":"zh","trans_result":[{"src":"apple","dst":"苹果"}]}

只要取出 dst 键对应的值即是翻译结果。

完整代码

"""
调用「百度翻译 API」实现英汉互译及多语言翻译
@Author: Newyee
@Python: 3.6.5
@Create: 2019-04-18
"""
# 导入相关模块
import hashlib
import random
import requests# 你的 APP ID
appID = 'xxx'
# 你的密钥
secretKey = 'xxx'
# 百度翻译 API 的 HTTP 接口
apiURL = 'http://api.fanyi.baidu.com/api/trans/vip/translate'def baiduAPI_translate(query_str, to_lang):'''传入待翻译的字符串和目标语言类型,请求 apiURL,自动检测传入的语言类型获得翻译结果:param query_str: 待翻译的字符串:param to_lang: 目标语言类型:return: 翻译结果字典'''# 生成随机的 salt 值salt = str(random.randint(32768, 65536))# 准备计算 sign 值需要的字符串pre_sign = appID + query_str + salt + secretKey# 计算 md5 生成 signsign = hashlib.md5(pre_sign.encode()).hexdigest()# 请求 apiURL 所有需要的参数params = {'q': query_str,'from': 'auto','to': to_lang,'appid': appID,'salt':salt,'sign': sign}try:# 直接将 params 和 apiURL 一起传入 requests.get() 函数response = requests.get(apiURL, params=params)# 获取返回的 json 数据result_dict = response.json()# 得到的结果正常则 returnif 'trans_result' in result_dict:return result_dictelse:print('Some errors occured:\n', result_dict)except Exception as e:print('Some errors occured: ', e)def baiduAPI_translate_main(query_str, dst_lang=''):'''解析翻译结果后输出,默认实现英汉互译:param query_str: 待翻译的字符串,必填:param dst_lang: 目标语言类型,可缺省:return: 翻译后的字符串'''if dst_lang:# 指定了目标语言类型,则直接翻译成指定语言result_dict = baiduAPI_translate(query_str, dst_lang)else:# 未指定目标语言类型,则默认进行英汉互译result_dict = baiduAPI_translate(query_str, 'zh')if result_dict['from'] == 'zh':result_dict = baiduAPI_translate(query_str, 'en')# 提取翻译结果字符串,并输出返回dst = result_dict['trans_result'][0]['dst']print('{}: {} -> {}: {}'.format(result_dict['from'], query_str, result_dict['to'], dst))return dstif __name__ == '__main__':baiduAPI_translate_main('This is English.')baiduAPI_translate_main('这是中文')baiduAPI_translate_main('翻译成法语', 'fra')

结果展示

附:官方 Demo - Python 2 版本

#/usr/bin/env python
#coding=utf8import httplib
import md5
import urllib
import randomappid = '' #你的appid
secretKey = '' #你的密钥httpClient = None
myurl = '/api/trans/vip/translate'
q = 'apple'
fromLang = 'en'
toLang = 'zh'
salt = random.randint(32768, 65536)sign = appid+q+str(salt)+secretKey
m1 = md5.new()
m1.update(sign)
sign = m1.hexdigest()
myurl = myurl+'?appid='+appid+'&q='+urllib.quote(q)+'&from='+fromLang+'&to='+toLang+'&salt='+str(salt)+'&sign='+signtry:httpClient = httplib.HTTPConnection('api.fanyi.baidu.com')httpClient.request('GET', myurl)#response是HTTPResponse对象response = httpClient.getresponse()print response.read()
except Exception, e:print e
finally:if httpClient:httpClient.close()

Python 小工具:调用「百度翻译API」实现英汉互译及多语言翻译相关推荐

  1. python英汉互译-中汉英在线翻译

    中国最早走出国门与国外人交流的人要上溯到唐朝,唐三藏西游与鉴真东渡的故事人人皆知,尤其是传说中的玄奘法师能与九天十地的妖魔鬼怪及各国元首交流,最终历经九九八十一难到达西天取得佛经而归.历史记载真实的唐 ...

  2. python 人像合成_「百度AI API」Python实现人像动漫化

    WechatIMG1.jpeg 想看自己的漫画脸?用不着下快手抖音,这篇文章的目的就是使用Python来实现人像动漫化的效果. 首先,这里是我们使用的人像动漫化API的主页:人像动漫化-百度AI开放平 ...

  3. 爬虫的一个小案例:python实现英汉互译

    什么是网络爬虫? 网络爬虫又称网络蜘蛛,是指按照某种规则在网络上爬取所需内容的脚本程序.众所周知,每个网页通常包含其他网页的入口,网络爬虫则通过一个网址依次进入其他网址获取所需内容. 一个小案例:py ...

  4. python爬虫之英汉互译(爬虫+pyqt5)

    简单的爬虫与图形化界面的结合 源码转载自[https://blog.csdn.net/qq_38534107/article/details/90440403] 作者:耳森Paulson 在此十分感谢 ...

  5. 计算机科学与技术中英翻译,[精品]计算机科学与技术外文翻译、中英对照、英汉互译.doc...

    [精品]计算机科学与技术外文翻译.中英对照.英汉互译 毕业设计(论文)外文资料翻译 学院(系): 计算机科学与技术学院 专 业: 计算机科学与技术 姓 名: 学 号: (用外文写)外文出处: (用外文 ...

  6. 英汉互译在线翻译-英汉互译在线翻译器-英汉互译在线翻译网站

    英汉互译在线翻译软件如下图 免费英汉互译在线翻译软件支持各种语言互相翻译,批量文章文字内容翻译,自动采集翻译,导入文件互译翻译,同时还是各种互译比如:中文翻译英文再翻译回中文.仅支持批量互译翻译,同时 ...

  7. 用python设计一个简易的英汉互译界面_使用python一步一步搭建微信公众平台(二)----搭建一个中英互译的翻译工具...

    距离上次写使用python一步一步搭建微信公众平台(一)已经有几个月了,当中自已也搭建了一个中英文互译的小应用,可是由于英文翻中文好弄,中文翻译成英文一直有问题,知道是编码的问题,但是一直搞不定,于是 ...

  8. 【工具】Vscode翻译插件推荐(不用谷歌翻译api、支持短句英汉互译、支持查词、支持自动补全、不需要浏览器)

    需求: 1)偶尔需要查英文生词: 2)有时候想不起来中文对应的英文: 3)不想回到浏览器打开一堆网页: 4)谷歌翻译挂了. 偶尔需要的需求: 1)短句翻译. 因为谷歌翻译挂了,首先,排除最热门的翻译插 ...

  9. Python3 调用谷歌翻译 英汉互译

    Python3 调用谷歌翻译 将英文翻译成中文 代码如下: import urllib.request import execjsclass Py4Js():def __init__(self):se ...

最新文章

  1. android 取消按钮禁止,android – 如何强制IntentService立即停止与取消按钮从一个活动?...
  2. 面试前必看:Redis 和 Memcached 的区别
  3. mysql的基本数据类型_mysql基本数据类型(mysql学习笔记三)
  4. c语言 文件f指针,C语言文件选择题
  5. IOT必备之MQTT结构分析,不进来看看?【后附源码】
  6. 用Python进行屏幕截图,只用两行代码搞定
  7. 【高并发】怎么演示公平锁和非公平锁?
  8. 绝美自然风光风景壁纸,心旷必然神怡
  9. 课节6: 图神经网络进阶模型之 ERNIESage下
  10. python保存数据_python-从数据存储区下载数据
  11. 【读书笔记】浪潮之巅——公司史篇
  12. 一次成功的mybatis-plus级联查询
  13. android高仿人人网
  14. YYImage加载gif动态图原理
  15. 猫眼网历史日票房数据爬取
  16. android实习日志_【安卓开发实习生工作总结_安卓开发实习生个人年终总结】-看准网...
  17. WiFi配网~智能家居配网解决方案
  18. 信息基础Homework4
  19. 如何将计算机的名称改成英文翻译,电脑中的文档怎么进行中英文的翻译
  20. PCIe转PXI 套件 PXI远程控制器

热门文章

  1. 【计网】计网软件编程——EthernetARP
  2. 2021-08-26 网安实验-Windows系统渗透测试之EternalBlue漏洞利用复现
  3. 智能综合交通(水运、航空)主题汇总(附下载链接)
  4. Three.js 通过屏幕大小计算fov
  5. 二元函数连续与偏导数存在的关系_怎样理解多元函数,连续与偏导存在的关系,偏导连续之间的关系...
  6. 朗润国际期货招商:日本“伯南克”和他的MIT校友
  7. 3D建模需要什么电脑配置?什么样的电脑可以建模?
  8. rgw bucket 防盗链
  9. VLAN间通信全家桶
  10. 笔记本连无线出现“有限的访问权限”解决办法