Python如何通过百度翻译API实现翻译功能


Posted in Python onApril 02, 2020

本人英语不好,很多词组不认识,只能借助工具;百度翻译和谷歌翻译都不错,近期自学Python,就想能否自己设计一个百度翻译软件呢?

百度翻译开放平台:http://api.fanyi.baidu.com/api/trans/product/index

Python如何通过百度翻译API实现翻译功能

百度翻译开放平台是百度翻译面向广大开发者提供开放服务的平台。

服务涵盖:通用翻译API、定制化翻译API、语音翻译SDK、拍照翻译SDK等,并持续更新中。自己用通用的即可。

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

已注册开发者的用户,可在产品服务页面点击“立即使用”或者在管理控制台开通通用翻译API服务;如需开通更多服务,可在管理控制台-总览页面开通其他服务。

Python如何通过百度翻译API实现翻译功能

通用翻译API技术文档 http://api.fanyi.baidu.com/api/trans/product/apidoc

通用翻译API通过HTTP接口对外提供多语种互译服务。您只需要通过调用通用翻译API,传入待翻译的内容,并指定要翻译的源语言(支持源语言语种自动检测)和目标语言种类,就可以得到相应的翻译结果。

通用翻译API HTTP地址:http://api.fanyi.baidu.com/api/trans/vip/translate

通用翻译API HTTPS地址:https://fanyi-api.baidu.com/api/trans/vip/translate

Python如何通过百度翻译API实现翻译功能

Python如何通过百度翻译API实现翻译功能

完整代码:

import json
import random
import hashlib
from urllib import parse
import http.client

class BaiduTranslate:
  def __init__(self,fromLang,toLang):
    self.url = "/api/trans/vip/translate"
    self.appid="xxxxx" #申请的账号
    self.secretKey = 'xxxxx'#账号密码
    self.fromLang = fromLang
    self.toLang = toLang
    self.salt = random.randint(32768, 65536)

  def BdTrans(self,text):
    sign = self.appid + text + str(self.salt) + self.secretKey
    md = hashlib.md5()
    md.update(sign.encode(encoding='utf-8'))
    sign = md.hexdigest()
    myurl = self.url + \
        '?appid=' + self.appid + \
        '&q=' + parse.quote(text) + \
        '&from=' + self.fromLang + \
        '&to=' + self.toLang + \
        '&salt=' + str(self.salt) + \
        '&sign=' + sign
    try:
      httpClient = http.client.HTTPConnection('api.fanyi.baidu.com')
      httpClient.request('GET', myurl)
      response = httpClient.getresponse()
      html = response.read().decode('utf-8')
      html = json.loads(html)
      dst = html["trans_result"][0]["dst"]
      return True , dst
    except Exception as e:
      return False , e
if __name__=='__main__':
  BaiduTranslate_test = BaiduTranslate('en','zh')
  Results = BaiduTranslate_test.BdTrans("Hello, World!")#要翻译的词组
  print(Results)

Python如何通过百度翻译API实现翻译功能

官方demo,应该是在Python2中运行的,Python3中可能无法运行,原因应该是没有安装对应的库和语法的问题,

查找各种资料发现原来Python 2.x中的"httplib"模块在Python 3.x中变成了"http.client",

print语句输出在3.x中要加(), MD5 要换成hashlib,

import hashlib
str1 = "中国是一个伟大的国家,中华民族是一个伟大的民族"
md5 = hashlib.md5()
md5.update(str1.encode("utf-8"))  # 注意这里必须要编码,否则报错
print(md5.hexdigest())

修改运行后,结果还是乱码:

Python如何通过百度翻译API实现翻译功能

增加转码后,显示正常,完整代码如下:

#/usr/bin/env python
#coding=utf8

import json
import http.client  #修改引用的模块
import hashlib    #修改引用的模块
from urllib import parse
import random

appid = 'xxxx' #你的appid
secretKey = 'xxxx' #你的密钥
 
httpClient = None
myurl = '/api/trans/vip/translate'
q = 'good'
fromLang = 'en'
toLang = 'zh'
salt = random.randint(32768, 65536)

sign = appid+q+str(salt)+secretKey
m1 = hashlib.md5()
m1.update(sign.encode("utf-8"))
sign = m1.hexdigest()
myurl = myurl+'?appid='+appid+'&q='+parse.quote(q)+'&from='+fromLang+'&to='+toLang+'&salt='+str(salt)+'&sign='+sign

try:
  httpClient = http.client.HTTPConnection('api.fanyi.baidu.com')
  httpClient.request('GET', myurl)
  response = httpClient.getresponse()

  #转码
  html = response.read().decode('utf-8')
  html = json.loads(html)
  dst = html["trans_result"][0]["dst"]
  print(dst)
except Exception as e:
  print(e)
finally:
  if httpClient:
    httpClient.close()

以下是官方demo,大家可以对比下区别:

#/usr/bin/env python
#coding=utf8

import httplib
import md5
import urllib
import random

appid = '' #你的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='+sign
 
try:
  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 相关文章推荐
python 回调函数和回调方法的实现分析
Mar 23 Python
Python实现Linux的find命令实例分享
Jun 04 Python
使用NumPy和pandas对CSV文件进行写操作的实例
Jun 14 Python
Python实现获取汉字偏旁部首的方法示例【测试可用】
Dec 18 Python
python批量解压zip文件的方法
Aug 20 Python
使用tensorflow显示pb模型的所有网络结点方式
Jan 23 Python
Python如何操作office实现自动化及win32com.client的运用
Apr 01 Python
Pytorch使用PIL和Numpy将单张图片转为Pytorch张量方式
May 25 Python
如何在Python对Excel进行读取
Jun 04 Python
python中加背景音乐如何操作
Jul 19 Python
搭建pypi私有仓库实现过程详解
Nov 25 Python
python 利用PyAutoGUI快速构建自动化操作脚本
May 31 Python
Python基于百度AI实现OCR文字识别
Apr 02 #Python
python 穷举指定长度的密码例子
Apr 02 #Python
python3安装OCR识别库tesserocr过程图解
Apr 02 #Python
python简单的三元一次方程求解实例
Apr 02 #Python
Python 线性回归分析以及评价指标详解
Apr 02 #Python
Django REST framwork的权限验证实例
Apr 02 #Python
详解Ubuntu环境下部署Django+uwsgi+nginx总结
Apr 02 #Python
You might like
第二章 PHP入门基础之php代码写法
2011/12/30 PHP
zend framework框架中url大小写问题解决方法
2014/08/19 PHP
PHP中mysql_field_type()函数用法
2014/11/24 PHP
php查询操作实现投票功能
2016/05/09 PHP
thinkPHP中验证码的简单实现方法
2016/12/05 PHP
php设计模式之职责链模式定义与用法经典示例
2019/09/19 PHP
IE和Mozilla的兼容性汇总event
2007/08/12 Javascript
javascript实现的在当前窗口中漂浮框的代码
2010/03/15 Javascript
Jquery Ajax 学习实例2 向页面发出请求 返回JSon格式数据
2010/03/15 Javascript
js页面滚动时层智能浮动定位实现(jQuery/MooTools)
2011/08/23 Javascript
js向上无缝滚动,网站公告效果 具体代码
2013/11/18 Javascript
jQuery focus和blur事件的应用详解
2014/01/26 Javascript
javascript面向对象之共享成员属性与方法及prototype关键字用法
2015/01/13 Javascript
Js获取图片原始宽高的实现代码
2016/05/17 Javascript
Web前端框架Angular4.0.0 正式版发布
2017/03/28 Javascript
TypeScript入门-接口
2017/03/30 Javascript
微信小程序使用map组件实现解析经纬度功能示例
2019/01/22 Javascript
Vue中的验证登录状态的实现方法
2019/03/09 Javascript
layui动态加载多表头的实例
2019/09/05 Javascript
使用vue制作滑动标签
2019/09/21 Javascript
jquery css实现流程进度条
2020/03/26 jQuery
JQuery插件tablesorter表格排序实现过程解析
2020/05/28 jQuery
[14:36]2014 DOTA2国际邀请赛中国区预选赛5.21 Orenda VS NE
2014/05/22 DOTA
[03:10]2014DOTA2 TI马来劲旅Titan首战告捷目标只是8强
2014/07/10 DOTA
python 数据加密代码
2008/12/24 Python
使用Python的Treq on Twisted来进行HTTP压力测试
2015/04/16 Python
在Python中实现替换字符串中的子串的示例
2018/10/31 Python
浅析Python+OpenCV使用摄像头追踪人脸面部血液变化实现脉搏评估
2019/10/17 Python
python 基于wx实现音乐播放
2020/11/24 Python
美国内衣第一品牌:Hanes(恒适)
2016/07/29 全球购物
goodhealth官方海外旗舰店:新西兰国民营养师
2017/12/15 全球购物
新闻网站实习自我鉴定
2013/09/25 职场文书
《东方明珠》教学反思
2014/04/20 职场文书
资源环境与城乡规划管理专业自荐书
2014/09/26 职场文书
2015年社区创卫工作总结
2015/04/21 职场文书
大学副班长竞选稿
2015/11/21 职场文书