基于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基于Tkinter库实现简单文本编辑器实例
May 05 Python
在Python的Django框架中编写编译函数
Jul 20 Python
Python3实战之爬虫抓取网易云音乐的热门评论
Oct 09 Python
Python使用getpass库读取密码的示例
Oct 10 Python
Python实现k-means算法
Feb 23 Python
python实现日常记账本小程序
Mar 10 Python
利用pyinstaller将py文件打包为exe的方法
May 14 Python
python基础知识(一)变量与简单数据类型详解
Apr 17 Python
numpy.linspace函数具体使用详解
May 27 Python
Pytorch 卷积中的 Input Shape用法
Jun 29 Python
pycharm专业版远程登录服务器的详细教程
Sep 15 Python
使paramiko库执行命令时在给定的时间强制退出功能的实现
Mar 03 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
win2003服务器使用WPS的COM组件的一些问题解决方法
2012/01/11 PHP
php模拟ping命令(php exec函数的使用方法)
2013/10/25 PHP
PHP根据传入参数合并多个JS和CSS文件的简单实现
2014/06/13 PHP
PHP实现更新中间关联表数据的两种方法
2014/09/01 PHP
Laravel 5框架学习之Laravel入门和新建项目
2015/04/07 PHP
PHP排序算法类实例
2015/06/17 PHP
jQuery 源码分析笔记(4) Ready函数
2011/06/02 Javascript
javascript中createElement的两种创建方式
2015/05/14 Javascript
JavaScript中Form表单技术汇总(推荐)
2016/06/26 Javascript
基于JS实现的随机数字抽签实例
2016/12/08 Javascript
详解Angular的8个主要构造块
2017/06/20 Javascript
vue实现树形菜单效果
2018/03/19 Javascript
使用webpack-dev-server处理跨域请求的方法
2018/04/18 Javascript
微信小程序methods中定义的方法互相调用的实例代码
2018/08/07 Javascript
详解CommonJS和ES6模块循环加载处理的区别
2018/12/26 Javascript
解决VUE mounted 钩子函数执行时 img 未加载导致页面布局的问题
2020/07/27 Javascript
[03:24]DOTA2超级联赛专访hao 大翻盘就是逆袭
2013/05/24 DOTA
[05:06]2017亚洲邀请赛DAC回顾片
2017/04/19 DOTA
Python中lambda的用法及其与def的区别解析
2014/07/28 Python
用python 制作图片转pdf工具
2015/01/30 Python
利用Python脚本生成sitemap.xml的实现方法
2017/01/31 Python
Python socket套接字实现C/S模式远程命令执行功能案例
2018/07/06 Python
使用Python实现图像标记点的坐标输出功能
2019/08/14 Python
python实现输入任意一个大写字母生成金字塔的示例
2019/10/27 Python
给Django Admin添加验证码和多次登录尝试限制的实现
2020/07/26 Python
解决Python安装cryptography报错问题
2020/09/03 Python
微信小程序实现可实时改变转速的css3旋转动画实例代码
2018/09/11 HTML / CSS
HTML5如何使用SVG的方法示例
2019/01/11 HTML / CSS
FC-Moto英国:欧洲最大的摩托车服装和头盔商店之一
2019/08/25 全球购物
中文专业毕业生自荐信
2013/10/28 职场文书
老师对学生的评语
2014/04/18 职场文书
党的生日活动方案
2014/08/15 职场文书
沈阳故宫导游词
2015/01/31 职场文书
2016自主招生教师推荐信范文
2015/03/23 职场文书
Python socket如何解析HTTP请求内容
2022/02/12 Python
动漫APP软件排行榜前十名,半次元上榜,第一款由腾讯公司推出
2022/03/18 杂记