Python调用百度翻译API实现自动翻译的完整教程

清欢
清欢
发布时间:2026-10-13| 5人浏览过
原创

本文详细介绍如何利用Python调用百度翻译开放平台API实现自动翻译功能。内容涵盖从注册开发者账号、获取APPID和密钥,到构建HTTP请求、处理签名及解决Python版本兼容性问题(如Python 2与3的差异)的完整步骤,并提供修正后的可运行代码示例。

Python调用百度翻译API实现自动翻译的完整教程

由于英语基础有限,许多词组难以理解,因此需要借助翻译工具。目前百度翻译和谷歌翻译表现均较为优秀。在近期自学Python的过程中,萌生了尝试自行开发一款基于百度翻译接口的软件的想法。

百度翻译开放平台简介

百度翻译开放平台地址:http://api.fanyi.baidu.com/api/trans/product/index

百度翻译开放平台旨在为广大开发者提供开放的服务接口。

该平台提供的服务包括通用翻译API、定制化翻译API、语音翻译SDK以及拍照翻译SDK等,且功能仍在持续更新中。对于个人使用而言,选择通用翻译API即可满足需求。

开发者账号注册与API获取

通用翻译API采用全流程自助申请模式。用户需点击网站顶部的“登录”按钮,使用百度账号登录平台;随后在产品服务页面点击“立即使用”,根据页面提示注册成为开发者,即可获得APPID和密钥信息。需要注意的是,同一个百度账号或手机号码仅能申请一组APPID和密钥,但这组凭证可用于调用多项服务。

对于已注册的开发用户,可在产品服务页面点击“立即使用”,或在管理控制台中开通通用翻译API服务;若需使用其他服务,可在管理控制台-总览页面进行开通操作。

通用翻译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代码实现与版本兼容处理

完整代码:


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)

官方提供的Demo代码似乎基于Python 2环境编写,在Python 3环境中可能无法直接运行,主要原因涉及相关库的缺失以及语法差异。

经过查阅相关资料发现,Python 2.x中的"httplib"模块在Python 3.x中已更名为"http.client"。

此外,Python 3.x中print语句输出需要添加括号,MD5模块需替换为hashlib。


import hashlib
str1 = "中国是一个伟大的国家,中华民族是一个伟大的民族"
md5 = hashlib.md5()
md5.update(str1.encode("utf-8"))  # 注意这里必须要编码,否则报错
print(md5.hexdigest())

修改后运行,结果仍出现乱码现象。

增加转码处理后,显示恢复正常,完整代码如下:


#/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 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。