当前位置:脚本大全 > > 正文

百度免费翻译接口(基于python实现百度翻译功能)

时间:2021-10-04 01:25:04类别:脚本大全

百度免费翻译接口

基于python实现百度翻译功能

运行环境: python 3.6.0

今天处于练习的目的,就用 python 写了一个百度翻译,是如何做到的呢,其实呢就是拿到接口,通过这个接口去访问,不过中间确实是出现了点问题,不过都解决掉了

先晾图后晾代码

运行结果:

百度免费翻译接口(基于python实现百度翻译功能)

代码:

  • ?
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
  • 91
  • 92
  • 93
  • 94
  • # -*- 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实现百度翻译功能,希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的!

    原文链接:https://blog.csdn.net/qq_39377418/article/details/89816398

    上一篇下一篇

    猜您喜欢

    热门推荐