基于python实现百度翻译功能

 更新时间:2019年05月09日 17:05:39   作者:TianChuang335  
这篇文章主要介绍了基于python实现百度翻译功能,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下

运行环境: python 3.6.0

今天处于练习的目的,就用 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 decimal模块使用方法详解

    Python decimal模块使用方法详解

    这篇文章主要介绍了Python decimal模块使用方法详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-06-06
  • Python Opencv轮廓常用操作代码实例解析

    Python Opencv轮廓常用操作代码实例解析

    这篇文章主要介绍了Python Opencv轮廓常用操作代码实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-09-09
  • Python使用jpype的踩坑记录

    Python使用jpype的踩坑记录

    Pype是一个能够让 python 代码方便地调用 Java 代码的工具,这篇文章主要来和大家分享一下Python使用jpype会踩的一些坑,希望对大家有所帮助
    2023-06-06
  • 利用PyQt5模拟实现网页鼠标移动特效

    利用PyQt5模拟实现网页鼠标移动特效

    不知道大家有没有发现,博客园有些博客左侧会有鼠标移动特效。通过移动鼠标,会形成类似蜘蛛网的特效,本文将用PyQt5实现这一特效,需要的可以参考一下
    2022-03-03
  • Python读取HTML中的canvas并且以图片形式存入Word文档

    Python读取HTML中的canvas并且以图片形式存入Word文档

    这篇文章主要介绍了Python读取HTML中的canvas并且以图片形式存入Word文档,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下
    2022-08-08
  • 深入浅析Python中的yield关键字

    深入浅析Python中的yield关键字

    python中有一个非常有用的语法叫做生成器,所利用到的关键字就是yield。接下来脚本之家小编给大家带来了Python中的yield关键字详细解析,感兴趣的朋友参考下吧
    2018-01-01
  • 跟老齐学Python之复习if语句

    跟老齐学Python之复习if语句

    是否记得,在上一部分,有一讲专门介绍if语句的:从if开始语句的征程。在学习if语句的时候,对python编程的基础知识了解的还不是很多,或许没有做什么太复杂的东西。本讲要对它进行一番复习,通过复习提高一下。如果此前有的东西忘记了,建议首先回头看看前面那讲。
    2014-10-10
  • 跟老齐学Python之总结参数的传递

    跟老齐学Python之总结参数的传递

    这篇文章主要介绍了Python参数的传递的总结,非常的实用,有需要的朋友可以参考下
    2014-10-10
  • python解决OpenCV在读取显示图片的时候闪退的问题

    python解决OpenCV在读取显示图片的时候闪退的问题

    这篇文章主要介绍了python解决OpenCV在读取显示图片的时候闪退的问题,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-02-02
  • 在vscode中配置python环境过程解析

    在vscode中配置python环境过程解析

    这篇文章主要介绍了在vscode中配置python环境过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-09-09

最新评论