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


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

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

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

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

说干就干!

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

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

开发思路

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

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

接下来右键点击检查,选择 Network 中的 XHR (向服务器发送的数据请求)。然后我们在输入框里输入 save 这个单词,我们可以看到一时间这里面多了几个 sug 标签,点开一看:

可以看到,这个 sug 请求里面就有我们想要的数据。点进去,Request URL 就是我们需要请求的网址,另外在 Request Method 看到是 POST 方式,也就是提交表单:

移到最后,我们看见了提交的表单参数:

Form Data 中,我们看见表单是一个字典:{'kw': 'save'},这里 save 是我们自己输入的,也就是我们要查询的单词,因此我们使用 requests.post 来模拟这个请求:

# 网址和表单

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

content 

在打印出的 json 格式的文本中我们发现翻译结果在['data'][0]['v'](刚刚的图片里我们也看见了),接下来提取并返回:

result 

这样就完成了提交表单了,实现百度翻译了。

这里用到的就是一些常用的爬虫分析和操作,有道翻译也基本类似,不再赘述,具体操作可参加文末给出的完整代码。

接下来我们来看看与众不同的谷歌翻译,这个玩意实在有些复杂。谷歌翻译是有 api 的,但是要钱……我不想付钱……网上有大佬给出了解决方案(这里我们简单地看一下原理):

按照近似百度翻译的方式操作,我们看到这里多出了一个请求,这里面有我们想要的翻译结果:

我们回到之前的 Request URL 看一下,发现前面的直接复制就好了,q 是我们需要翻译的词,但是这个 tk 参数却是个棘手的参数。我代码里用到的解法是网上的,仿照谷歌翻译页面上的提供的函数,用 JavaScript 去计算出了这个参数(我怀疑他就是拿的前端源码,没仔细对照)。

那么如何在 python 中执行 JavaScript 代码呢,我们可以通过 pyexecjs 这个库(注意这个库导入名是 execjs)。这个部分的源码就在 Py4Js 这个类里边了。

特别说明下,因为无法直接使用谷歌翻译,所以我把它做成了可选项,默认不会调用。

使用方法

我已经将这个项目发布到了 pypi,你可以通过 pip 命令按如下方式安装:

pip install quicktranslate

用起来也是非常的简单(加上 -g 可增加谷歌翻译结果):

trans -t 你要翻译的东西

示例:

你好

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

作者:pynickle

------

一起学,走得远!

欢迎搜索:Crossin的编程教室

用html5做一个简单网页_用Python做一个简单的翻译工具相关推荐

  1. python做一个小游戏_利用python做个小游戏

    从本期开始,我们将利用几天的时间用python来做个小游戏,当然,在做小游戏之前,我们必须学会一个做小游戏的第三方库--pygame.可能有人会说,python不擅长或者说不适合用来做游戏,的确是这样 ...

  2. 用python做公众号网页_使用python一步一步搭建微信公众平台(一)

    最近无聊,想玩玩微信的公众平台,后来发现乐趣无穷啊~ 使用的工具,python 新浪SAE平台,微信的公众平台 你需要先在微信的公众平台与新浪SAE平台上各种注册,微信平台注册的时候需要你拍张手持身份 ...

  3. 如何用python编一个扫雷游戏_用 Python 做一个 Windows 扫雷游戏

    原标题:用 Python 做一个 Windows 扫雷游戏 本文代码基于 python3.6 和 pygame1.9.4. Windows XP 上的扫雷是无数80/90后的集体回忆,今天我们就用 P ...

  4. python可以做动漫吗_用Python做一个以图搜番的应用程序,再也不用愁动漫图片的出处了!...

    前言 喜欢看动漫的朋友们大概都能体会到一个难受的事情,就是在论坛或者群聊里面看到一张动漫截图,很想知道它的出处,但百度搜了一圈却也没有一个可靠结果,就很郁闷.今天就来带大家用Python做一个简单的& ...

  5. 怎么用python编简单游戏_用Python实现一个简单的算术游戏详解

    用Python实现一个简单的算术游戏 #!/usr/bin/env python from operator import add, sub from random import randint, c ...

  6. python做按键精灵脚本_使用Python实现一个按键精灵 | 蓝士钦

    @HANK1998 其实,你这个代码,还有一个问题,鼠标键盘动作回放时,顺序会乱,线程同步问题,做不到鼠标动作和键盘动作交叉执行.,,我能力不太够了,,学的不深,不知道这个问题你解决没??? ---- ...

  7. python做作业没头绪_使用Python做作业

    python做作业没头绪 Applying OpenCV and Tesseract to do your math-homework 应用OpenCV和Tesseract进行数学作业 The pos ...

  8. python做数据分析的包_用Python做数据分析,Numpy,Pandas,matp

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 用Python做数据分析,Numpy,Pandas,matplotlib是怎么也绕不开的三个包,我最开始学习pandas是看的<利用Python进行 ...

  9. python如何制作一个工程软件_使用python制作一个解压缩软件

    python实现解压缩的重要模块就是--zipfile,其次是os 安装zipfile模块 首先得安装zipfile模块,打开cmd输入一下命令即可安装 pip install zipfile os是 ...

最新文章

  1. VML 画统计 柱状、饼图、折线
  2. c语言错误的等式,C语言学习中几个常见典型错误分析.docx
  3. 5分钟回顾Linux25年的发展历程与变迁
  4. MySQL添加字段和修改字段的方法
  5. HDU 1166(线段树)
  6. 使用EXE4J将JAR包转换为EXE文件
  7. try catch finally 关闭流标准的写法
  8. 关于windows的version和OS build version
  9. VMware linux 在2.4.20-8 中编译2.6.15.5 内核
  10. 集成测试还原数据库_项目学生:分片集成测试数据
  11. Oracle 协议适配器错误
  12. linux httpd 开机启动脚本,httpd服务如何开机启动
  13. w10电脑c盘满了怎么清理_快速清理:Win10系统C盘满了怎么办?
  14. GB35114---基于openssl加密库进行开发(二)
  15. C#生成与识别条形码、二维码示例 zxing、 barcodelib生成条形码 code128B等 无白边 自动宽度
  16. 电脑屏幕“重影”解决方法
  17. win10锁屏壁纸文件夹位置
  18. JavaSE Lambda 表达式
  19. Couldnot load Project The file couldn‘t be opened
  20. Learning Image Conditioned Label Space for Multilabel Classification

热门文章

  1. c语言窗口程序 画圆,C语言画圆问题。怎么跳过画图界面直接出来了?
  2. USB3.0超高速接口应用方案
  3. 2018及以后的热门网络技巧
  4. [日常] Go语言圣经--Channel习题
  5. Linux input子系统 io控制字段【转】
  6. 常用思科设备图标(JPG+矢量图)
  7. ICS—CERT官网公示匡恩网络新发现四工控漏洞
  8. RocketMq消息队列使用
  9. 《LINUX3.0内核源代码分析》第二章:中断和异常 【转】
  10. 汽车之家10周年办演唱会,厂商们怎么看?