编程本身是跟年龄无关的一件事,不论你现在是十四五岁,还是四五十岁,如果你热爱它,并且愿意持续投入其中,必定会有所收获。
本文就来自编程教室一位“小”读者的投稿(互助学习1群里的同学应该对作者的名字很熟悉吧)。我看着他不停地产出新的代码和技术文章,不禁感叹“后生可畏”。
这是一个爬虫基础分析和操作的开发案例,在此分享给大家。


当我在电脑上需要翻译一个单词时,我会这样做:

打开浏览器 => 打开百度翻译 => 输入单词 => 得到翻译

不过有时候,当我在命令行环境下写代码的时候,懒得再切换到浏览器里等待页面的加载。

于是我就想,能否用万能的 python 制作一个命令行下的翻译工具呢?

说干就干!

网上搜索了点信息,加上一顿操作,最终被我捣鼓出来了。来看下最终的效果:

在这个工具中,我用了百度有道以及谷歌(可选)的翻译。

开发思路

其中获取有道翻译和百度翻译的原理都差不多,这里我们选取百度翻译来玩耍一下啦:

首先打开百度翻译:http://fanyi.baidu.com

接下来右键点击检查,选择 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,headers=headers)

我们可以试着打印出返回的东西,你会发现是以 JSON 格式返回的,因此需要引入内置库 json 来解析:

content = json.loads(response.text)   # 加载成字典形式

在打印出的 json 格式的文本中我们发现翻译结果在['data'][0]['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
=========================

获取本案例完整代码,请在公众号“Crossin的编程教室”中回复关键字:翻译

作者:pynickle

------

一起学,走得远!

欢迎搜索:Crossin的编程教室

用python做简单的地理聚类分析案例_用Python做一个简单的翻译工具相关推荐

  1. 决策树分析例题经典案例_决策树原理及一个简单的小例子

    首先通过两个图来引入什么是决策树. 是否学习的决策过程 决策树是仿树结构来进行决策的,例如上图来说,我们要对'是否学习'这个问题进行决策时,通常伴随一系列的子决策.先看是否有'对象',有的话是否需要' ...

  2. python在土木工程方面的应用案例_给Python小白看的10个使用案例,入门Python就在这里了...

    今天给大家分享十个Python入门级别的小案例. 这十个案例的难度不高,但是对于知识的使用非常全面,很适合小白在学习的初期建立学习信心和增加熟练度. 每个案例下都有或多或少的思路分析,希望对大家有帮助 ...

  3. 【vue2.0进阶】案例:用Vuex实现一个简单的计算器

    昨天我们学习了Veux的几个重要的核心概念.当然只讲概念还不够,必须要结合上案例才能理解得更深刻. 马上就开始我们今天的案例:用Vuex实现一个简单的网页计算器. 我们之前的章节说过,Vuex适合在较 ...

  4. python数据分类聚类案例_用Python进行系统聚类分析

    在进行机器学习时,我们往往要对数据进行聚类分析,聚类,说白了就是把相似的样品点/数据点进行归类,相似度高的样品点会放在一起,这样一个样本就会被分成几类.而聚类分析也有很多种方法,比如分解法.加入法.有 ...

  5. python 制作高斯mask_【趣味案例】用Python制作各种酷炫词云图,原来这么简单!...

    一.简介词云图是文本挖掘中用来表征词频的数据可视化图像,通过它可以很直观地展现文本数据中地高频词:! 图1 词云图示例 在Python中有很多可视化框架可以用来制作词云图,如pyecharts,但这些 ...

  6. python tkinter库、添加gui界面_使用Python中tkinter库简单gui界面制作及打包成exe的操作方法(二)...

    使用Python中tkinter库简单gui界面制作及打包成exe的操作方法(二),创建一个,界面,布局,文件,路径 使用Python中tkinter库简单gui界面制作及打包成exe的操作方法(二) ...

  7. 《Python Cookbook 3rd》笔记(2.19):实现一个简单的递归下降分析器

    实现一个简单的递归下降分析器 问题 你想根据一组语法规则解析文本并执行命令,或者构造一个代表输入的抽象语法树.如果语法非常简单,你可以自己写这个解析器,而不是使用一些框架. 解法 在这个问题中,我们集 ...

  8. python运行不了程序代码_Python源码分析2 - 一个简单的Python程序的执行

    本文主要通过跟踪一个非常简单的Python程序的执行,简单讨论Python实现的基本框架和结构. 要执行Python程序如下,功能非常简单:从1加到10再打印出来 # test program sum ...

  9. python怎么在gui中显示图片_用 PySimpleGUI 做程序(7)--显示图片

    欢迎关注深入 Python 的专栏:恍然大明白​www.zhihu.com 本文代码在此:https://github.com/JiangChuanGo/examples/tree/master/Py ...

最新文章

  1. C#委托(匿名函数)的各种变形写法
  2. 用Python实现一个简单的智能换脸软件
  3. Javascript基础之-Promise
  4. 【背包】SMRTFUN
  5. i219 2012驱动_2012年I / O之后
  6. github private链接访问_如何将Jenkins链接到私有Github存储库?
  7. 数据结构之线性表:单链表
  8. 莱斯大学找到了多被提升3G/4G网络性能的方法
  9. linux系统下部署go语言环境
  10. day25-3 json,pickle模块
  11. 所有windows的资料
  12. ubuntu14.04LTS 安装后几个基本设置
  13. 【推荐】HTML5 Word Cloud——中文词云
  14. MyEclipse 10.7(版本:eclipse 3.7.x-Indigo系列)安装activiti-eclipse-plugin插件(流程设计器)...
  15. ntpdate 安装_SAS 9.4 安装教程
  16. SQLserver基础语句大全
  17. python 版权保护,python爬虫篇4——爬取专利著作权信息
  18. pow函数python_pythonpow函数怎么用
  19. 从产品角度分析羊了个羊为何能爆火
  20. 董明珠:没有人才,一切归零;没有道德,人才归零

热门文章

  1. RocksDB 写入流程详解
  2. 今天来聊聊 Redis 的主从复制
  3. 华为开源数据虚拟化引擎HetuEngine;全球超算500强:中国上榜数量增加;谷歌收购云计算公司CouldSimple ……...
  4. Aruba 推出Instant On 为中小型企业提供安全、高速的无线连接
  5. 美女主播变大妈:在bug翻车现场说测试策略
  6. 北京计算机一级2020,2020北京市一级计算机基础及MS Office应用考试在线自测试题库(不限设备,登陆即可做题)...
  7. android 离屏渲染 简单书,Android OpenGL ES 8.FrameBuffer离屏渲染
  8. kvmweb管理工具_KVM的web管理界面
  9. 华为路由器命令手册_华为路由器+蒲公英路由器,如何做双层路由器映射?
  10. SpringBoot2.x RabbitMQ Nacos Nacos-Config