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中字典(Dictionary)用法实例详解
May 30 Python
Python实现删除文件中含“指定内容”的行示例
Jun 09 Python
删除python pandas.DataFrame 的多重index实例
Jun 08 Python
Python迭代器与生成器用法实例分析
Jul 09 Python
Python图像处理之图像的缩放、旋转与翻转实现方法示例
Jan 04 Python
Python设计模式之观察者模式原理与用法详解
Jan 16 Python
python中数组和矩阵乘法及使用总结(推荐)
May 18 Python
windows10下安装TensorFlow Object Detection API的步骤
Jun 13 Python
使用Python爬虫库requests发送请求、传递URL参数、定制headers
Jan 25 Python
Python3爬虫关于识别检验滑动验证码的实例
Jul 30 Python
PyCharm 光标变成黑块的解决方式
Feb 06 Python
python glom模块的使用简介
Apr 13 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
phpMyAdmin 安装配置方法和问题解决
2009/06/08 PHP
php smarty函数扩展
2010/03/15 PHP
JavaScript实现滚动栏效果的方法
2015/04/27 PHP
Laravel框架实现redis集群的方法分析
2017/09/14 PHP
php生成毫秒时间戳的实例讲解
2017/09/22 PHP
php框架CodeIgniter主从数据库配置方法分析
2018/05/25 PHP
Yii框架应用组件用法实例分析
2020/05/15 PHP
如何让页面在打开时自动刷新一次让图片全部显示
2012/12/17 Javascript
javascript 中String.match()与RegExp.exec()的区别说明
2013/01/10 Javascript
编写针对IE的JS代码两种编写方法
2013/01/30 Javascript
JavaScript中的迭代器和生成器详解
2014/10/29 Javascript
JS实现从表格中动态删除指定行的方法
2015/03/31 Javascript
js兼容火狐获取图片宽和高的方法
2015/05/21 Javascript
jQuery实现页面顶部显示的进度条效果完整实例
2015/12/09 Javascript
详解JavaScript中this关键字的用法
2016/05/26 Javascript
jQuery获取单击节点对象的方法
2016/06/02 Javascript
jquery获取table指定行和列的数据方法(当前选中行、列)
2016/11/07 Javascript
Javascript实现倒计时(防页面刷新)实例
2016/12/13 Javascript
解析ajaxFileUpload 异步上传文件简单使用
2016/12/30 Javascript
自带气泡提示的vue校验插件(vue-verify-pop)
2017/04/07 Javascript
vue2.0全局组件之pdf详解
2017/06/26 Javascript
利用nvm管理多个版本的node.js与npm详解
2017/11/02 Javascript
jQuery无冲突模式详解
2019/01/17 jQuery
解决layer图标icon不加载的问题
2019/09/04 Javascript
微信小程序:报错(in promise) MiniProgramError
2020/10/30 Javascript
浅谈PYTHON 关于文件的操作
2019/03/19 Python
浅谈Python3实现两个矩形的交并比(IoU)
2020/01/18 Python
Django ORM filter() 的运用详解
2020/05/14 Python
pytorch 计算ConvTranspose1d输出特征大小方式
2020/06/23 Python
浅析Python打包时包含静态文件处理方法
2021/01/15 Python
《永远的白衣战士》教学反思
2014/04/25 职场文书
分公司负责人任命书
2014/06/04 职场文书
关于环保的宣传稿
2015/07/23 职场文书
感恩的心主题班会
2015/08/12 职场文书
springboot @ConfigurationProperties和@PropertySource的区别
2021/06/11 Java/Android
python读取mat文件生成h5文件的实现
2022/07/15 Python