基于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 socket的端口扫描程序实例代码
Feb 09 Python
Python对excel文档的操作方法详解
Dec 10 Python
详解Python函数式编程—高阶函数
Mar 29 Python
python正则-re的用法详解
Jul 28 Python
微信小程序python用户认证的实现
Jul 29 Python
python脚本之一键移动自定格式文件方法实例
Sep 02 Python
python连接PostgreSQL数据库的过程详解
Sep 18 Python
selenium 多窗口切换的实现(windows)
Jan 18 Python
django实现HttpResponse返回json数据为中文
Mar 27 Python
Django admin 实现search_fields精确查询实例
Mar 30 Python
使用Python将图片转正方形的两种方法实例代码详解
Apr 29 Python
如何使用Python调整图像大小
Sep 26 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 在文件指定行插入数据的代码
2010/05/08 PHP
smarty表格换行实例
2014/12/15 PHP
JavaScript去掉数组中的重复元素
2011/01/13 Javascript
判断文件是否正在被使用的JS代码
2013/12/21 Javascript
javascript判断并获取注册表中可信任站点的方法
2015/06/01 Javascript
js本地图片预览实现代码
2016/10/09 Javascript
JS调用打印机功能简单示例
2016/11/28 Javascript
理解javascript中的闭包
2017/01/11 Javascript
详解如何使用Node.js编写命令工具——以vue-cli为例
2017/06/29 Javascript
jQuery UI Draggable + Sortable 结合使用(实例讲解)
2017/09/07 jQuery
js实现手机web图片左右滑动效果
2017/12/29 Javascript
对vue里函数的调用顺序介绍
2018/03/17 Javascript
微信小程序wx:for和wx:for-item的用法详解
2018/04/01 Javascript
jQuery插件simplePagination的使用方法示例
2020/04/28 jQuery
微信小程序实现上传多张图片、删除图片
2020/07/29 Javascript
JavaScript实现网页下拉菜单效果
2020/11/20 Javascript
[50:50]完美世界DOTA2联赛PWL S3 INK ICE vs DLG 第一场 12.20
2020/12/23 DOTA
线程和进程的区别及Python代码实例
2015/02/04 Python
python搭建微信公众平台
2016/02/09 Python
Python分支结构(switch)操作简介
2018/01/17 Python
python基础教程项目三之万能的XML
2018/04/02 Python
pandas DataFrame 根据多列的值做判断,生成新的列值实例
2018/05/18 Python
python编写简易聊天室实现局域网内聊天功能
2018/07/28 Python
python中open函数的基本用法示例
2019/09/07 Python
python pprint模块中print()和pprint()两者的区别
2020/02/10 Python
详解pandas中iloc, loc和ix的区别和联系
2020/03/09 Python
Orlebar Brown官网:设计师泳裤和泳装
2020/12/08 全球购物
JDO的含义
2012/11/17 面试题
恐龙的灭绝教学反思
2014/02/12 职场文书
《李时珍夜宿古寺》教学反思
2014/04/09 职场文书
行政秘书工作自我鉴定
2014/09/15 职场文书
大专生自我鉴定怎么写
2014/09/16 职场文书
承租经营合作者协议书
2014/10/01 职场文书
会议通知范文
2015/04/15 职场文书
SpringBoot项目多数据源及mybatis 驼峰失效的问题解决方法
2022/07/07 Java/Android
Windows server 2016服务器基本设置
2022/08/14 Servers