基于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实现代理服务功能实例
Nov 15 Python
使用Python的Bottle框架写一个简单的服务接口的示例
Aug 25 Python
python使用paramiko实现远程拷贝文件的方法
Apr 18 Python
Python中使用插入排序算法的简单分析与代码示例
May 04 Python
Python中创建字典的几种方法总结(推荐)
Apr 27 Python
Python简单读取json文件功能示例
Nov 30 Python
python的staticmethod与classmethod实现实例代码
Feb 11 Python
老生常谈python中的重载
Nov 11 Python
Django网络框架之HelloDjango项目创建教程
Jun 06 Python
python扫描线填充算法详解
Feb 19 Python
Python pandas读取CSV文件的注意事项(适合新手)
Jun 20 Python
Python使用mitmproxy工具监控手机 下载手机小视频
Apr 18 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针对常规模板引擎中与CSS/JSON冲突的解决方法
2014/08/19 PHP
php中call_user_func函数使用注意事项
2014/11/21 PHP
thinkphp中多表查询中防止数据重复的sql语句(必看)
2016/09/22 PHP
PDO::query讲解
2019/01/29 PHP
解决laravel上传图片之后,目录有图片,但是访问不到(404)的问题
2019/10/14 PHP
关于文本限制字数的js代码
2007/04/02 Javascript
JSON 教程 json入门学习笔记
2020/09/22 Javascript
容易被忽略的JS脚本特性
2011/09/13 Javascript
jquery实现不同大小浏览器使用不同的css样式表的方法
2014/04/02 Javascript
一段非常简单的js判断浏览器的内核
2014/08/17 Javascript
JavaScript操作XML/HTML比较常用的对象属性集锦
2015/10/30 Javascript
Bootstrap在线电子商务网站实战项目5
2016/10/14 Javascript
Angularjs中使用轮播图指令swiper
2017/05/30 Javascript
jQueryeasyui 中如何使用datetimebox 取两个日期间相隔的天数
2017/06/13 jQuery
详解js的作用域、预解析机制
2018/02/05 Javascript
Vue中使用create-keyframe-animation与动画钩子完成复杂动画
2019/04/09 Javascript
JS中队列和双端队列实现及应用详解
2020/09/29 Javascript
el-table表头根据内容自适应完美解决表头错位和固定列错位
2021/01/07 Javascript
[02:44]重置世界,颠覆未来——DOTA2 7.23版本震撼上线
2019/12/01 DOTA
python 查找文件名包含指定字符串的方法
2018/06/05 Python
Python3实现将一维数组按标准长度分隔为二维数组
2019/11/29 Python
python使用ctypes调用扩展模块的实例方法
2020/01/28 Python
Python找出列表中出现次数最多的元素三种方式
2020/02/24 Python
浅谈Python 钉钉报警必备知识系统讲解
2020/08/17 Python
HTML5中新标签和常用标签详解
2014/03/07 HTML / CSS
使用phonegap创建联系人的实现方法
2017/03/30 HTML / CSS
Canvas制作旋转的太极的示例
2018/03/09 HTML / CSS
CK美国官网:Calvin Klein
2016/08/26 全球购物
Chinti & Parker官网:奢华羊绒女装和创新针织设计
2021/01/01 全球购物
Tuckernuck官网:经典的美国品质服装、鞋子和配饰
2021/01/11 全球购物
Java面试题:Java类的Main方法如果是Private将会怎么样
2016/08/18 面试题
关于祖国的演讲稿
2014/05/04 职场文书
学校安全生产月活动总结
2014/07/05 职场文书
关于青春的演讲稿三分钟
2014/08/22 职场文书
计划生育个人总结
2015/03/02 职场文书
如何用vue实现网页截图你知道吗
2021/11/17 Vue.js