基于python实现百度翻译功能


Posted in Python onMay 09, 2019

运行环境: python 3.6.0

今天处于练习的目的,就用 python 写了一个百度翻译,是如何做到的呢,其实呢就是拿到接口,通过这个接口去访问,不过中间确实是出现了点问题,不过都解决掉了

先晾图后晾代码

运行结果:

基于python实现百度翻译功能

代码:

# -*- coding: utf-8 -*-
"""
功能:百度翻译
注意事项:中英文自动切换
"""
import requests
import re
class Baidu_Translate(object):
  def __init__(self, query_string):
    self.query_string = query_string
    self.url_1 = 'https://fanyi.baidu.com/sug'
    # self.url = 'https://fanyi.baidu.com/v2transapi' # 这里不能用这个地址,因为对方采用了反爬虫措施,访问这个地址是人家是不会给你任何数据的
    self.url_0 = 'https://fanyi.baidu.com/transapi'
    self.zh_pattern = re.compile('[\u4e00-\u9fa5]+')
    self.headers = {
      'Accept': '* / *',
      'Accept - Encoding': 'gzip, deflate',
      'Accept - Language': 'zh-CN, zh; q=0.9',
      'Connection': 'keep - alive',
      'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',
      'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.36',
      'X-Requested-With': 'XMLHttpRequest',
    }
  def get_post_data(self):
    """
    拿到 post 请求上传的参数,并判断输入类型并予以返回
    :return: 查询词
    """
    if re.search(pattern=self.zh_pattern, string=self.query_string): # 输入的内容含有中文,则判别其为中文输入
      return {
      "from": "zh",
      "to": "en",
      "kw": self.query_string, # 模糊查询 url_1关键词
      "query": self.query_string, # 精准查询 url_0关键词
    }
    else:
      return {
      "from": "en",
      "to": "zh",
      "kw": self.query_string, # 模糊查询 url_1关键词
      "query": self.query_string, # 精准查询 url_0关键词
      }
  def request_translate(self):
    """
    向百度请求 json 数据
    :return: 向百度请求的 json 数据
    """
    data = self.get_post_data()
    try:
      response_0 = requests.request(method="post", url=self.url_0, headers=self.headers, data=data).json()
    except Exception: # 进行数据请求的任何异常处理
      response_0 = ''
    try:
      response_1 = requests.request(method="post", url=self.url_1, headers=self.headers, data=data).json()
    except Exception: # 进行数据请求的任何异常处理
      response_1 = ''
    return response_0, response_1
  def parse_translate_data(self):
    """
    数据解析,将请求到的翻译内容解析并输出
    :return: None
    """
    response_0 = self.request_translate()[0]
    response_1 = self.request_translate()[1]
    # item = response_0
    if response_0:
      item = response_0.get('data')[0].get('dst')
      print('key word:', self.query_string, '\t', 'translate:', item)
    if response_1:
      data = response_1.get('data')
      print()
      for item in data[:1]: # 长度一般为5,这里只保留其释义
        print('key word: \t[ {key} ]'.format(key=item.get('k')))
        print('value: \t\t[ {value} ]'.format(value=item.get('v')))
        print()
    # print(response_1.get('data'))
def main():
  """
  主函数
  :return: None
  """
  while True:
    try:
      query_keywords = input("""请输入您要翻译的内容 [ 输入四个'0'退出 ] : """)
      if query_keywords == "0000": # 如果输入四个 '0',退出小程序
        print('########## 您已成功退出百度翻译 ##########')
        break
      else:
        baidu = Baidu_Translate(query_string=query_keywords)
        baidu.parse_translate_data()
    except Exception as e:
      print('请求出错,请重试', e.args)
if __name__ == '__main__':
  main()

总结

以上所述是小编给大家介绍的基于python实现百度翻译功能,希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的!

Python 相关文章推荐
如何利用Fabric自动化你的任务
Oct 20 Python
轻松掌握python设计模式之访问者模式
Nov 18 Python
Python 实现数据库(SQL)更新脚本的生成方法
Jul 09 Python
python实现简单中文词频统计示例
Nov 08 Python
Python中顺序表的实现简单代码分享
Jan 09 Python
python爬虫获取新浪新闻教学
Dec 23 Python
python画蝴蝶曲线图的实例
Nov 21 Python
Python注释、分支结构、循环结构、伪“选择结构”用法实例分析
Jan 09 Python
如何使用Python发送HTML格式的邮件
Feb 11 Python
Python函数生成器原理及使用详解
Mar 12 Python
Python3基于print打印带颜色字符串
Jul 06 Python
python如何将mat文件转为png
Jul 15 Python
python使用time、datetime返回工作日列表实例代码
May 09 #Python
python 对字典按照value进行排序的方法
May 09 #Python
使用Django开发简单接口实现文章增删改查
May 09 #Python
python GUI实现小球满屏乱跑效果
May 09 #Python
深入浅析python 协程与go协程的区别
May 09 #Python
Python实现堡垒机模式下远程命令执行操作示例
May 09 #Python
python3.6使用tkinter实现弹跳小球游戏
May 09 #Python
You might like
PHP中的string类型使用说明
2010/07/27 PHP
简单的PHP缓存设计实现代码
2011/09/30 PHP
使用PHP下载CSS文件中的图片的代码
2013/09/24 PHP
Yii中CGridView关联表搜索排序方法实例详解
2014/12/03 PHP
php简单日历函数
2015/10/28 PHP
CI分页类首页、尾页不显示的解决方法
2016/03/28 PHP
Yii实现显示静态页的方法
2016/04/25 PHP
php 的反射详解及示例代码
2016/08/25 PHP
PHP7.3.10编译安装教程
2019/10/08 PHP
国外大牛IE版本检测!现在IE都到9了,IE检测代码
2012/01/04 Javascript
jQuery Deferred和Promise创建响应式应用程序详细介绍
2013/03/05 Javascript
7款风格新颖的jQuery/CSS3菜单导航分享
2013/04/23 Javascript
jquery 图片缩放拖动的简单实例
2014/01/08 Javascript
JavaScript 封装一个tab效果源码分享
2015/09/15 Javascript
JS+CSS实现类似QQ好友及黑名单效果的树型菜单
2015/09/22 Javascript
JS+CSS相对定位实现的下拉菜单
2015/10/06 Javascript
动态创建按钮的JavaScript代码
2016/01/29 Javascript
ES6的新特性概览
2016/03/10 Javascript
js实现获取两个日期之间所有日期的方法
2016/06/17 Javascript
jQuery中show与hide方法用法示例
2016/09/16 Javascript
微信小程序 参数传递详解
2016/10/24 Javascript
JS实现的自动打字效果示例
2017/03/10 Javascript
基于JavaScript实现的快速排序算法分析
2017/04/14 Javascript
JS实现汉字与Unicode码相互转换的方法详解
2017/04/28 Javascript
SpringMVC简单整合Angular2的示例
2017/07/31 Javascript
vue引入ueditor及node后台配置详解
2018/01/03 Javascript
浅谈vue.use()方法从源码到使用
2019/05/12 Javascript
Python实现句子翻译功能
2017/11/14 Python
使用pandas读取csv文件的指定列方法
2018/04/21 Python
Python中面向对象你应该知道的一下知识
2019/07/10 Python
python基于gevent实现并发下载器代码实例
2019/11/01 Python
学习python需要有编程基础吗
2020/06/02 Python
给男朋友的道歉信
2014/01/12 职场文书
社会体育专业大学生职业生涯规划书
2014/09/17 职场文书
2014年组织部工作总结
2014/11/14 职场文书
TV动画《神废柴☆偶像》公布先导PV
2022/03/20 日漫