运行环境: python 3.6.0

今天处于练习的目的,就用 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实现百度翻译功能相关推荐

  1. autocad python二次开发_基于Python AutoCAD ActiveX 二次开发,pyautocad应用技术

    AutoCAD应用程序开发系列 基于Python AutoCAD ActiveX 二次开发技术 主要库:pyautocad==0.2.0 内容#:基于Python AutoCAD ActiveX 二次 ...

  2. python人脸识别库_基于Python的face_recognition库实现人脸识别

    Python Python开发 Python语言 基于Python的face_recognition库实现人脸识别 一.face_recognition库简介 face_recognition是Pyt ...

  3. python多叉树遍历_基于Python的多叉树遍历算法

    [ 综直厘翹 S 赛理 ) 信息记录材料 2019 年 5 月第 20 卷第 5 期 基于 Python 的多叉树遍历算法 钱雨波 , 王金祥 ( 指导老师 ) ( 延边大学 吉林 延边 1 3300 ...

  4. python电影推荐算法_基于Python的电影推荐算法

    原标题:基于Python的电影推荐算法 第一步:收集和清洗数据 数据链接:https://grouplens.org/datasets/movielens/ 下载文件:ml-latest-small ...

  5. python兼职平台信号处理_基于Python的数字信号处理初步

    作者:许欢 来源:EETOP 行者无疆(论坛usrname:ICNO.1) 的博客 Python 是目前的热门语言,一直觉得掌握一门编程语言对作为搞技术的来说还是很有必要的,结合工作中能用到的一些数据 ...

  6. python深度神经网络量化_基于Python建立深度神经网络!你学会了嘛?

    原标题:基于Python建立深度神经网络!你学会了嘛? 图1 神经网络构造的例子(符号说明:上标[l]表示与第l层:上标(i)表示第i个例子:下标i表示矢量第i项) 单层神经网络 图2 单层神经网络示 ...

  7. 用python做炒股软件-python程序源码_基于python的炒股软件

    股票模拟交易系统设计与实现 不但能够进行界面的设计,还可以实现各个窗口的关联,通过WPF实现和其余窗口的关联,而且WPF中的类不但能够和其中一个窗口进行关联,还可以跟许多功能操作接口,WPF在对窗口对 ...

  8. 用python做双人五子棋_基于python的socket实现单机五子棋到双人对战

    基于python的socket实现单机五子棋到双人对战,供大家参考,具体内容如下 本次实验使用python语言.通过socket进行不同机器见的通信,具体可以分为以下四步:1.创建ServerSock ...

  9. 用python做生物信息数据分析_基于Python的自动获取生物信息数据的软件设计

    基于 Python 的自动获取生物信息数据的软件设计 * 周斯涵,刘月兰 ** [摘 要] [摘 要] 从国际生物信息学数据库中采集数据来进行相关领域的分析, 但随着数据库规模不断扩大 , 数据来源种 ...

最新文章

  1. 关于UnimplementedError: Fused conv implementation does not support grouped convolutions for now.报错
  2. PMP-【第10章 项目沟通管理】-2021-2-16(220页-231页)
  3. JZOJ 4822. 【NOIP2016提高A组集训第1场10.29】完美标号
  4. CodeForces - 1512G Short Task(欧拉筛求因子和)
  5. 在用 Eclipse 搭建 SAP Commerce Cloud 调试环境时,错误和正确的 buildfile
  6. java list 接口_Java 集合 List接口
  7. java ruby脚本_Java 程序中直接执行 Ruby 脚本 (JRuby)
  8. 用tsmmc.MSC方式在xp和Win7集中管理多台Win2003服务器
  9. 【Java】计算1+1/2!+1/3!+1/4!....前20项
  10. linux shell 脚本路径,linux获取shell脚本所在绝对路径操作介绍
  11. Linux ssh 允许 root用户 登录
  12. python递归(一分钟读懂)
  13. 查询结果做缓存的例子
  14. 2018 年开源技术 10 大发展趋势
  15. excel/vosviewer词频统计的方法
  16. 最全面测试计划书模板
  17. 图像scale与相机参数_Blender 的相机参数解析
  18. 执一不二 跬步千里-王子密码2011年11月份心得(十)
  19. 【阿里云原生架构】二、云原生架构的原则和模式
  20. MT3: 多任务多轨音频转录

热门文章

  1. 【CKA考试笔记】十三、k8s中的网络
  2. Android 图片毛玻璃的实现方法
  3. 竞价实例 and 弹性伸缩的结合
  4. html5中figure怎么用,HTML5中figure和figcaption标签用法
  5. 77、基于STM32单片机的超市餐饮二维码/条形码摄像头识别结账扫码系统设计
  6. JVM垃圾回收(二) 垃圾回收算法
  7. windows10上安装mysql(详细步骤)
  8. 为什么高水平程序员不喜欢接外包项目
  9. 容器化部署与传统部署的区别及优势
  10. 打印 Java 数组的最简单方法是什么?