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


Posted in Python onJuly 19, 2018

本文实例讲述了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://openapi.youdao.com/api/'
  self.headers = {
   "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.109 Safari/537.36",
  }
  self.appKey = appKey # 应用id
  self.appSecret = appSecret # 应用密钥
  self.langFrom = 'auto' # 翻译前文字语言,auto为自动检查
  self.langTo = 'auto'  # 翻译后文字语言,auto为自动检查
 def getUrlEncodedData(self, queryText):
  '''
  将数据url编码
  :param queryText: 待翻译的文字
  :return: 返回url编码过的数据
  '''
  salt = str(int(round(time.time() * 1000))) # 产生随机数 ,其实固定值也可以,不如"2"
  sign_str = self.appKey + queryText + salt + self.appSecret
  sign = hashlib.md5(sign_str).hexdigest()
  payload = {
   'q': queryText,
   'from': self.langFrom,
   'to': self.langTo,
   'appKey': self.appKey,
   'salt': salt,
   'sign': sign
  }
  # 注意是get请求,不是请求
  data = urllib.urlencode(payload)
  return data
 def parseHtml(self, html):
  '''
  解析页面,输出翻译结果
  :param html: 翻译返回的页面内容
  :return: None
  '''
  data = json.loads(html)
  print '-' * 10
  translationResult = data['translation']
  if isinstance(translationResult, list):
   translationResult = translationResult[0]
  print translationResult
  if "basic" in data:
   youdaoResult = "\n".join(data['basic']['explains'])
   print '有道词典结果'
   print youdaoResult
  print '-' * 10
 def translate(self, queryText):
  data = self.getUrlEncodedData(queryText) # 获取url编码过的数据
  target_url = self.url + '?' + data # 构造目标url
  request = urllib2.Request(target_url, headers=self.headers) # 构造请求
  response = urllib2.urlopen(request) # 发送请求
  self.parseHtml(response.read()) # 解析,显示翻译结果
if __name__ == "__main__":
 appKey = '应用id' # 应用id
 appSecret = '应用密钥' # 应用密钥
 fanyi = YouDaoFanyi(appKey, appSecret)
 while True:
  queryText = raw_input("请输入你好翻译的文字[Q|quit退出]: ").strip()
  if queryText in ['Q', 'quit']:
   break
  fanyi.translate(queryText)

关于有道翻译api的详细说明可参考其官网:http://ai.youdao.com/docs/api.html

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
python如何查看系统网络流量的信息
Sep 12 Python
Python利用Beautiful Soup模块搜索内容详解
Mar 29 Python
python编程之requests在网络请求中添加cookies参数方法详解
Oct 25 Python
从django的中间件直接返回请求的方法
May 30 Python
python遍历文件夹,指定遍历深度与忽略目录的方法
Jul 11 Python
Django 日志配置按日期滚动的方法
Jan 31 Python
python字符串切割:str.split()与re.split()的对比分析
Jul 16 Python
python递归法实现简易连连看小游戏
Mar 25 Python
python 一维二维插值实例
Apr 22 Python
Python urllib2运行过程原理解析
Jun 04 Python
python包的导入方式总结
Mar 02 Python
Keras多线程机制与flask多线程冲突的解决方案
May 28 Python
python3基于OpenCV实现证件照背景替换
Jul 18 #Python
python和opencv实现抠图
Jul 18 #Python
Python错误处理操作示例
Jul 18 #Python
Python内存读写操作示例
Jul 18 #Python
NumPy 数学函数及代数运算的实现代码
Jul 18 #Python
Sanic框架应用部署方法详解
Jul 18 #Python
Python Web编程之WSGI协议简介
Jul 18 #Python
You might like
基于php伪静态的实现详细介绍
2013/04/28 PHP
PHP对文件夹递归执行chmod命令的方法
2015/06/19 PHP
PHP封装的完整分页类示例
2018/08/21 PHP
CI框架教程之优化验证码机制详解【验证码辅助函数】
2019/04/16 PHP
jquery 图片轮换效果
2010/07/29 Javascript
jQuery弹出(alert)select选择的值
2013/04/21 Javascript
AngularJS + Node.js + MongoDB开发的基于高德地图位置的通讯录
2015/01/02 Javascript
整理Javascript函数学习笔记
2015/12/01 Javascript
JavaScript中的Array 对象(数组对象)
2016/06/02 Javascript
window.open打开窗口被拦截的快速解决方法
2016/08/04 Javascript
用Vue.js实现监听属性的变化
2016/11/17 Javascript
canvas 绘制圆形时钟
2017/02/22 Javascript
Kindeditor单独调用单图上传增加预览功能的实例
2017/07/31 Javascript
一步步教你利用Canvas对图片进行处理
2017/09/19 Javascript
BootStrap模态框不垂直居中的解决方法
2017/10/19 Javascript
VUE安装使用教程详解
2019/06/03 Javascript
Node.JS枚举统计当前文件夹和子目录下所有代码文件行数
2019/08/23 Javascript
Python代码的打包与发布详解
2014/07/30 Python
Python基于Pymssql模块实现连接SQL Server数据库的方法详解
2017/07/20 Python
Python3.5基础之函数的定义与使用实例详解【参数、作用域、递归、重载等】
2019/04/26 Python
python画图——实现在图上标注上具体数值的方法
2019/07/08 Python
pytorch 自定义参数不更新方式
2020/01/06 Python
python如何爬取动态网站
2020/09/09 Python
python实现文件分片上传的接口自动化
2020/11/19 Python
matplotlib运行时配置(Runtime Configuration,rc)参数rcParams解析
2021/01/05 Python
python中numpy数组与list相互转换实例方法
2021/01/29 Python
adidas澳大利亚官方网站:adidas Australia
2018/04/15 全球购物
美赞臣新加坡官方旗舰店:Enfagrow新加坡
2019/05/15 全球购物
毕业自我鉴定
2013/11/05 职场文书
学校志愿者活动总结
2014/06/27 职场文书
消防演习通知
2015/04/25 职场文书
2016年圣诞节寄语(一句话)
2015/12/07 职场文书
运动会主持人开幕词
2016/03/04 职场文书
用React Native制作一个简单的游戏引擎
2021/05/27 Javascript
安装配置mysql及Navicat prenium的详细流程
2021/06/10 MySQL
Centos7 Shell编程之正则表达式、文本处理工具详解
2022/08/05 Servers