Python如何通过百度翻译API实现翻译功能

2020-09-25 0 836

本人英语不好,很多词组不认识,只能借助工具;百度翻译和谷歌翻译都不错,近期自学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如何通过百度翻译API实现翻译功能 http://www.ox520.com/25176.html

常见问题

相关文章

发表评论
暂无评论
官方客服团队

为您解决烦忧 - 24小时在线 专业服务