基于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中使用PyQt把网页转换成PDF操作代码实例
Apr 23 Python
Python中的rjust()方法使用详解
May 19 Python
Python操作mysql数据库实现增删查改功能的方法
Jan 15 Python
Sanic框架应用部署方法详解
Jul 18 Python
用于业余项目的8个优秀Python库
Sep 21 Python
python+flask实现API的方法
Nov 21 Python
在python中使用requests 模拟浏览器发送请求数据的方法
Dec 26 Python
Python 利用切片从列表中取出一部分使用的方法
Feb 01 Python
Python学习笔记之错误和异常及访问错误消息详解
Aug 08 Python
基于python3 的百度图片下载器的实现代码
Nov 05 Python
PIL包中Image模块的convert()函数的具体使用
Feb 26 Python
Python 字符串池化的前提
Jul 03 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
Optimizer与Debugger兼容性问题的解决方法
2008/12/01 PHP
ThinkPHP文件缓存类代码分享
2015/04/22 PHP
php利用云片网实现短信验证码功能的示例代码
2017/11/18 PHP
JS 对输入框进行限制(常用的都有)
2013/07/30 Javascript
jquery 操作iframe的几种方法总结
2013/12/13 Javascript
JavaScript中操作Mysql数据库实例
2015/04/02 Javascript
关于原生js中bind函数的简单实现
2016/08/10 Javascript
学好js,这些js函数概念一定要知道【推荐】
2017/01/19 Javascript
js实现五星评价功能
2017/03/08 Javascript
Vue学习笔记进阶篇之vue-cli安装及介绍
2017/07/18 Javascript
基于Bootstrap的标签页组件及bootstrap-tab使用说明
2017/07/25 Javascript
详解webpack 打包文件体积过大解决方案(code splitting)
2018/04/10 Javascript
Vue2.0 实现歌手列表滚动及右侧快速入口功能
2018/08/08 Javascript
vue init webpack 建vue项目报错的解决方法
2018/09/29 Javascript
vue实现跳转接口push 转场动画示例
2019/11/01 Javascript
Python 自动补全(vim)
2014/11/30 Python
将tensorflow的ckpt模型存储为npy的实例
2018/07/09 Python
python实现字符串和字典的转换
2018/09/29 Python
selenium 安装与chromedriver安装的方法步骤
2019/06/12 Python
python正则表达式匹配不包含某几个字符的字符串方法
2019/07/23 Python
python操作excel让工作自动化
2019/08/09 Python
python3 requests库文件上传与下载实现详解
2019/08/22 Python
Python读取表格类型文件代码实例
2020/02/17 Python
利用Python将图片中扭曲矩形的复原
2020/09/07 Python
CSS3中31种选择器使用方法教程
2013/12/05 HTML / CSS
css3 中的新特性加强记忆详解
2016/04/16 HTML / CSS
Smallable意大利家庭概念店:设计师童装及家居装饰
2018/01/08 全球购物
美国50岁以上单身人士约会平台:SilverSingles
2018/06/29 全球购物
美赞臣营养马来西亚旗舰店:Enfagrow马来西亚
2019/07/26 全球购物
C#如何判断当前用户是否输入某个域
2015/12/07 面试题
生物化工专业个人自荐信
2013/09/26 职场文书
军训感想500字
2014/02/20 职场文书
三月学雷锋活动总结
2014/06/26 职场文书
无私奉献演讲稿
2014/09/04 职场文书
初一军训感言
2015/08/01 职场文书
导游词之镜泊湖
2019/12/09 职场文书