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

本人英语不好,很多词组不认识,只能借助工具;百度翻译和谷歌翻译都不错,近期自学Python,就想能否自己设计一个百度翻译软件呢?

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

百度翻译开放平台是百度翻译面向广大开发者提供开放服务的平台。

服务涵盖:通用翻译API、定制化翻译API、语音翻译SDK、拍照翻译SDK等,并持续更新中。自己用通用的即可。

通用翻译API采用全流程自助申请的模式。点击网站上方的“登录”按钮,以百度账号登录平台;在产品服务页面点击“立即使用”,按照页面提示信息注册成为开发者,即可获得APPID和密钥信息。同一百度账号或手机号码仅能申请一组APPID和密钥信息,该APPID和密钥信息可用于多项服务调用

已注册开发者的用户,可在产品服务页面点击“立即使用”或者在管理控制台开通通用翻译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

完整代码:

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,应该是在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())

修改运行后,结果还是乱码:

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

#/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()

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • python批量将excel内容进行翻译写入功能

    由于小编初来乍到,有很多地方不是很到位,还请见谅,但是很实用的哦! 1.首先是需要进行文件的读写操作,需要获取文件路径,方式使用os.listdir(路径)进行批量查找文件. file_path = '/home/xx/xx/xx' # ret 返回一个列表 ret = list_dir = os.listdir(file_path) # 遍历列表,获取需要的结尾文件(只考虑获取文件,不考虑执行效率) for i in ret : if i.endswith('xlsx'): # 执行的逻辑 2

  • python制作英语翻译小工具代码实例

    这篇文章主要介绍了python制作英语翻译小工具代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 用python爬虫可以制作英语翻译小工具.来看下代码吧- import requests,json #函数封装 def translator(): session=requests.session() i=input('请问你要翻译什么?') url='http://fanyi.youdao.com/translate' headers={

  • Python通过调用有道翻译api实现翻译功能示例

    本文实例讲述了Python通过调用有道翻译api实现翻译功能.分享给大家供大家参考,具体如下: 通过调用有道翻译的api,实现中译英.其他语言译中文 Python代码: # coding=utf-8 import urllib import urllib2 import json import time import hashlib class YouDaoFanyi: def __init__(self, appKey, appSecret): self.url = 'https://open

  • python实现在线翻译功能

    对于需要大量翻译的数据,人工翻译太慢,此时需要使用软件进行批量翻译. 1.使用360的翻译 def fanyi_word_cn(string): url="https://fanyi.so.com/index/search" #db_path = './db/tasks.db' Form_Data= {} #这里输入要翻译的英文 Form_Data['query']= string Form_Data['eng']= '1' #用urlencode把字典变成字符串,#服务器不接受字典,

  • python3调用百度翻译API实现实时翻译

    今天需要做一个翻译的工具,找到之前写过的有道翻译,已经不能用了,最后看到百度翻译还不错,不过官方版本是Python2,我需要Python3,就自己写了一个: # coding: utf8 ''' @Author: LCY @Contact: lchuanyong@126.com @blog: http://http://blog.csdn.net/lcyong_ @Date: 2018-01-15 @Time: 19:19 说明: appid和secretKey为百度翻译文档中自带的,需要切换为

  • Python实现图片识别加翻译功能

    Python使用百度AI接口实现图片识别加翻译 python诞生30周年 # encoding:utf-8 import requests import base64 from PIL import Image import pytesseract # 这里需要安装一下 Tesseract-OCR # 链接:https://pan.baidu.com/s/1D2eODet7x9xshBVi6ZUZ_Q # 提取码:qfef # 安装好之后别忘了把Tesseract-OCR路径添加到环境变量中 i

  • python翻译软件实现代码(使用google api完成)

    复制代码 代码如下: # -*- coding: utf-8 -*- import httplibfrom urllib import urlencodeimport re def out(text):    p = re.compile(r'","')    m = p.split(text)    print m[0][4:].decode('UTF-8').encode('GBK') if __name__=='__main__':    while True:        w

  • Python使用百度通用API进行翻译实现

    想汉化StarUML这个软件,感觉工作量太大,想要用Python自动翻译. 结果网上找的一个个用不了,或者用一会儿就断. 于是自己手写了一个简单的,只有两个类:APIConfig和Translater 使用 demo my_api_config = APIConfig("12121123456789", "SFNFENRFNEFLWE") translater = Translater(my_api_config, from_lang="en",

  • Python语言实现百度语音识别API的使用实例

    未来的一段时间,人工智能在市场上占有很重的位置,Python语言则是研究人工智能的最佳编程语言,下面,就让我们来感受一下它的魅力吧! 百度给的样例程序,不论C还是Java版,都分为method1和method2两种 前者称为隐式(post的是json串,音频数据编码到json里),后者称为显式(post的就是音频数据) 一开始考虑到pythonwave包处理的都是"字符串",担心跟C语言的数组不一致,所以选择低效但保险的method1, 即先将音频数据base64编码,再加上采样率.通

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

    本人英语不好,很多词组不认识,只能借助工具:百度翻译和谷歌翻译都不错,近期自学Python,就想能否自己设计一个百度翻译软件呢? 百度翻译开放平台:http://api.fanyi.baidu.com/api/trans/product/index 百度翻译开放平台是百度翻译面向广大开发者提供开放服务的平台. 服务涵盖:通用翻译API.定制化翻译API.语音翻译SDK.拍照翻译SDK等,并持续更新中.自己用通用的即可. 通用翻译API采用全流程自助申请的模式.点击网站上方的"登录"按钮

  • Python如何获得百度统计API的数据并发送邮件示例代码

    小工具 本来这么晚是不准备写博客的,当是想到了那个狗子绝对会在开学的时候跟我逼逼这个事情,所以,还是老老实实地写一下吧. Baidu统计API的使用 系统环境: Python2 requests库:发出请求 json库:json处理 getSiteList的使用 官方文档在此,说实话,这是我使用百BaiduAPI最坑的一次,在这个官方文档的getSiteList中,完全不告诉你请求参数是什么. 首先,需要获得百度统计API的token,在这里写了token获得的流程. # encoding=ut

  • python 3调用百度OCR API实现剪贴板文字识别

    本程序调用百度OCR API对剪贴板的图片文字识别,配合CaptureScreen软件,可快速识别文字. #!python3 import urllib.request, urllib.parse import os, io, sys, json, socket import base64 from PIL import ImageGrab socket.setdefaulttimeout(30) def get_auth(): apikey = 'your apikey' secret_key

  • python实现百度语音识别api

    本文实例为大家分享了ython实现百度语音识别的具体代码,供大家参考,具体内容如下 详细百度语音识别api文档 先下载python用SDK,可以用python setup.py install安装 # 引入Speech SDK from aip import AipSpeech # 定义常量 APP_ID = '你的 App ID' API_KEY = '你的 API Key' SECRET_KEY = '你的 Secret Key' # 初始化AipSpeech对象 aipSpeech = A

  • php使用百度翻译api示例分享

    百度翻译API的PHP代码,测试可以实现,不过英译中可能需要转换编码. 复制代码 代码如下: <?phpfunction language($value,$from="auto",$to="auto"){  $value_code=urlencode($value);  #首先对要翻译的文字进行 urlencode 处理  $appid="YourApiKey";  #您注册的API Key  $languageurl = "ht

  • Laravel框架实现调用百度翻译API功能示例

    本文实例讲述了Laravel框架实现调用百度翻译API功能.分享给大家供大家参考,具体如下: 前言 最近在弄的视频下载网站,弄seo是人工去google翻译,然后再保存,这样下去很累啊,然后就想到让程序自己去翻译然后保存不就行了嘛,自己主要把中文的seo搞定就OK了.说干就干,最先去找了google 翻译 api,可惜要绑定信用卡,太麻烦,放弃,然后找到百度翻译API,虽然支持的国外语言不多,但最基本的国家也都有了.ok,开始撸码. 代码说明 使用的是Laravel框架,语言包存放在resour

  • vue cli3 调用百度翻译API翻译页面的实现示例

    首先说下,本人为在校大三狗一只,缺少实战开发经验,然后用语什么的也不标准,就按我自己的想法写的,有什么不对的地方欢迎指导指导哈 然后直接开始吧 在需要翻译的地方做上标记,这里用的是添加名为"text-dom"的class的方法.比如: <div class="text-dom">原文:</div> 定义储存数据的data data() { return { before: { q: "", //输入的原文 to: &quo

随机推荐