基于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中if __name__ == "__main__"详细解释
Oct 21 Python
python中requests模块的使用方法
Apr 08 Python
利用Python如何批量修改数据库执行Sql文件
Jul 29 Python
Django教程笔记之中间件middleware详解
Aug 01 Python
如何用Python制作微信好友个性签名词云图
Jun 28 Python
如何基于python测量代码运行时间
Dec 25 Python
python给指定csv表格中的联系人群发邮件(带附件的邮件)
Dec 31 Python
jupyter notebook 调用环境中的Keras或者pytorch教程
Apr 14 Python
解决Python3.7.0 SSL低版本导致Pip无法使用问题
Sep 03 Python
使用pandas实现筛选出指定列值所对应的行
Dec 13 Python
Python项目打包成二进制的方法
Dec 30 Python
python turtle绘图命令及案例
Nov 23 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
第十三节 对象串行化 [13]
2006/10/09 PHP
ajax缓存问题解决途径
2006/12/06 PHP
PHP下通过系统信号量加锁方式获取递增序列ID
2009/09/25 PHP
PHP常用工具类大全附全部代码下载
2015/12/07 PHP
注释PHP和html混合代码的小技巧(分享)
2016/11/03 PHP
Yii2框架实现登录、退出及自动登录功能的方法详解
2017/10/24 PHP
PHP基于GD2函数库实现验证码功能示例
2019/01/27 PHP
php常用经典函数集锦【数组、字符串、栈、队列、排序等】
2019/08/23 PHP
php对mongodb的扩展(小试牛刀)
2012/11/11 Javascript
js调用图片隐藏&显示实现代码
2013/09/13 Javascript
JS实现自定义简单网页软键盘效果代码
2015/11/05 Javascript
JS简单判断函数是否存在的方法
2017/02/13 Javascript
基于百度地图api清除指定覆盖物(Overlay)的方法
2018/01/26 Javascript
vue实现在表格里,取每行的id的方法
2018/03/09 Javascript
JS实现的文件拖拽上传功能示例
2018/05/21 Javascript
微信小程序如何使用canvas二维码保存至手机相册
2019/07/15 Javascript
编写同时兼容Python2.x与Python3.x版本的代码的几个示例
2015/03/30 Python
Python中的数学运算操作符使用进阶
2016/06/20 Python
python数据结构之列表和元组的详解
2017/09/23 Python
分享一个简单的python读写文件脚本
2017/11/25 Python
Sanic框架路由用法实例分析
2018/07/16 Python
Python实现12306火车票抢票系统
2019/07/04 Python
python opencv pytesseract 验证码识别的实现
2020/08/28 Python
css3实现wifi信号逐渐增强效果实例
2017/08/09 HTML / CSS
h5网页水印SDK的实现代码示例
2019/02/19 HTML / CSS
英国品牌男装折扣网站:Brown Bag
2018/03/08 全球购物
德国亚洲食品网上商店:asiafoodland.de
2019/12/28 全球购物
什么是GWT的Entry Point
2013/08/16 面试题
Java基础面试题
2012/11/02 面试题
社区七一党员活动方案
2014/01/25 职场文书
八年级语文教学反思
2014/02/11 职场文书
软件研发工程师岗位职责
2014/09/30 职场文书
2015年乡镇财政工作总结
2015/05/19 职场文书
毕业设计工作总结
2015/08/14 职场文书
Redis入门基础常用操作命令整理
2022/06/01 Redis
Django框架中表单的用法
2022/06/10 Python