基于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 相关文章推荐
Python3使用requests发闪存的方法
May 11 Python
windows 下python+numpy安装实用教程
Dec 23 Python
分享vim python缩进等一些配置
Jul 02 Python
Python实现通过继承覆盖方法示例
Jul 02 Python
基于python分析你的上网行为 看看你平时上网都在干嘛
Aug 13 Python
Python制作词云图代码实例
Sep 09 Python
tensorflow 实现打印pb模型的所有节点
Jan 23 Python
Python 去除字符串中指定字符串
Mar 05 Python
python代码能做成软件吗
Jul 24 Python
详解Django中异步任务之django-celery
Nov 05 Python
Python爬取你好李焕英豆瓣短评生成词云的示例代码
Feb 24 Python
2021年pycharm的最新安装教程及基本使用图文详解
Apr 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
解析php框架codeigniter中如何使用框架的session
2013/06/24 PHP
PHP程序漏洞产生的原因分析与防范方法说明
2014/03/06 PHP
php实现插入排序
2015/03/29 PHP
php身份证号码检查类实例
2015/06/18 PHP
详解PHP PDO简单教程
2019/05/28 PHP
js 表单验证方法(实用)
2009/04/28 Javascript
javascript 获取select下拉列表值的代码
2009/09/07 Javascript
javascript去除字符串中所有标点符号和提取纯文本的正则
2014/06/07 Javascript
轻松实现jquery选项卡切换效果
2016/10/10 Javascript
详解jQuery uploadify文件上传插件的使用方法
2016/12/16 Javascript
JavaScript字符串对象
2017/01/14 Javascript
jQuery实现文档树效果
2017/02/20 Javascript
几行js代码实现自适应
2017/02/24 Javascript
layui文件上传实现代码
2017/05/20 Javascript
vue-cli项目中怎么使用mock数据
2017/09/27 Javascript
jQuery中ajax获取数据赋值给页面的实例
2017/12/31 jQuery
详解Angular5 服务端渲染实战
2018/01/04 Javascript
详解html-webpack-plugin插件(用法总结)
2018/09/12 Javascript
详解nuxt 微信公众号支付遇到的问题与解决
2019/08/26 Javascript
vue键盘事件点击事件加native操作
2020/07/27 Javascript
[51:22]Fnatic vs IG 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/18 DOTA
python安装与使用redis的方法
2016/04/19 Python
python 爬虫出现403禁止访问错误详解
2017/03/11 Python
Python 多线程,threading模块,创建子线程的两种方式示例
2019/09/29 Python
flask 使用 flask_apscheduler 做定时循环任务的实现
2019/12/10 Python
修改Pandas的行或列的名字(重命名)
2019/12/18 Python
Python 面向对象部分知识点小结
2020/03/09 Python
python实现UDP协议下的文件传输
2020/03/20 Python
Tensorflow tf.nn.depthwise_conv2d如何实现深度卷积的
2020/04/20 Python
Python爬虫JSON及JSONPath运行原理详解
2020/06/04 Python
python装饰器三种装饰模式的简单分析
2020/09/04 Python
关于PyCharm安装后修改路径名称使其可重新打开的问题
2020/10/20 Python
财务管理专业毕业生求职信范文
2013/09/21 职场文书
报关专员求职信范文
2014/02/22 职场文书
redis不能访问本机真实ip地址的解决方案
2021/07/07 Redis
Python爬虫入门案例之回车桌面壁纸网美女图片采集
2021/10/16 Python