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

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

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

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

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

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

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

说干就干!

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

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

开发思路

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

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

【责任编辑:庞桂玉 TEL:(010)68476606】

点赞 0

python制作查询工具发给别人使用_用Python做一个简单的翻译工具相关推荐

  1. python制作查询工具发给别人使用_用Python制作天气查询软件

    这是小王推荐的第2篇好文 作者:flywind 程序介绍 先上图让大家感受一下 又来一波Python的骚操作,使用PyQt5和爬虫做一个天气查询软件,具体效果上图中很清楚的能够展示出来.UI使用PyQ ...

  2. 用html5做一个简单网页_用Python做一个简单的翻译工具

    编程本身是跟年龄无关的一件事,不论你现在是十四五岁,还是四五十岁,如果你热爱它,并且愿意持续投入其中,必定会有所收获. 本文就来自编程教室一位"小"读者的投稿(互助学习1群里的同学 ...

  3. 用python做简单的地理聚类分析案例_用Python做一个简单的翻译工具

    编程本身是跟年龄无关的一件事,不论你现在是十四五岁,还是四五十岁,如果你热爱它,并且愿意持续投入其中,必定会有所收获. 本文就来自编程教室一位"小"读者的投稿(互助学习1群里的同学 ...

  4. python的翻译-用Python做一个简单的翻译工具

    编程本身是跟年龄无关的一件事,不论你现在是十四五岁,还是四五十岁,如果你热爱它,并且愿意持续投入其中,必定会有所收获. 本文就来自编程教室一位"小"读者的投稿(互助学习1群里的同学 ...

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

    编程本身是跟年龄无关的一件事,不论你现在是十四五岁,还是四五十岁,如果你热爱它,并且愿意持续投入其中,必定会有所收获. 很多人学习python,不知道从何学起. 很多人学习python,掌握了基本语法 ...

  6. python翻译-用Python做一个简单的翻译工具

    编程本身是跟年龄无关的一件事,不论你现在是十四五岁,还是四五十岁,如果你热爱它,并且愿意持续投入其中,必定会有所收获. 本文就来自编程教室一位"小"读者的投稿(互助学习1群里的同学 ...

  7. 如何用 Python 做一个简单的翻译工具?

    前言 平时经常在网上翻译一些单词,突发奇想,可不可以直接调某些免费翻译网站的接口呢?然后做一个图形界面的翻译小工具?下面开始实践 (文末送读者福利) 1.先找一下有哪些免费翻译的接口 百度了一下关键字 ...

  8. 开始做一个简单的记账工具

    用VScode做一个简单的记账工具 内容保存在 https://leonchan0608.coding.net/public/bookkeeping/bookkeeping/git 下班学习,奋斗一年 ...

  9. python七彩同心圆_用pygame做一个简单的python小游戏---七彩同心圆

    用pygame做一个简单的python小游戏---七彩同心圆 用pygame做一个简单的python小游戏-七彩同心圆 这个小游戏原是我同学python课的课后作业,并不是很难,就简单实现了一下,顺便 ...

最新文章

  1. 从find_vma和find_vma_prev看内核
  2. 百度分布式配置中心BRCC正式开源
  3. mac linux netstat -n
  4. tomcat 绑定 ip 及域名,限制非法域名访问
  5. python实现表格线性回归_Python实现线性回归
  6. 学习OpenVINO笔记之Inference Engine
  7. 关于Python,虚拟环境和Visual Studio Code集成的说明
  8. SourceTree 免注册
  9. three几何线在mapbox地图显示
  10. 【EF】EF框架 Code First Fluent API
  11. 用 Python 爬取网易严选妹子内衣信息,探究妹纸们的偏好
  12. arcmap怎么保存相对路径_如何将arcgis的mxd文档存储为相对路径
  13. int、time和timestamp区别
  14. 2021牛客多校1 H hashfunction FTT/NTT,数论
  15. python在excel中数据画线_python中操作excel数据
  16. 不写一行代码,也能解释XML,因为是JAVA
  17. ​力扣解法汇总648-单词替换
  18. 微服务网关soul,这篇值得你拥有
  19. spss中如何处理极端值、错误值
  20. java反编译工具(class转java)

热门文章

  1. 坐标轨迹计算_机器人的轨迹规划与自动导引
  2. unity3d 求两个点长度_用Scratch3.0模拟求π的近似值(二) #寻找真知派#
  3. ubuntu mysql 5.7 远程_ubuntu16.0.4安装mysql5.7以及设置远程访问
  4. 哈工大威海算法设计与分析_【斯坦福算法分析和设计02】渐进分析
  5. 3d模型多怎么优化_3D打印人像模型是怎么制作出来的呢?
  6. java第七章jdbc课后简答题_java学习路线流程
  7. spring boot controller 初始化_基于 tyboot 快速初始化 springboot 单体项目
  8. python多进程线程学习_python进程、线程的学习心得
  9. android显示多个网络图片不显示,Android显示网络图片实例
  10. 集合詳細學習 包括Vector ArrayList List等等的比較與實例