基于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之正规地说一句话
Sep 28 Python
跟老齐学Python之总结参数的传递
Oct 10 Python
python实现聊天小程序
Mar 13 Python
Python读取本地文件并解析网页元素的方法
May 21 Python
python3实现windows下同名进程监控
Jun 21 Python
python3实现微型的web服务器
Sep 03 Python
python openvc 裁剪、剪切图片 提取图片的行和列
Sep 19 Python
python查看数据类型的方法
Oct 12 Python
pytorch ImageFolder的覆写实例
Feb 20 Python
parser.add_argument中的action使用
Apr 20 Python
python 调整图片亮度的示例
Dec 03 Python
python实现简单的井字棋
May 26 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 得到根目录的 __FILE__ 常量
2008/07/23 PHP
PHP 中文乱码解决办法总结分析
2009/07/30 PHP
php使用exec shell命令注入的方法讲解
2013/11/12 PHP
Thinkphp使用mongodb数据库实现多条件查询方法
2014/06/26 PHP
详解Laravel服务容器的绑定与解析
2019/11/05 PHP
jQuery 动态酷效果实现总结
2009/12/27 Javascript
jQuery EasyUI API 中文文档 - Form表单
2011/10/06 Javascript
jquery 跳到顶部和底部动画2句代码简单实现
2013/07/18 Javascript
详谈JS中实现种子随机数及作用
2016/07/19 Javascript
详解jQuery简单的表格应用
2016/12/16 Javascript
vue-cli启动本地服务局域网不能访问的原因分析
2018/01/22 Javascript
Bootstrap-table自定义可编辑每页显示记录数
2018/09/07 Javascript
JavaScript之实现一个简单的Vue示例
2019/01/17 Javascript
微信小程序webview组件交互,内联h5页面并网页实现微信支付实现解析
2019/08/16 Javascript
JavaScript实现省份城市的三级联动
2020/02/11 Javascript
微信小程序通过websocket实时语音识别的实现代码
2020/08/19 Javascript
[00:56]2014DOTA2国际邀请赛 DK、iG 赛前探访
2014/07/10 DOTA
Python保存MongoDB上的文件到本地的方法
2016/03/16 Python
详解Python函数可变参数定义及其参数传递方式
2017/08/02 Python
Python面向对象程序设计类的封装与继承用法示例
2019/04/12 Python
Python批量生成幻影坦克图片实例代码
2019/06/04 Python
python利用7z批量解压rar的实现
2019/08/07 Python
python实现超市商品销售管理系统
2019/11/22 Python
Python实现捕获异常发生的文件和具体行数
2020/04/25 Python
pycharm激活码2020最新分享适用pycharm2020最新版亲测可用
2020/11/22 Python
详解css3 flex弹性盒自动铺满写法
2020/09/17 HTML / CSS
KIEHL’S科颜氏官方旗舰店:源自美国的顶级护肤品牌
2018/06/07 全球购物
初中物理教学反思
2014/01/14 职场文书
2014年文员工作总结
2014/11/18 职场文书
2015年社区工作总结
2015/04/08 职场文书
水电施工员岗位职责
2015/04/11 职场文书
2015年化工厂工作总结
2015/05/04 职场文书
同事欢送会致辞
2015/07/31 职场文书
小学生安全教育主题班会
2015/08/12 职场文书
python保存图片的四个常用方法
2022/02/28 Python
Python内置类型集合set和frozenset的使用详解
2022/04/26 Python