基于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性能优化的20条建议
Oct 25 Python
django实现用户登陆功能详解
Dec 11 Python
python使用Tkinter实现在线音乐播放器
Jan 30 Python
Python使用wget实现下载网络文件功能示例
May 31 Python
python3 拼接字符串的7种方法
Sep 12 Python
python制作简单五子棋游戏
Jun 18 Python
在Python中预先初始化列表内容和长度的实现
Nov 28 Python
Python 使用 prettytable 库打印表格美化输出功能
Dec 26 Python
解决torch.autograd.backward中的参数问题
Jan 07 Python
Python发送邮件封装实现过程详解
May 09 Python
pytorch掉坑记录:model.eval的作用说明
Jun 23 Python
Python语言中的数据类型-序列
Feb 24 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在线打包程序源码
2008/07/27 PHP
Web程序工作原理详解
2014/12/25 PHP
php微信开发接入
2016/08/27 PHP
asp函数split()对应php函数explode()
2019/02/27 PHP
php判断/计算闰年的方法小结【三种方法】
2019/07/06 PHP
Javascript 面向对象编程(一) 封装
2011/08/28 Javascript
jquery获取子节点和父节点的示例代码
2013/09/10 Javascript
js实现带搜索功能的下拉框实时搜索实时匹配
2013/11/05 Javascript
jQuery设置和获取HTML、文本和值示例
2014/07/08 Javascript
zepto与jquery的区别及zepto的不同使用8条小结
2016/07/28 Javascript
jQuery Ajax 加载数据时异步显示加载动画
2016/08/01 Javascript
AngularJS监听路由的变化示例代码
2016/09/23 Javascript
angular实现图片懒加载实例代码
2017/06/08 Javascript
详解bootstrap导航栏.nav与.navbar区别
2017/11/23 Javascript
html中通过JS获取JSON数据并加载的方法
2017/11/30 Javascript
typescript nodejs 依赖注入实现方法代码详解
2019/07/21 NodeJs
JavaScript代码简化技巧实例解析
2020/09/09 Javascript
[02:53]2018年度DOTA2最佳战队-完美盛典
2018/12/17 DOTA
python线程池的实现实例
2013/11/18 Python
python 截取 取出一部分的字符串方法
2017/03/01 Python
Python 读取图片文件为矩阵和保存矩阵为图片的方法
2018/04/27 Python
python3.6.3转化为win-exe文件发布的方法
2018/10/31 Python
python 运用Django 开发后台接口的实例
2018/12/11 Python
详解pandas库pd.read_excel操作读取excel文件参数整理与实例
2019/02/17 Python
python 中xpath爬虫实例详解
2019/08/26 Python
英国时尚家具、家居饰品及礼品商店:Graham & Green
2016/09/15 全球购物
Fossil加拿大官网:化石手表、手袋、首饰及配饰
2019/04/23 全球购物
在对linux系统分区进行格式化时需要对磁盘簇(或i节点密度)的大小进行选择,请说明选择的原则
2012/11/24 面试题
Hibernate持久层技术
2013/12/16 面试题
会展中心部门工作职责
2013/11/27 职场文书
2014年设备管理工作总结
2014/11/26 职场文书
小学生优秀评语
2014/12/29 职场文书
餐厅收银员岗位职责
2015/04/07 职场文书
毕业证明模板
2015/06/19 职场文书
教你快速构建一个基于nginx的web集群项目
2021/11/27 Servers
MySQL的索引你了解吗
2022/03/13 MySQL