基于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获取当前用户的主目录路径方法(推荐)
Jan 12 Python
Python Pandas批量读取csv文件到dataframe的方法
Oct 08 Python
python 实现按对象传值
Dec 26 Python
python多维数组分位数的求取方式
Mar 03 Python
python由已知数组快速生成新数组的方法
Apr 08 Python
python转化excel数字日期为标准日期操作
Jul 14 Python
Python selenium如何打包静态网页并下载
Aug 12 Python
Python如何将模块打包并发布
Aug 30 Python
浅析python 通⽤爬⾍和聚焦爬⾍
Sep 28 Python
pycharm中选中一个单词替换所有重复单词的实现方法
Nov 17 Python
用Python实现屏幕截图详解
Jan 22 Python
Python中的 Set 与 dict
Mar 13 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
全国中波电台频率表
2020/03/11 无线电
一些被忽视的PHP函数(简单整理)
2010/04/30 PHP
基于php常用正则表达式的整理汇总
2013/06/08 PHP
php使用ZipArchive函数实现文件的压缩与解压缩
2015/10/27 PHP
HTA版JSMin(省略修饰语若干)基于javascript语言编写
2009/12/24 Javascript
js实现GridView单选效果自动设置交替行、选中行、鼠标移动行背景色
2010/05/27 Javascript
js循环改变div颜色具体方法
2013/06/25 Javascript
Javascript中数组方法汇总(推荐)
2015/04/01 Javascript
node.js 使用ejs模板引擎时后缀换成.html
2015/04/22 Javascript
针对初学者的jQuery入门指南
2015/08/15 Javascript
你有必要知道的25个JavaScript面试题
2015/12/29 Javascript
js简单设置与使用cookie的方法
2016/01/22 Javascript
全面解析DOM操作和jQuery实现选项移动操作代码分享
2016/06/07 Javascript
基于jQuery下拉选择框插件支持单选多选功能代码
2016/06/07 Javascript
深入浅出讲解ES6的解构
2016/08/03 Javascript
Angular 4依赖注入学习教程之ValueProvider的使用(七)
2017/06/04 Javascript
分析javascript中9 个常见错误阻碍你进步
2017/09/18 Javascript
AngularJS实现表单验证功能详解
2017/10/12 Javascript
JavaScript实现随机数生成器(去重)
2017/10/13 Javascript
微信小程序简单实现form表单获取输入数据功能示例
2017/11/30 Javascript
vue使用技巧及vue项目中遇到的问题
2018/06/04 Javascript
Mint UI组件库CheckList使用及踩坑总结
2018/12/20 Javascript
js和jquery判断数据类型的4种方法总结
2020/08/28 jQuery
原生JS实现相邻月份日历
2020/10/13 Javascript
Python实现拼接多张图片的方法
2014/12/01 Python
Python语言生成水仙花数代码示例
2017/12/18 Python
jupyter notebook 中输出pyecharts图实例
2020/04/23 Python
python字符串查找函数的用法详解
2019/07/08 Python
Django多数据库的实现过程详解
2019/08/01 Python
浅析python 定时拆分备份 nginx 日志的方法
2020/04/27 Python
python获取本周、上周、本月、上月及本季的时间代码实例
2020/09/08 Python
《画风》教学反思
2014/04/16 职场文书
做一个有道德的人活动方案
2014/08/25 职场文书
2014派出所所长群众路线对照检查材料思想汇报
2014/09/18 职场文书
2017公司年会主持人开幕词
2016/03/04 职场文书
css3 filter属性的使用简介
2021/03/31 HTML / CSS