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数据结构之二叉树的建立实例
Apr 29 Python
Python标准库os.path包、glob包使用实例
Nov 25 Python
Python实现周期性抓取网页内容的方法
Nov 04 Python
Windows下Python使用Pandas模块操作Excel文件的教程
May 31 Python
python cx_Oracle模块的安装和使用详细介绍
Feb 13 Python
Python常见排序操作示例【字典、列表、指定元素等】
Aug 15 Python
详解pandas删除缺失数据(pd.dropna()方法)
Jun 25 Python
python实现静态服务器
Sep 05 Python
python数据预处理方式 :数据降维
Feb 24 Python
Python手动或自动协程操作方法解析
Jun 22 Python
解决python和pycharm安装gmpy2 出现ERROR的问题
Aug 28 Python
selenium携带cookies模拟登陆CSDN的实现
Jan 19 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
基于Windows下Apache PHP5.3.1安装教程
2010/01/08 PHP
探讨方法的重写(覆载)详解
2013/06/08 PHP
php防注入及开发安全详细解析
2013/08/09 PHP
ThinkPHP模板判断输出Present标签用法详解
2014/06/30 PHP
PHP使用range协议实现输出文件断点续传代码实例
2014/07/04 PHP
php通过array_merge()函数合并关联和非关联数组的方法
2015/03/18 PHP
php递归遍历删除文件的方法
2015/04/17 PHP
简单了解将WordPress中的工具栏移到底部的小技巧
2015/12/31 PHP
Yii实现简单分页的方法
2016/04/29 PHP
Laravel 手动开关 Eloquent 修改器的操作方法
2019/12/30 PHP
javascript 数组排序函数
2009/08/20 Javascript
用JQuery实现表格隔行变色和突出显示当前行的代码
2012/02/10 Javascript
尝试在让script的type属性等于text/html
2013/01/15 Javascript
node.js中使用socket.io的方法
2014/12/15 Javascript
js实现大转盘抽奖游戏实例
2015/06/24 Javascript
简单实现兼容各大浏览器的js复制内容到剪切板
2015/09/09 Javascript
完善的jquery处理机制
2016/02/21 Javascript
Java  Spring 事务回滚详解
2016/10/17 Javascript
解决layui中的form表单与button的点击事件冲突问题
2018/08/15 Javascript
vue实现记事本功能
2019/06/26 Javascript
微信小程序实现滚动加载更多的代码
2019/12/06 Javascript
[02:40]DOTA2英雄基础教程 先知
2013/11/29 DOTA
Python字符串切片操作知识详解
2016/03/28 Python
Python实现的读取/更改/写入xml文件操作示例
2018/08/30 Python
对pandas里的loc并列条件索引的实例讲解
2018/11/15 Python
python GUI图形化编程wxpython的使用
2019/07/19 Python
用Python画小女孩放风筝的示例
2019/11/23 Python
tensorflow estimator 使用hook实现finetune方式
2020/01/21 Python
Python绘制动态水球图过程详解
2020/06/03 Python
英国在线自行车商店:Evans Cycles
2016/09/26 全球购物
DC Shoes官网:美国滑板鞋和服饰品牌
2017/09/03 全球购物
英国床垫和床架购物网站:Bedman
2019/11/04 全球购物
卫校护理专业毕业生求职信
2013/11/26 职场文书
档案接收函格式
2015/01/30 职场文书
心理健康教育培训研修感言
2015/11/18 职场文书
Java死锁的排查
2022/05/11 Java/Android