基于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 相关文章推荐
Django中使用group_by的方法
May 26 Python
MySQL适配器PyMySQL详解
Sep 20 Python
python八大排序算法速度实例对比
Dec 06 Python
Python+tkinter使用80行代码实现一个计算器实例
Jan 16 Python
python3爬取淘宝信息代码分析
Feb 10 Python
基于python神经卷积网络的人脸识别
May 24 Python
python实现截取屏幕保存文件,删除N天前截图的例子
Aug 27 Python
Python实现的爬取豆瓣电影信息功能案例
Sep 15 Python
Flask和pyecharts实现动态数据可视化
Feb 26 Python
Requests什么的通通爬不了的Python超强反爬虫方案!
May 20 Python
python中24小时制转换为12小时制的方法
Jun 18 Python
利用Python脚本写端口扫描器socket,python-nmap
Jul 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
PHP的substr_replace将指定两位置之间的字符替换为*号
2011/05/04 PHP
PHP 登录记住密码实现思路
2013/05/07 PHP
浅谈Laravel模板实体转义带来的坑
2019/10/22 PHP
yii2.0框架多模型操作示例【添加/修改/删除】
2020/04/13 PHP
js实现日期级联效果
2014/01/23 Javascript
JS+CSS实现模仿浏览器网页字符查找功能的方法
2015/02/26 Javascript
JQuery fileupload插件实现文件上传功能
2016/03/18 Javascript
javascript执行环境及作用域详解
2016/05/05 Javascript
AngularJS实践之使用NgModelController进行数据绑定
2016/10/08 Javascript
使用 bootstrap modal遇到的问题小结
2016/11/09 Javascript
Bootstrap基本插件学习笔记之轮播幻灯片(23)
2016/12/08 Javascript
Chrome浏览器的alert弹窗禁止再次弹出后恢复的方法
2016/12/30 Javascript
js将字符串中的每一个单词的首字母变为大写其余均为小写
2017/01/05 Javascript
百度地图API之百度地图退拽标记点获取经纬度的实现代码
2017/01/12 Javascript
HTML中使背景图片自适应浏览器大小实例详解
2017/04/06 Javascript
Vue项目webpack打包部署到Tomcat刷新报404错误问题的解决方案
2018/05/15 Javascript
微信小程序签到功能
2018/10/31 Javascript
vue 实现LED数字时钟效果(开箱即用)
2019/12/08 Javascript
[02:12]2019完美世界全国高校联赛(春季赛)报名开启
2019/03/01 DOTA
NumPy 数学函数及代数运算的实现代码
2018/07/18 Python
python一行sql太长折成多行并且有多个参数的方法
2018/07/19 Python
numpy 对矩阵中Nan的处理:采用平均值的方法
2018/10/30 Python
分享PyCharm的几个使用技巧
2019/11/10 Python
在 Python 中使用 MQTT的方法
2020/08/18 Python
广州某公司软件工程师面试题
2014/12/22 面试题
班长岗位职责
2013/11/10 职场文书
机关门卫岗位职责
2013/12/30 职场文书
高中班主任评语大全
2014/04/25 职场文书
党员教师四风自我剖析材料
2014/09/30 职场文书
社区重阳节活动总结
2015/03/24 职场文书
政工师工作总结2015
2015/05/26 职场文书
新郎结婚感言
2015/07/31 职场文书
期中考试后的感想
2015/08/07 职场文书
清明节随笔
2015/08/15 职场文书
html中显示特殊符号(附带特殊字符对应表)
2021/06/21 HTML / CSS
一文简单了解MySQL前缀索引
2022/04/03 MySQL