python的翻译-用Python做一个简单的翻译工具
编程本身是跟年龄无关的一件事,不论你现在是十四五岁,还是四五十岁,如果你热爱它,并且愿意持续投入其中,必定会有所收获。
本文就来自编程教室一位“小”读者的投稿(互助学习1群里的同学应该对作者的名字很熟悉吧)。我看着他不停地产出新的代码和技术文章,不禁感叹“后生可畏”。
这是一个爬虫基础分析和操作的开发案例,在此分享给大家。
当我在电脑上需要翻译一个单词时,我会这样做:
打开浏览器 = > 打开百度翻译 = > 输入单词 = > 得到翻译
不过有时候,当我在命令行环境下写代码的时候,懒得再切换到浏览器里等待页面的加载。
于是我就想,能否用万能的 python 制作一个 命令行下的翻译工具 呢?
说干就干!
网上搜索了点信息,加上一顿操作,最终被我捣鼓出来了。来看下最终的效果:
在这个工具中,我用了 百度 、 有道 以及 谷歌 (可选)的翻译。
开发思路
其中获取有道翻译和百度翻译的原理都差不多,这里我们选取百度翻译来玩耍一下啦:
接下来右键点击 检查 ,选择 Network 中的 XHR (向服务器发送的数据请求)。然后我们在输入框里输入 save 这个单词,我们可以看到一时间这里面多了几个 sug 标签,点开一看:
可以看到,这个 sug 请求里面就有我们想要的数据。点进去, Request URL 就是我们需要请求的网址,另外在 Request Method 看到是 POST 方式,也就是提交表单:
移到最后,我们看见了提交的表单参数:
在 Form Data 中,我们看见表单是一个字典: {'kw': 'save'} ,这里 save 是我们自己输入的,也就是我们要查询的单词,因此我们使用 requests.post 来模拟这个请求:
# 网址和表单
url='https://fanyi.baidu.com/sug'
Form_data= {'kw': word}
# post方式请求网站
response=requests.post(url,data=Form_data,headersheaders=headers)
我们可以试着打印出返回的东西,你会发现是以 JSON 格式返回的,因此需要引入内置库 json 来解析:
content=json.loads(response.text) # 加载成字典形式
在打印出的 json 格式的文本中我们发现翻译结果在 'data'['v']( 刚刚的图片里我们也看见了),接下来提取并返回:
result=content['data'][0]['v'] # 获取翻译结果
return result
这样就完成了提交表单了,实现百度翻译了。
这里用到的就是一些常用的爬虫分析和操作,有道翻译也基本类似,不再赘述,具体操作可参加文末给出的完整代码。
接下来我们来看看与众不同的谷歌翻译,这个玩意实在有些复杂。谷歌翻译是有 api 的,但是要钱……我不想付钱……网上有大佬给出了解决方案(这里我们简单地看一下原理):
按照近似百度翻译的方式操作,我们看到这里多出了一个请求,这里面有我们想要的翻译结果:
我们回到之前的 Request URL 看一下,发现前面的直接复制就好了, q 是我们需要翻译的词,但是这个 tk 参数却是个棘手的参数。我代码里用到的解法是网上的,仿照谷歌翻译页面上的提供的函数,用 JavaScript 去计算出了这个参数(我怀疑他就是拿的前端源码,没仔细对照)。
那么如何在 python 中执行 JavaScript 代码呢,我们可以通过 pyexecjs 这个库(注意这个库导入名是 execjs )。这个部分的源码就在 Py4Js 这个类里边了。
特别说明下,因为无法直接使用谷歌翻译,所以我把它做成了可选项,默认不会调用。
使用方法
我已经将这个项目发布到了 pypi ,你可以通过 pip 命令按如下方式安装:
pip install quicktranslate
用起来也是非常的简单(加上 -g 可增加谷歌翻译结果):
trans -t 你要翻译的东西
示例:
$ trans -t 你好
=========================
youdao translate result:hello
baidu translate result:[nǐ hǎo] how do you do; how are you; hello;
=========================
$ trans -t 你好 -g
=========================
youdao translate result:hello
baidu translate result:[nǐ hǎo] how do you do; how are you; hello;
google translate result:Hello there
=========================
本案例完整代码: https://github.com/pynickle/a... pip安装命令: pip install quicktranslate
【责任编辑:庞桂玉 TEL:(010)68476606】
点赞 0
python的翻译-用Python做一个简单的翻译工具相关推荐
- 使用有道词典API做一个简单的翻译页面 HTML+JS+有道词典API(代码可直接运行)
使用有道词典API做一个简单的翻译页面 HTML+JS+有道词典API(代码可直接运行) 代码很简单,适合初学者学习借鉴.可以当成一个小工具使用. 注意: 1.代码应联网使用. 2.在输入密钥和id时 ...
- 开始做一个简单的记账工具
用VScode做一个简单的记账工具 内容保存在 https://leonchan0608.coding.net/public/bookkeeping/bookkeeping/git 下班学习,奋斗一年 ...
- 如何用 Python 做一个简单的翻译工具?
前言 平时经常在网上翻译一些单词,突发奇想,可不可以直接调某些免费翻译网站的接口呢?然后做一个图形界面的翻译小工具?下面开始实践 (文末送读者福利) 1.先找一下有哪些免费翻译的接口 百度了一下关键字 ...
- 用html5做一个简单网页_用Python做一个简单的翻译工具
编程本身是跟年龄无关的一件事,不论你现在是十四五岁,还是四五十岁,如果你热爱它,并且愿意持续投入其中,必定会有所收获. 本文就来自编程教室一位"小"读者的投稿(互助学习1群里的同学 ...
- 用python做简单的地理聚类分析案例_用Python做一个简单的翻译工具
编程本身是跟年龄无关的一件事,不论你现在是十四五岁,还是四五十岁,如果你热爱它,并且愿意持续投入其中,必定会有所收获. 本文就来自编程教室一位"小"读者的投稿(互助学习1群里的同学 ...
- 用Python做一个简单的翻译工具
编程本身是跟年龄无关的一件事,不论你现在是十四五岁,还是四五十岁,如果你热爱它,并且愿意持续投入其中,必定会有所收获. 很多人学习python,不知道从何学起. 很多人学习python,掌握了基本语法 ...
- python制作查询工具发给别人使用_用Python做一个简单的翻译工具
编程本身是跟年龄无关的一件事,不论你现在是十四五岁,还是四五十岁,如果你热爱它,并且愿意持续投入其中,必定会有所收获. 本文就来自编程教室一位"小"读者的投稿(互助学习1群里的同学 ...
- python翻译-用Python做一个简单的翻译工具
编程本身是跟年龄无关的一件事,不论你现在是十四五岁,还是四五十岁,如果你热爱它,并且愿意持续投入其中,必定会有所收获. 本文就来自编程教室一位"小"读者的投稿(互助学习1群里的同学 ...
- python自动回复qq消息_基于python使用qqbot接入qq做一个简单的文字消息自动回复
qqbot是一个免费开源的基于smartqq的python插件,如果默认安装有pip,则可以直接在命令行下执行:pip install qqbot安装qqbot,安装成功后可以在命令行输入qqbot ...
最新文章
- php删除数组中指定值的元素
- jmeter获取时间_time 函数
- 服务器通过光纤模块挂载存储服务器
- Java设计模式12:装饰器模式
- 对象的浅拷贝和深拷贝
- MySQL基础操作(一)
- glibc库详解及与POSIX,system V这些库之间关系的说明
- 理解浏览器和nodeJs中的事件循环(Event Loop)
- 修改notebook的默认路径_更改jupyter notebook默认存储路径
- 数模电路基础知识 —— 3. 常见电路符号说明(电容、电阻、电感)
- matlab分析电梯,一种基于Matlab/Simulink的电梯驱动系统建模方法
- 单片机c语言msb全称,51单片机英文缩写全称(整理最全)
- 官宣:教父级讲师李明加入尚硅谷
- 【渝粤教育】电大中专计算机网络基础_1作业 题库
- 地图SDK全面升级 – 数十项新功能及优化等你来体验
- 九度1088——剩下的树
- python程序设计心得体会感想-如何快速学会Python
- 如何快速撰写文章—伪原创
- 两台不同的型号的路由器桥接
- 生物正交靶向的细胞膜仿生纳米颗粒|GPI-NY-ESO-1融合蛋白的细胞膜|天然细胞膜伪装微纳米载体的仿生设计|红细胞膜包裹的聚吡咯纳米颗粒