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中from module import * 的一个坑
Jul 20 Python
python字符串替换的2种方法
Nov 30 Python
Python的Django框架下管理站点的基本方法
Jul 17 Python
windows系统下Python环境搭建教程
Mar 28 Python
Python爬虫中urllib库的进阶学习
Jan 05 Python
python 获得任意路径下的文件及其根目录的方法
Feb 16 Python
python Django框架实现web端分页呈现数据
Oct 31 Python
浅谈django不使用restframework自定义接口与使用的区别
Jul 15 Python
python接入支付宝的实例操作
Jul 20 Python
Django模板报TemplateDoesNotExist异常(亲测可行)
Dec 18 Python
pandas数据分组groupby()和统计函数agg()的使用
Mar 04 Python
详细介绍python操作RabbitMq
Apr 12 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中将时间差转换为字符串提示的实现代码
2011/08/08 PHP
php数组函数序列之in_array() 查找数组值是否存在
2011/10/29 PHP
PHP+Ajax实现验证码的实时验证
2016/07/20 PHP
PHP7.1新功能之Nullable Type用法分析
2016/09/26 PHP
javascript innerHTML、outerHTML、innerText、outerText的区别
2008/11/24 Javascript
js操作table示例(个人心得)
2013/11/29 Javascript
javascript实现日期格式转换
2014/12/16 Javascript
javascript定时器完整实例
2015/02/10 Javascript
JavaScript中字符串拼接的基本方法
2015/07/07 Javascript
javascript冒泡排序小结
2016/04/10 Javascript
jQuery实现公告新闻自动滚屏效果实例代码
2016/07/14 Javascript
JS FormData上传文件的设置方法
2017/07/05 Javascript
JavaScript canvas实现围绕旋转动画
2017/11/18 Javascript
使用webpack3.0配置webpack-dev-server教程
2018/05/29 Javascript
详解vue开发中调用微信jssdk的问题
2019/04/16 Javascript
vue从一个页面跳转到另一个页面并携带参数的解决方法
2019/08/12 Javascript
p5.js实现简单货车运动动画
2019/10/23 Javascript
动态创建类实例代码
2009/10/07 Python
numpy中索引和切片详解
2017/12/15 Python
Python异常对代码运行性能的影响实例解析
2018/02/08 Python
Python装饰器(decorator)定义与用法详解
2018/02/09 Python
python中找出numpy array数组的最值及其索引方法
2018/04/17 Python
在pycharm上mongodb配置及可视化设置方法
2018/11/30 Python
Python使用微信itchat接口实现查看自己微信的信息功能详解
2019/08/22 Python
HTML5中图片之间的缝隙完美解决方法
2017/07/07 HTML / CSS
光声世纪笔试题目
2012/08/25 面试题
公务员培训自我鉴定
2013/09/19 职场文书
省三好学生申请材料
2014/01/22 职场文书
2014学校庆三八妇女节活动总结
2014/03/01 职场文书
租车协议书范本
2014/04/22 职场文书
三八红旗手事迹材料
2014/12/26 职场文书
2015-2016年小学教导工作总结
2015/07/21 职场文书
HTML速写之Emmet语法规则的实现
2021/04/07 HTML / CSS
使用Python的开发框架Brownie部署以太坊智能合约
2021/05/28 Python
Redis命令处理过程源码解析
2022/02/12 Redis
Java由浅入深通关抽象类与接口(上篇)
2022/04/26 Java/Android