基于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实现猜数字游戏(无重复数字)示例分享
Mar 29 Python
详解Python中的条件判断语句
May 14 Python
import的本质解析
Oct 30 Python
Python实现JSON反序列化类对象的示例
Jan 31 Python
Python操作SQLite/MySQL/LMDB数据库的方法
Nov 07 Python
pycharm运行scrapy过程图解
Nov 22 Python
TensorFlow Saver:保存和读取模型参数.ckpt实例
Feb 10 Python
python高阶函数map()和reduce()实例解析
Mar 16 Python
Keras官方中文文档:性能评估Metrices详解
Jun 15 Python
windows系统Tensorflow2.x简单安装记录(图文)
Jan 18 Python
python-jwt用户认证食用教学的实现方法
Jan 19 Python
基于Python实现的购物商城管理系统
Apr 27 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中常用的预定义变量小结
2012/05/09 PHP
php多任务程序实例解析
2014/07/19 PHP
PHP框架Laravel插件Pagination实现自定义分页
2020/04/22 PHP
PHP数组对象与Json转换操作实例分析
2019/10/22 PHP
php设计模式之状态模式实例分析【星际争霸游戏案例】
2020/03/26 PHP
jquery+ashx无刷新GridView数据显示插件(实现分页、排序、过滤功能)
2010/04/25 Javascript
javascript setAttribute, getAttribute 在不同浏览器上的不同表现
2010/08/05 Javascript
Dom 是什么的详细说明
2010/10/25 Javascript
有趣的JavaScript数组长度问题代码说明
2011/01/20 Javascript
js实现DOM走马灯特效的方法
2015/01/21 Javascript
浅析Bootstrap表格的使用
2016/06/23 Javascript
js简单获取表单中单选按钮值的方法
2016/08/23 Javascript
基于bootstrap的文件上传控件bootstrap fileinput
2016/12/23 Javascript
Cookies 和 Session的详解及区别
2017/04/21 Javascript
打通前后端构建一个Vue+Express的开发环境
2018/07/17 Javascript
如何利用vue+vue-router+elementUI实现简易通讯录
2019/05/13 Javascript
Nest.js散列与加密实例详解
2021/02/24 Javascript
[02:31]2014DOTA2国际邀请赛2009专访:干爹表现出乎意料 看好DK杀回决赛
2014/07/20 DOTA
[01:02:09]Liquid vs TNC 2019国际邀请赛淘汰赛 胜者组 BO3 第二场 8.21
2020/07/19 DOTA
python网络编程之TCP通信实例和socketserver框架使用例子
2014/04/25 Python
使用Python的web.py框架实现类似Django的ORM查询的教程
2015/05/02 Python
对于Python中RawString的理解介绍
2016/07/07 Python
python实现拓扑排序的基本教程
2018/03/11 Python
Python排序算法之选择排序定义与用法示例
2018/04/29 Python
python3解析库lxml的安装与基本使用
2018/06/27 Python
python3 实现爬取TOP500的音乐信息并存储到mongoDB数据库中
2019/08/24 Python
解决pycharm每次打开项目都需要配置解释器和安装库问题
2020/02/26 Python
html5中的一些标签学习(心得)
2016/10/18 HTML / CSS
公司清洁工岗位职责
2013/12/14 职场文书
财务经理的岗位职责
2013/12/17 职场文书
致跳高运动员广播稿
2014/01/13 职场文书
党课培训主持词
2014/04/01 职场文书
就业协议书怎么填
2014/04/11 职场文书
2014年安全工作总结范文
2014/11/13 职场文书
2016年安全月活动总结
2016/04/06 职场文书
vue 实现上传组件
2021/05/31 Vue.js