基于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同时给两个收件人发送邮件的方法
Apr 30 Python
Python 多线程的实例详解
Sep 07 Python
Python之Scrapy爬虫框架安装及简单使用详解
Dec 22 Python
Python实现字典的遍历与排序功能示例
Dec 23 Python
python 画三维图像 曲面图和散点图的示例
Dec 29 Python
Python PyCharm如何进行断点调试
Jul 05 Python
Python异常处理例题整理
Jul 07 Python
django 微信网页授权认证api的步骤详解
Jul 30 Python
python3爬虫中异步协程的用法
Jul 10 Python
python报错: 'list' object has no attribute 'shape'的解决
Jul 15 Python
如何利用python进行时间序列分析
Aug 04 Python
python爬虫爬取网页数据并解析数据
Sep 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图片验证码代码
2008/03/27 PHP
php通过淘宝API查询IP地址归属等信息
2015/12/25 PHP
在WordPress中获取数据库字段内容和添加主题设置菜单
2016/01/11 PHP
ThinkPHP5.0框架实现切换数据库的方法分析
2019/10/30 PHP
JS实现打开本地文件或文件夹
2021/03/09 Javascript
TFDN图片播放器 不错自动播放
2006/10/03 Javascript
解决Extjs 4 Panel作为Window组件的子组件时出现双重边框问题
2013/01/11 Javascript
动态获取复选框checkbox选中个数的jquery代码
2013/06/25 Javascript
基于mouseout和mouseover等类似事件的冒泡问题解决方法
2013/11/18 Javascript
javascript动态添加删除tabs标签的方法
2015/07/06 Javascript
Ajax清除浏览器js、css、图片缓存的方法
2015/08/06 Javascript
JS获取月份最后天数、最大天数与某日周数的方法
2015/12/08 Javascript
JavaScript字符串删除重复字符的方法
2015/12/25 Javascript
ClearTimeout消除闪动实例代码
2016/02/29 Javascript
input 禁止输入特殊字符的四种实现方式
2016/08/24 Javascript
bootstrap监听滚动实现头部跟随滚动
2016/11/08 Javascript
微信小程序 登陆流程详细介绍
2017/01/17 Javascript
利用Angular2的Observables实现交互控制的方法
2018/12/27 Javascript
jquery实现掷骰子小游戏
2019/10/24 jQuery
python解析xml文件实例分享
2013/12/04 Python
python实现JAVA源代码从ANSI到UTF-8的批量转换方法
2015/08/10 Python
Python3实现的字典遍历操作详解
2018/04/18 Python
利用Python进行数据可视化常见的9种方法!超实用!
2018/07/11 Python
Django 实现前端图片压缩功能的方法
2019/08/07 Python
20行代码教你用python给证件照换底色的方法示例
2021/02/05 Python
CSS3属性box-sizing使用指南
2014/12/09 HTML / CSS
飞利浦美国官网:Philips美国
2020/02/28 全球购物
KOHLER科勒美国官网:国际著名卫浴橱柜领先品牌
2020/06/27 全球购物
秋季校运会广播稿100字
2014/09/18 职场文书
假释思想汇报范文
2014/10/11 职场文书
离婚协议书范本
2015/01/26 职场文书
通知的写法
2015/04/23 职场文书
来探秘“德国中小企业”的成功之道
2019/07/26 职场文书
React中的Context应用场景分析
2021/06/11 Javascript
Springboot如何同时装配两个相同类型数据库
2021/11/17 Java/Android
各种货币符号快捷输入
2022/02/17 杂记