基于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 相关文章推荐
使用go和python递归删除.ds store文件的方法
Jan 22 Python
Python中的字符串查找操作方法总结
Jun 27 Python
Python之py2exe打包工具详解
Jun 14 Python
pandas数据框,统计某列数据对应的个数方法
Apr 11 Python
python3实现zabbix告警推送钉钉的示例
Feb 20 Python
详解用python生成随机数的几种方法
Aug 04 Python
Python3标准库glob文件名模式匹配的问题
Mar 13 Python
django queryset相加和筛选教程
May 18 Python
keras的backend 设置 tensorflow,theano操作
Jun 30 Python
python如何实现word批量转HTML
Sep 30 Python
python绕过图片滑动验证码实现爬取PTA所有题目功能 附源码
Jan 06 Python
python re模块常见用法例举
Mar 01 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的单引号和双引号 字符串效率
2009/05/27 PHP
php使用array_rand()函数从数组中随机选择一个或多个元素
2014/04/28 PHP
this[] 指的是什么内容 讨论
2007/03/24 Javascript
jquery isType() 类型判断代码
2011/02/14 Javascript
基于jquery的拖动布局插件
2011/11/25 Javascript
js实现全屏漂浮广告移入光标停止移动
2013/12/02 Javascript
深入理解JavaScript中的传值与传引用
2013/12/09 Javascript
JS获取url链接字符串 location.href
2013/12/23 Javascript
jquery清空表单数据示例分享
2014/02/13 Javascript
kindeditor修复会替换script内容的问题
2015/04/03 Javascript
JS获取input file绝对路径的方法(推荐)
2016/08/02 Javascript
JS上传图片预览插件制作(兼容到IE6)
2016/08/07 Javascript
jquery与ajax获取特殊字符实例详解
2017/01/08 Javascript
jQuery代码实现实时获取时间
2017/01/29 Javascript
webpack独立打包和缓存处理详解
2017/04/03 Javascript
js实现分页功能
2017/05/24 Javascript
移动端触摸滑动插件swiper使用方法详解
2017/08/11 Javascript
vue-cli构建项目使用 less的方法
2017/10/04 Javascript
基于vue实现分页效果
2017/11/06 Javascript
微信小程序模板(template)使用详解
2018/01/31 Javascript
深入学习JavaScript中的bom
2019/05/27 Javascript
[38:40]2018DOTA2亚洲邀请赛 4.6淘汰赛 mineski vs LGD 第一场
2018/04/10 DOTA
python日期相关操作实例小结
2019/06/24 Python
Django model 中设置联合约束和联合索引的方法
2019/08/06 Python
python+selenium 鼠标事件操作方法
2019/08/24 Python
python3 BeautifulSoup模块使用字典的方法抓取a标签内的数据示例
2019/11/28 Python
解决Tensorflow 使用时cpu编译不支持警告的问题
2020/02/03 Python
绝对令人的惊叹的CSS3折叠效果(3D效果)整理
2012/12/30 HTML / CSS
伦敦一家西班牙童装精品店:La Coqueta
2018/02/02 全球购物
生物制药毕业生自荐信
2013/10/16 职场文书
工程管理英文求职信
2014/03/18 职场文书
收款委托书
2014/10/14 职场文书
创业计划书之密室逃脱
2019/11/08 职场文书
css3中2D转换之有趣的transform形变效果
2022/02/24 HTML / CSS
关于Vue中的options选项
2022/03/22 Vue.js
golang操作rocketmq的示例代码
2022/04/06 Golang