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实现的金山快盘的签到程序
Jan 17 Python
详解Python中的join()函数的用法
Apr 07 Python
python实现根据用户输入从电影网站获取影片信息的方法
Apr 07 Python
Python编程产生非均匀随机数的几种方法代码分享
Dec 13 Python
Python实现快速计算词频功能示例
Jun 25 Python
Python定时任务sched模块用法示例
Jul 16 Python
Python使用get_text()方法从大段html中提取文本的实例
Aug 27 Python
pycharm运行scrapy过程图解
Nov 22 Python
Python Sympy计算梯度、散度和旋度的实例
Dec 06 Python
python爬取网易云音乐热歌榜实例代码
Aug 07 Python
PyCharm配置KBEngine快速处理代码提示冲突、配置命令问题
Apr 03 Python
DjangoRestFramework 使用 simpleJWT 登陆认证完整记录
Jun 22 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&mysql(五)
2006/10/09 PHP
PHP针对多用户实现更换头像功能
2016/09/04 PHP
wordpress之js库集合研究介绍
2007/08/17 Javascript
js判断背景图片是否加载成功使用img的width实现
2013/05/29 Javascript
判断文件是否正在被使用的JS代码
2013/12/21 Javascript
JS取request值以及自动执行使用示例
2014/02/24 Javascript
TypeScript具有的几个不同特质
2015/04/07 Javascript
jQuery数据类型小结(14个)
2016/01/08 Javascript
解决JS组件bootstrap table分页实现过程中遇到的问题
2016/04/21 Javascript
jQuery 跨域访问解决原理案例详解
2016/07/09 Javascript
AngularJS Toaster使用详解
2017/02/24 Javascript
Bootstrap输入框组件简单实现代码
2017/03/06 Javascript
一篇文章让你彻底弄懂JS的事件冒泡和事件捕获
2017/08/14 Javascript
微信小程序手机号码验证功能的实例代码
2018/08/28 Javascript
Electron-vue脚手架改造vue项目的方法
2018/10/22 Javascript
JS实现利用闭包判断Dom元素和滚动条的方向示例
2019/08/26 Javascript
python中将阿拉伯数字转换成中文的实现代码
2011/05/19 Python
python操作摄像头截图实现远程监控的例子
2014/03/25 Python
轻松掌握python设计模式之访问者模式
2016/11/18 Python
Python标准库之collections包的使用教程
2017/04/27 Python
python opencv人脸检测提取及保存方法
2018/08/03 Python
详解pandas数据合并与重塑(pd.concat篇)
2019/07/09 Python
Python Django的安装配置教程图文详解
2019/07/17 Python
django框架模型层功能、组成与用法分析
2019/07/30 Python
Python对接 xray 和微信实现自动告警
2019/09/17 Python
Python暴力破解Mysql数据的示例
2020/11/09 Python
Python批量删除mysql中千万级大量数据的脚本分享
2020/12/03 Python
7款设计巧妙的css3飘带状3D立体效果的导航菜单和表单窗口
2013/02/04 HTML / CSS
CSS3制作气泡对话框的实例教程
2016/05/10 HTML / CSS
捷克购买家具网站:JENA nábytek
2020/03/19 全球购物
影视动画专业个人的自我评价
2013/12/31 职场文书
产品发布会策划方案
2014/05/12 职场文书
义务教育学校标准化建设汇报材料
2014/08/16 职场文书
推广普通话共筑中国梦演讲稿
2014/09/21 职场文书
努力工作保证书
2015/02/28 职场文书
复兴之路纪录片观后感
2015/06/02 职场文书