编程本身是跟年龄无关的一件事,不论你现在是十四五岁,还是四五十岁,如果你热爱它,并且愿意持续投入其中,必定会有所收获。

本文就来自编程教室一位"小”读者的投稿(互助学习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做一个简单的翻译工具相关推荐

  1. 使用有道词典API做一个简单的翻译页面 HTML+JS+有道词典API(代码可直接运行)

    使用有道词典API做一个简单的翻译页面 HTML+JS+有道词典API(代码可直接运行) 代码很简单,适合初学者学习借鉴.可以当成一个小工具使用. 注意: 1.代码应联网使用. 2.在输入密钥和id时 ...

  2. 开始做一个简单的记账工具

    用VScode做一个简单的记账工具 内容保存在 https://leonchan0608.coding.net/public/bookkeeping/bookkeeping/git 下班学习,奋斗一年 ...

  3. 如何用 Python 做一个简单的翻译工具?

    前言 平时经常在网上翻译一些单词,突发奇想,可不可以直接调某些免费翻译网站的接口呢?然后做一个图形界面的翻译小工具?下面开始实践 (文末送读者福利) 1.先找一下有哪些免费翻译的接口 百度了一下关键字 ...

  4. python的翻译-用Python做一个简单的翻译工具

    编程本身是跟年龄无关的一件事,不论你现在是十四五岁,还是四五十岁,如果你热爱它,并且愿意持续投入其中,必定会有所收获. 本文就来自编程教室一位"小"读者的投稿(互助学习1群里的同学 ...

  5. 用html5做一个简单网页_用Python做一个简单的翻译工具

    编程本身是跟年龄无关的一件事,不论你现在是十四五岁,还是四五十岁,如果你热爱它,并且愿意持续投入其中,必定会有所收获. 本文就来自编程教室一位"小"读者的投稿(互助学习1群里的同学 ...

  6. 用python做简单的地理聚类分析案例_用Python做一个简单的翻译工具

    编程本身是跟年龄无关的一件事,不论你现在是十四五岁,还是四五十岁,如果你热爱它,并且愿意持续投入其中,必定会有所收获. 本文就来自编程教室一位"小"读者的投稿(互助学习1群里的同学 ...

  7. 用Python做一个简单的翻译工具

    编程本身是跟年龄无关的一件事,不论你现在是十四五岁,还是四五十岁,如果你热爱它,并且愿意持续投入其中,必定会有所收获. 很多人学习python,不知道从何学起. 很多人学习python,掌握了基本语法 ...

  8. python制作查询工具发给别人使用_用Python做一个简单的翻译工具

    编程本身是跟年龄无关的一件事,不论你现在是十四五岁,还是四五十岁,如果你热爱它,并且愿意持续投入其中,必定会有所收获. 本文就来自编程教室一位"小"读者的投稿(互助学习1群里的同学 ...

  9. python营业数据分析_利用Python对咖啡馆营业做一个简单的数据分析

    准备数据 1.导入python数据分析模块三剑客:pandas\matplotlib\numpy 2.用read_excel()方法导入数据源 .输出结果截图如下(部分): 可以看到有这些数据:订单日 ...

最新文章

  1. Spark基础-scala学习(三、Trait)
  2. python os.chdir函数
  3. [编写高质量代码:改善java程序的151个建议]建议57 推荐在复杂字符串操作中使用正则表达式...
  4. 【转】窗口之间的主从关系与Z-Order
  5. Qt 检测第三方软件是否运行、杀死第三方进程
  6. linux指令:软连接与历史命令
  7. java中while空循环_java – 实现空while循环以保持控制的更好方法
  8. vscode 搭建Vue项目及引入elementUI
  9. 百度离线人脸识别sdk的使用
  10. 如何绘制变参数根轨迹(针对复杂情况,无法分离出开环增益k*时)
  11. android 沉浸式_【沉浸式体验】从民俗音乐到绘画雕塑,他们玩了这么多花样!...
  12. 解决Can‘t connect to local MySQL server through socket ‘/var/lib/mysql/mysql.sock‘ (2)
  13. 喂喂,说好的节操呢!
  14. 【示例源码】还在为毒奶粉忧桑?轻松一下,玩玩猩球保卫战吧(html5游戏)
  15. 荣耀手机用什么蓝牙耳机好?适合荣耀手机的蓝牙耳机推荐
  16. word文档中设置的行距一样但实际显示的不一样
  17. solidworks中加入参考图纸图片
  18. 虚幻4引擎学习日记----个人2d游戏开发_1
  19. 设计模式-责任链模式变体之管道模式
  20. SpringMVC核心知识的梳理(现在都用SpringBoot了,但是SpringMVC还的学的扎实点,饮水思源)

热门文章

  1. sklearn学习笔记5:朴素贝叶斯
  2. 纵观国内外,这些优秀的桥梁照明案例
  3. 有哪些投资的书籍推荐
  4. airbnb代码的格式化 vuex也可配置
  5. python nlp 句子提取_关于nlp:使用NLTK python进行因果句提取
  6. jupyter notebook 配置
  7. pdf加水印怎么加?3个方法你可以看看
  8. 数据库创建表失败原因
  9. Yunxion资产监测设备研发中,4G通信模块的功耗处理
  10. linux下Mysql查询语句