背景

这个功能是在工作时,上级有个需求是让我将json文件中指定字段的英文翻译成中文,并且指定要使用谷歌翻译,理由是翻译的结果可能会比较准确。

过程

因为之前写过用python实现有道翻译,是在ajax中找到它的翻译接口的,所以我以为谷歌应该也差不多,于是我就打开 “开发者工具”,拼命地寻找它的翻译接口,果然让我发现了,哈哈哈哈~~

然而我发现我高兴地太早了,这TMD是个啥东西,为啥不是json啊,崩溃!!!

算了,你牛,我放弃~

于是我就面向度娘,寻求帮助,搜索关键词 “python实现谷歌翻译”,哦吼~ 结果还挺多

哈哈又草率了(欲哭无泪),随缘选中一个后,大致看了一下(好复杂555~),它们的思路大致是用PyExecJS库模拟js代码获取结果,我才不管这些,能用就行,然后一顿ctrl c/ctrl v 代码到本地后,修改一些数据,开始运行。

接下来就一顿报错,我就一顿卧槽。好的,没安装库…安装不成功,和一些莫名的其他原因。这能忍?于是我决定自己动手,丰衣足食,大不了就爬网页嘛,然后打开网页源代码,MD又草率了,并没有需要的内容,忘记结果是用js生成的,唉,怎么办?只好从最开始的那个ajax的接口下手了

内容里有很多重复的内容并且感觉毫无规则…我硬着头皮尝试用正则把内容提取出来,代码我就不贴,因为…

我花了好长好长时间,疯狂改正则表达式…啊哈!的确可以得出结果,超开心的~ 但是后面翻译的过程发现,这只适合翻译一句话,多一点都不行,它会漏掉…头又炸了!!!

我又放弃了,已经束手无策了…第二天,看到一篇文章,里面写的是 “ 字符串转为列表”的知识点,然后我灵光一现,想到了用正则和列表相结合,将内容提取出来,于是我看到了奥特曼(光)哈哈哈,这次真的可以!!!!不说了上代码

代码

import requestsimport jsonimport reimport timedef googleTranslate(text):"""用谷歌翻译内容,返回翻译结果params: text 翻译的内容return: str s 翻译结果"""url = 'https://translate.google.cn/_/TranslateWebserverUi/data/batchexecute?rpcids=MkEWBc&f.sid=-2984828793698248690&bl=boq_translate-webserver_20201221.17_p0&hl=zh-CN&soc-app=1&soc-platform=1&soc-device=1&_reqid=5445720&rt=c'headers = {'origin': 'https://translate.google.cn','referer': 'https://translate.google.cn/','sec-fetch-dest': 'empty','sec-fetch-mode': 'cors','sec-fetch-site': 'same-origin','user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.66 Safari/537.36','x-client-data': 'CIW2yQEIpbbJAQjEtskBCKmdygEIrMfKAQj2x8oBCPfHygEItMvKAQihz8oBCNzVygEIi5nLAQjBnMsB','Decoded':'message ClientVariations {repeated int32 variation_id = [3300101, 3300133, 3300164, 3313321, 3318700, 3318774, 3318775, 3319220, 3319713, 3320540, 3329163, 3329601];}','x-same-domain': '1'} # 以防万一,我全加上了,可能有些不写也可以data = {'f.req': f'[[["MkEWBc","[[\\"{text}\\",\\"auto\\",\\"zh-CN\\",true],[null]]",null,"generic"]]]'} # text则是你要翻译的内容res = requests.post(url, headers=headers, data=data).text # 获取返回的结果pattern = '\)\]\}\'\s*\d{3,4}\s*\[(.*)\s*' # 提取需要的部分part1 = re.findall(pattern, res)part1_list = json.loads(part1[0]) # 字符串转列表if part1_list[2] is None: # 如果返回的结果中没有需要的数据,则返回输入的内容print(text)return textcontent1 = part1_list[2].replace('\n', '')part2_list = json.loads(content1)[1][0][0][5:][0] # 过滤结果中重复的部分s = ''for i in part2_list: # 遍历结果中的每一句话,并进行拼接s += i[0]print(s)return stext = 'friend. Let us look back on 2020 and look forward to 2021.'print(text)googleTranslate(text)

效果

效果如何?

如何翻译成其他语言?

当然,这仅仅是实现了任何语言转为中文,要转为别的语言,你可以通过执行js,获取所有语言对应的英文字母,以字典的形式存储,最后保存为json文件

然后执行程序时,动态地输入翻译后的语言,去json文件中获取对应的英文代表,然后替换data中的"zh-CN"即可。比如我想翻译成日语,我就将“zh-CN”替换成 “ja”,这样,翻译出来的结果就是日语了

修改data数据

翻译结果

好了,今天的分享就到这了,2021年第一篇文章,给自己点个赞,奥里给~

python语言无需翻译成_python实现谷歌翻译相关推荐

  1. 谷歌浏览器无法翻译成中文,谷歌翻译,最新(沉浸式翻译和划词翻译,chrome无法翻译,谷歌浏览器无法翻译此网页)

    简介:谷歌浏览器自带的翻译功能,对我们来说用处很大,但有的时候突然就会变成"无法翻译此网页",之前给大家提供过两种无法翻译此网页的解决方案,这次再给大家分享下两款别的翻译方法: 一 ...

  2. 谷歌浏览器无法翻译此网页,解决方法?(谷歌浏览器无法翻译成中文,谷歌翻译,最新方法)

    谷歌浏览器自带的翻译功能,对我们来说用处很大,但有的时候突然就会变成"无法翻译此网页",针对此问题这里提供几种解决方案(翻译插件),如下: 方法1: 蓝奏云文件https://ww ...

  3. pdf翻译成中文,怎样翻译比较好?

    据了解,pdf是一种便携式电子文件,广泛应用于电子图书.产品说明.电子期刊.公司文告.网络宣传.电子邮件等资料处理.随着中外企业的合作加强,pdf文件翻译需求也不断增加.那么,pdf翻译成中文,怎样翻 ...

  4. python语言是一门编程语言_python是一门怎样的编程语言?老男孩python入门

    大家应该都听说过python语言,也知道它是一门非常适合零基础学习的语言,但是对于没有接触过的人来说可能就疑惑python到底是一门什么样的编程语言? 1.跨平台:跨平台不依赖操作系统和硬件环境,某个 ...

  5. python语言基础项目报告书_Python语言基础01-初识Python

    1. Python简介 1.1 Python的历史 Python的创始人为吉多·范罗苏姆(荷兰语:Guido van Rossum) 1989年的圣诞节期间:吉多·范罗苏姆为了在阿姆斯特丹打发时间,决 ...

  6. python语言程序的特点_Python语言概述及其运行机制详解

    即日起,我们将打开一个新的编程世界的大门--Python语言.Python是一种跨平台的计算机程序设计语言.是一种面向对象的动态类型语言,最初被设计用于编写自动化脚本(shell),随着版本的不断更新 ...

  7. python语言的优缺点论文_Python语言的优缺点是什么呢?

    Python这门语言的魅力和影响力已经远超Java.C.C++等编程语言前辈,主流的十大编程语言中,Python排名第一.被广大使用者誉为"更美好"编程语言.也常常被昵称为&quo ...

  8. python语言源程序文件类型_Python语言源程序文件的文件类型是__________。

    [单选题]Do you know Li Ming? No, I don't know _____. [填空题]从同步.异步方式的角度讲,82C55的基本输入/输出方式属于 通讯 . [判断题]扩展I/ ...

  9. 以下python语言关键字在异常处理_python后端开发工程师考证试题

    原标题:python后端开发工程师考证试题 python开发工程师考证试题 选择题 题目 关于 Python 程序格式框架的描述,以下选项中错误的是 ( A ) A: Python 语言不采用严格的& ...

最新文章

  1. xxl-job Vs ElasticJob,谁牛?
  2. 2.登录linun 输入密码登录不进去 进入单用户模式 修改 然后reboot
  3. docker逃逸漏洞复现 cve-2019-5736
  4. SAP 中session和外部断点设置的区别
  5. decode encode
  6. AtomicInteger相关类
  7. 谈谈对python这门课的认识_【Python公开课】1-认识Python
  8. seata分布式事务原理_又见分布式事务之Seata
  9. 微信小程序scroll-view去除滚动条 (安卓、ios都有效)
  10. JNI java.lang.UnsatisfiedLinkError
  11. linux ulipad,如何在windows下安装配置python工具Ulipad
  12. 快速入手光学字符识别控件Aspose.OCR!学会使用C#以编程方式对图像执行OCR
  13. anaconda下载与spyder的报错解决
  14. 自定义 SpringBoot Banner 图案
  15. PyQt5 组合键
  16. pythontrun什么意思_python新手笔记一
  17. 非主流闪图头像教程:扩散粒子效果
  18. Sawyer机器人助力ASM印刷电路板处理
  19. Henry前端笔记之 git实际操作问题记录
  20. Melodyne Studio 4 修音工具鬼畜调音必备

热门文章

  1. Rust笔记——解决 Blocking waiting for file lock on build directory
  2. cron表达式生成函数(小时部分自定义) 1小时30分钟,1小时20分钟,1小时40分钟..
  3. 8.ASP.NET Core中的Kestrel Web服务器
  4. 计算机原理学习(一)
  5. POSA2 关于本书
  6. python查看电脑配置_怎么看电脑配置_怎么查看电脑配置好坏|信息【图文】-太平洋IT百科...
  7. 帝国列表页 pHP原代码页,帝国模板列表页和内容页的伪静态规则实现方法
  8. HDMI 1.4 协议详解
  9. github Topic 功能 | github 常用条件查询
  10. 共享红色理念创业计划书PPT模板