文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

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

2024-12-11 19:18

关注

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

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

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

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

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

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

说干就干!

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

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

开发思路

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

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

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

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

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

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

  1.  # 网址和表单  
  2. url'https://fanyi.baidu.com/sug'  
  3. Form_data = {'kw': word}  
  4. # post方式请求网站  
  5. response = requests.post(url, data = Form_data,headersheaders=headers)  

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

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

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

  1. result = content['data'][0]['v']   # 获取翻译结果  
  2. return result  

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

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

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

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

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

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

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

使用方法

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

  1. pip install quicktranslate 

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

  1. trans -t 你要翻译的东西 

示例: 

  1. $ trans -t 你好  
  2. =========================  
  3. youdao translate result:hello  
  4. baidu translate result:[nǐ hǎo] how do you do; how are you; hello;  
  5. =========================  
  6. $ trans -t 你好 -g  
  7. =========================  
  8. youdao translate result:hello  
  9. baidu translate result:[nǐ hǎo] how do you do; how are you; hello;  
  10. google translate result:Hello there  
  11. =========================  

本案例完整代码: https://github.com/pynickle/a... pip安装命令: pip install quicktranslate 

 

来源:segmentfault内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯