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

[IT科技类资讯] 时间:2025-11-05 14:00:34 来源:益强IT技术网 作者:域名 点击:135次

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

本文就来自编程教室一位“小”读者的个简工具投稿(互助学习1群里的同学应该对作者的名字很熟悉吧)。我看着他不停地产出新的翻译代码和技术文章,不禁感叹“后生可畏”。个简工具

这是翻译一个爬虫基础分析和操作的开发案例,在此分享给大家。个简工具

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

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

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

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

说干就干!

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

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

开发思路

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

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

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

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

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

在 Form Data 中,我们看见表单是一个字典: {kw: save} ,这里 save 是我们自己输入的,也就是b2b信息网我们要查询的单词,因此我们使用 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 

(责任编辑:IT科技)

    用积木制作平板电脑(轻松学习如何用积木制作自己的平板电脑)ubuntu安装和配置SVN第一步:安装apache2  libapache2-svn subversion复制代码代码如下:复制代码代码如下:复制代码代码如下:apt-get install subversion2. 建立svn仓库1). 建立svn目录:mkdir /home/.svn(使用隐藏目录)2). cd /home/.svn    3). mkdir astar4). 创建仓库astar:svnadmin create /home/.svn/astar,执行完毕后astar目录有svnadmin创建的目录和文件5). mkdir test6). 创建仓库test:svnadmin create /home/.svn/test,执行完毕后test目录有svnadmin创建的目录和文件3. 配置和管理svn1). 每个仓库的配置文件在$repos/conf/下,vi svnserve.conf,配置项在[general]下:anon-access:匿名用户的权限,可以为read,write和none,默认值read。不允许匿名用户访问:anon-access = noneauth-access:认证用户的权限,可以为read,write和none,默认值write。password-db:密码数据库的路径,去掉前边的#authz-db:认证规则库的路径,去掉前边的#。注意:这些配置项的行都要顶格,否则会报错。修改配置后需要重启svn才能生效。2). 配置passwd文件这是每个用户的密码文件,比较简单,就是“用户名=密码”,采用的是明码。如allen=1111113). 配置authz文件1. [groups] section:为了便于管理,可以将一些用户放到一个组里边,比如:owner=allen,ellen2. groups下边的sections表示对一个目录的认证规则,比如对根目录的认证规则的section为[/]。设置单用户的认证规则时一个用户一行,如:  [/]      allen=rw  #allen对根目录的权限为rw  ellen=r    #ellen对根目录的权限为r  假如使用group,需要在group名字前加@,如  @owner=rw  #group owner中的用户均为rw,等价于上边的两句话启动时假如从/home/.svn/astar启动,/就是astar目录,用如上方式以astar目录为根设置权限。假如从/home/.svn/启动,每个仓库根还是自己的起始目录。可以采用如上方式设置astar的权限,也可以采用如下方式:  [astar:/]  @owner=rw设置test的权限如下:  [test:/]  @harry_and_sally = rw简言之,每个仓库的根目录(/)就是自己的起始目录;[repos:/]这种方式只适用于多仓库的情况;[/]适合于单仓库和单仓库的方式。3. 不能跨越仓库设置权限。4. 启动和停止svn    1). 启动:1. 从astar目录启动,svnserve -d -r /home/.svn/astar,根目录(/)是astar,authz中规则的配置使用section[/]。访问方式为:  svn://192.168.0.87/2. 从.svn目录启动,svnserve -d -r /home/.svn,根目录(/)是.svn,authz中对astar的配置使用section[astar:/] ,对test的配置使用section[test:/]。访问方式为:  svn://192.18.0.87/astar  svn://192.18.0.87/test假如需要svn自启动,把命令加入/etc/rc.local中2). 检查svn服务器是否已经启动(svn默认使用3690端口):netstat -an | grep 36903). 停止:killall svnserve5. svn client推荐使用TortoiseSVN, http://tortoisesvn.tigris.org/Eclipse插件,http://subclipse.tigris.org/作者 t80t90s
    相关内容
    精彩推荐
    热门点击
    友情链接