用html5做一个简单网页_用Python做一个简单的翻译工具
编程本身是跟年龄无关的一件事,不论你现在是十四五岁,还是四五十岁,如果你热爱它,并且愿意持续投入其中,必定会有所收获。
本文就来自编程教室一位“小”读者的投稿(互助学习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做一个简单的翻译工具相关推荐
- python做一个小游戏_利用python做个小游戏
从本期开始,我们将利用几天的时间用python来做个小游戏,当然,在做小游戏之前,我们必须学会一个做小游戏的第三方库--pygame.可能有人会说,python不擅长或者说不适合用来做游戏,的确是这样 ...
- 用python做公众号网页_使用python一步一步搭建微信公众平台(一)
最近无聊,想玩玩微信的公众平台,后来发现乐趣无穷啊~ 使用的工具,python 新浪SAE平台,微信的公众平台 你需要先在微信的公众平台与新浪SAE平台上各种注册,微信平台注册的时候需要你拍张手持身份 ...
- 如何用python编一个扫雷游戏_用 Python 做一个 Windows 扫雷游戏
原标题:用 Python 做一个 Windows 扫雷游戏 本文代码基于 python3.6 和 pygame1.9.4. Windows XP 上的扫雷是无数80/90后的集体回忆,今天我们就用 P ...
- python可以做动漫吗_用Python做一个以图搜番的应用程序,再也不用愁动漫图片的出处了!...
前言 喜欢看动漫的朋友们大概都能体会到一个难受的事情,就是在论坛或者群聊里面看到一张动漫截图,很想知道它的出处,但百度搜了一圈却也没有一个可靠结果,就很郁闷.今天就来带大家用Python做一个简单的& ...
- 怎么用python编简单游戏_用Python实现一个简单的算术游戏详解
用Python实现一个简单的算术游戏 #!/usr/bin/env python from operator import add, sub from random import randint, c ...
- python做按键精灵脚本_使用Python实现一个按键精灵 | 蓝士钦
@HANK1998 其实,你这个代码,还有一个问题,鼠标键盘动作回放时,顺序会乱,线程同步问题,做不到鼠标动作和键盘动作交叉执行.,,我能力不太够了,,学的不深,不知道这个问题你解决没??? ---- ...
- python做作业没头绪_使用Python做作业
python做作业没头绪 Applying OpenCV and Tesseract to do your math-homework 应用OpenCV和Tesseract进行数学作业 The pos ...
- python做数据分析的包_用Python做数据分析,Numpy,Pandas,matp
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 用Python做数据分析,Numpy,Pandas,matplotlib是怎么也绕不开的三个包,我最开始学习pandas是看的<利用Python进行 ...
- python如何制作一个工程软件_使用python制作一个解压缩软件
python实现解压缩的重要模块就是--zipfile,其次是os 安装zipfile模块 首先得安装zipfile模块,打开cmd输入一下命令即可安装 pip install zipfile os是 ...
最新文章
- VML 画统计 柱状、饼图、折线
- c语言错误的等式,C语言学习中几个常见典型错误分析.docx
- 5分钟回顾Linux25年的发展历程与变迁
- MySQL添加字段和修改字段的方法
- HDU 1166(线段树)
- 使用EXE4J将JAR包转换为EXE文件
- try catch finally 关闭流标准的写法
- 关于windows的version和OS build version
- VMware linux 在2.4.20-8 中编译2.6.15.5 内核
- 集成测试还原数据库_项目学生:分片集成测试数据
- Oracle 协议适配器错误
- linux httpd 开机启动脚本,httpd服务如何开机启动
- w10电脑c盘满了怎么清理_快速清理:Win10系统C盘满了怎么办?
- GB35114---基于openssl加密库进行开发(二)
- C#生成与识别条形码、二维码示例 zxing、 barcodelib生成条形码 code128B等 无白边 自动宽度
- 电脑屏幕“重影”解决方法
- win10锁屏壁纸文件夹位置
- JavaSE Lambda 表达式
- Couldnot load Project The file couldn‘t be opened
- Learning Image Conditioned Label Space for Multilabel Classification