基于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 相关文章推荐
python中使用OpenCV进行人脸检测的例子
Apr 18 Python
Python计算程序运行时间的方法
Dec 13 Python
Python的Flask框架中使用Flask-SQLAlchemy管理数据库的教程
Jun 14 Python
详解Python的三种可变参数
May 08 Python
PyQt5 在label显示的图片中绘制矩形的方法
Jun 17 Python
用Python识别人脸,人种等各种信息
Jul 15 Python
Python学习笔记之Break和Continue用法分析
Aug 14 Python
浅谈pytorch grad_fn以及权重梯度不更新的问题
Aug 20 Python
Python 多线程其他属性以及继承Thread类详解
Aug 28 Python
python将三维数组展开成二维数组的实现
Nov 30 Python
python pymysql库的常用操作
Oct 16 Python
python selenium 获取接口数据的实现
Dec 07 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 mssql 分页SQL语句优化 持续影响
2009/04/26 PHP
Fatal error: Call to undefined function curl_init()解决方法
2010/04/09 PHP
PHP生成excel时单元格内换行问题的解决方法
2010/08/26 PHP
PHP获取表单textarea数据中的换行问题
2010/09/10 PHP
php绘制一个扇形的方法
2015/01/24 PHP
ThinkPHP框架实现的微信支付接口开发完整示例
2019/04/10 PHP
javascript GUID生成器实现代码
2009/10/31 Javascript
定义JavaScript二维数组采用定义数组的数组来实现
2012/12/09 Javascript
jQuery 属性选择器element[herf*='value']使用示例
2013/10/20 Javascript
jquery实现无限分级横向导航菜单的方法
2015/03/12 Javascript
解决vue-cli中stylus无法使用的问题方法
2017/06/19 Javascript
微信小程序url与token设置详解
2017/09/26 Javascript
在vue中实现点击选择框阻止弹出层消失的方法
2018/09/15 Javascript
Vue 实现前端权限控制的示例代码
2019/07/09 Javascript
layui实现数据分页功能
2019/07/27 Javascript
Laravel 如何在blade文件中使用Vue组件的示例代码
2020/06/28 Javascript
Python实现删除文件但保留指定文件
2015/06/21 Python
Python实现简单网页图片抓取完整代码实例
2017/12/15 Python
深入浅析Python中list的复制及深拷贝与浅拷贝
2018/09/03 Python
对python添加模块路径的三种方法总结
2018/10/16 Python
Python实现Event回调机制的方法
2019/02/13 Python
python打开文件的方式有哪些
2020/06/29 Python
django数据模型中null和blank的区别说明
2020/09/02 Python
Python tempfile模块生成临时文件和临时目录
2020/09/30 Python
2019年Java 最常见的 面试题
2016/10/19 面试题
介绍JAVA 中的Collection FrameWork(及如何写自己的数据结构)
2014/10/31 面试题
药学专业大学生个人的自我评价
2013/11/04 职场文书
茶叶生产计划书
2014/01/10 职场文书
面包店的创业计划书范文
2014/01/16 职场文书
自我鉴定四大框架
2014/01/17 职场文书
《大禹治水》教学反思
2014/04/27 职场文书
邓小平理论心得体会
2014/09/09 职场文书
社区班子个人对照检查材料思想汇报
2014/10/07 职场文书
学生会宣传部竞选稿
2015/11/21 职场文书
九年级历史教学反思
2016/02/19 职场文书
导游词之清晏园
2019/11/22 职场文书