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调用windows api锁定计算机示例
Apr 17 Python
Python学习之用pygal画世界地图实例
Dec 07 Python
Python即时网络爬虫项目启动说明详解
Feb 23 Python
Selenium元素的常用操作方法分析
Aug 10 Python
把pandas转换int型为str型的方法
Jan 29 Python
Pandas读取并修改excel的示例代码
Feb 17 Python
详解python websocket获取实时数据的几种常见链接方式
Jul 01 Python
基于Django ORM、一对一、一对多、多对多的全面讲解
Jul 26 Python
Python 如何优雅的将数字转化为时间格式的方法
Sep 26 Python
Python搭建代理IP池实现接口设置与整体调度
Oct 27 Python
anaconda3安装及jupyter环境配置全教程
Aug 24 Python
python文本处理的方案(结巴分词并去除符号)
May 26 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生成Flash动画的实现代码
2010/03/12 PHP
让PHP以ROOT权限执行系统命令的方法
2011/02/10 PHP
php多个文件及图片上传实例详解
2014/11/10 PHP
php自定义错误处理用法实例
2015/03/20 PHP
PHP加密解密字符串汇总
2015/04/26 PHP
基于Laravel(5.4版本)的基本增删改查操作方法
2019/10/11 PHP
javascript 建设银行登陆键盘
2008/06/10 Javascript
Jquery 插件学习实例1 插件制作说明与tableUI优化
2010/04/02 Javascript
关于UTF-8的客户端用AJAX方式获取GB2312的服务器端乱码问题的解决办法
2010/11/30 Javascript
jQuery AjaxQueue改进步骤
2011/10/06 Javascript
JS实现简单的Canvas画图实例
2013/07/04 Javascript
解决jquery插件冲突的问题
2014/01/23 Javascript
jQuery获取复选框被选中数量及判断选择值的方法详解
2016/05/25 Javascript
Javascript简写条件语句(推荐)
2016/06/12 Javascript
javascript正则表达式之分组概念与用法实例
2016/06/16 Javascript
jQGrid Table操作列中点击【操作】按钮弹出按钮层的实现代码
2016/12/05 Javascript
node安装--linux下的快速安装教程
2017/03/21 Javascript
基于Vue2实现简易的省市区县三级联动组件效果
2018/11/05 Javascript
js实现烟花特效
2020/03/02 Javascript
[04:14]从西雅图到上海——玩家自制DOTA2主题歌曲应援TI9
2019/07/11 DOTA
python 数据加密代码
2008/12/24 Python
PyTorch快速搭建神经网络及其保存提取方法详解
2018/04/28 Python
使用Django2快速开发Web项目的详细步骤
2019/01/06 Python
Python代码生成视频的缩略图的实例讲解
2019/12/22 Python
Python实现图像的垂直投影示例
2020/01/17 Python
基于Python的接口自动化读写excel文件的方法
2021/01/15 Python
Python使用paramiko连接远程服务器执行Shell命令的实现
2021/03/04 Python
使用HTML和CSS3绘制基本卡通图案的示例分享
2015/11/06 HTML / CSS
耐克巴西官方网站:Nike巴西
2016/08/14 全球购物
香港时装购物网站:ZALORA香港
2017/04/23 全球购物
美国迪克体育用品商店:DICK’S Sporting Goods
2018/07/24 全球购物
泰海淘:泰国king Power王权免税集团旗下跨境海淘综合型电商
2020/07/26 全球购物
几道PHP的面试题
2012/05/19 面试题
某科技软件测试面试题
2013/05/19 面试题
小学评语大全
2014/04/22 职场文书
英国数字版游戏销量周榜公布 《小缇娜的奇幻之地》登顶
2022/04/03 其他游戏