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实现测试磁盘性能的方法
Mar 12 Python
详解python单例模式与metaclass
Jan 15 Python
利用信号如何监控Django模型对象字段值的变化详解
Nov 27 Python
selenium+python截图不成功的解决方法
Jan 30 Python
Python socket非阻塞模块应用示例
Sep 12 Python
django框架单表操作之增删改实例分析
Dec 16 Python
Python 实现判断图片格式并转换,将转换的图像存到生成的文件夹中
Jan 13 Python
jupyter notebook中新建cell的方法与快捷键操作
Apr 22 Python
python:HDF和CSV存储优劣对比分析
Jun 08 Python
浅谈Python里面None True False之间的区别
Jul 09 Python
Python文件操作及内置函数flush原理解析
Oct 13 Python
python 实现IP子网计算
Feb 18 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 用户权限中英对照
2010/04/02 PHP
jquery+php+ajax显示上传进度的多图片上传并生成缩略图代码
2014/10/15 PHP
PHP获取ip对应地区和使用网络类型的方法
2015/03/11 PHP
Zend Framework框架教程之Zend_Db_Table_Rowset用法实例分析
2016/03/21 PHP
ExtJS 刷新后如何默认选中刷新前最后一次选中的节点
2014/04/03 Javascript
jquery常用特效方法使用示例
2014/04/25 Javascript
jQuery循环滚动新闻列表示例代码
2014/06/17 Javascript
jQuery中replaceAll()方法用法实例
2015/01/16 Javascript
thinkphp 表名 大小写 窍门
2015/02/01 Javascript
javascript搜索框效果实现方法
2015/05/14 Javascript
Vue 换肤的示例实践
2018/01/23 Javascript
了解ESlint和其相关操作小结
2018/05/21 Javascript
react-native android状态栏的实现
2018/06/15 Javascript
vue组件开发props验证的实现
2019/02/12 Javascript
微信小程序生成二维码的示例代码
2019/03/29 Javascript
arctext.js实现文字平滑弯曲弧形效果的插件
2019/05/13 Javascript
详解Node.JS模块 process
2020/08/31 Javascript
[49:05]Newbee vs TNC 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
python函数缺省值与引用学习笔记分享
2013/02/10 Python
python私有属性和方法实例分析
2015/01/15 Python
利用Django框架中select_related和prefetch_related函数对数据库查询优化
2015/04/01 Python
高质量Python代码编写的5个优化技巧
2017/11/16 Python
python语言中with as的用法使用详解
2018/02/23 Python
python实现数据导出到excel的示例--普通格式
2018/05/03 Python
什么是python的必选参数
2020/06/21 Python
python如何查看安装了的模块
2020/06/23 Python
python 调整图片亮度的示例
2020/12/03 Python
基于html5 canvas实现漫天飞雪效果实例
2014/09/10 HTML / CSS
瑞士男士时尚网上商店:Babista
2020/05/14 全球购物
PHP面试题及答案二
2015/05/23 面试题
中介公司区域经理岗位职责范本
2014/03/02 职场文书
青奥会口号
2014/06/12 职场文书
学校联谊协议书
2014/09/16 职场文书
党员作风建设整改方案
2014/10/27 职场文书
酒店辞职书范文
2015/02/26 职场文书
处罚决定书范文
2015/06/24 职场文书