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

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

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

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

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

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

说干就干!

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

dfb7c591b419f8a16025088739ecc9ad.png

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

开发思路

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

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

8de262081fa65260721d80ffc24e8cf2.png

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

9c8e13c99c985247f71156f7093cea19.png

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

ea8c22c06b7ee6c0ee69230fc33ee21e.png

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

33a49b95f27d7467b14d41fe2a80ba1f.png

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,headers=headers)

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

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

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

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

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

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

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

f7834c50e93cb99ed6b29b77ce0592e2.png

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

f67a508e07478032ebd581d43148bcd7.png

我们回到之前的 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
=========================

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

作者:pynickle

------

一起学,走得远!

欢迎搜索:Crossin的编程教室

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/528111.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

echarts柱图根据值显示不同颜色_视频 | Origin画3D柱图,这篇讲透了!

视频教程东华大学的汪博士提出一个问题:怎样画三维柱状图。汪博士提供了一篇王中林院士的文献图,画一个只有四根柱子的三维柱图。画了一个草图,A0、A1安排在第二行,A3、A2安排在第一行。相信很多同学在画3D柱图时,都很…

按钮点击打开新页面_PDF怎么打开?如何制作一个PDF格式的文档?

不知你是否也一样,无论是在网上下载资料还是其他人发送的文件都是PDF格式的。但是应该如何打开PDF文件呢?如何自己制作一个PDF格式的文档呢?首先说一下如何打开PDF格式的文件,电脑端就比较简单的,直接下载PDF阅读器后&…

android 根据bounds坐标进行点击操作_炫酷的Android时钟UI控件,隔壁产品都馋哭了...

废话不多说,先上效果效果酷炫,动画丰富,效果爆炸boom~设计思路看腻了市面上各种丑陋难看的时钟控件,是时候整点新活!将现实生活中的摆钟圆形表盘设计、电子手表的数显表盘设计抽象出来,提取出“…

打了断点为直接运行完_BBC主持人多次打断,香港大律师忍不住发飙

来源:环球网7月7日,香港资深大律师汤家骅就香港《国安法》相关内容接受BBC栏目《唇枪舌剑》(HARDtalk)采访。节目主持人斯蒂芬•萨克在整个访问过程中频频打断汤家骅,根本不让汤家骅回答完问题。视频显示,汤家骅多次试图向萨克解释《国安法》…

指针 是否相同_算法一招鲜——双指针问题

什么是双指针(对撞指针、快慢指针)双指针,指的是在遍历对象的过程中,不是普通的使用单个指针进行访问,而是使用两个相同方向(快慢指针)或者相反方向(对撞指针)的指针进行…

作为神经网络的输入_MATLAB实战|基于神经网络河南省降水量预测

1 BP神经网络结构神经网络旨在通过模仿动物的神经系统利用神经元作为连接结点的新型智能算法,神经网络本身包含三层结构,输入层,隐含层,输出层,每一层都有自己的特殊功能,输入层进行因子的输入与处理。由于…

docker kafka互通有问题_Docker搭建kafka集群

拉取镜像docker pull wurstmeister/kafka docker pull wurstmeister/zookeeper启动镜像docker run --name zookeeper -p 12181:2181 -d wurstmeister/zookeeper:latestdocker run -p 19092:9092 --name kafka1 -d -e KAFKA_BROKER_ID0 -e KAFKA_ZOOKEEPER_CONNECT宿主机ip:1218…

elementui 上传七牛_element ui使用上传组件上传文件到七牛(qiniu-js)

博主正在重构博客中,刚开始时静态资源都是上传到本地服务器的,但这个项目博主最后打算真正上线运营的。索性就改进了下,把静态资源尽量放到云存储中,方便后续开发。这里把方法和遇到坑给记录下。1.使用前提注册七牛云并创建存储空…

bool类型0和1真假_MySQL整理5—数据类型和运算符

数据科学探路者:MySQL整理4—数据表的基本操作2​zhuanlan.zhihu.com一、数据类型数据科学探路者:MySQL知识整理1—数据库基础​zhuanlan.zhihu.com在上面链接的部分内容中,介绍了以下数据类型:整数类型:BIT、BOOL、TI…

linux启动mysql1820_linux 系统下MySQL5.7重置root密码(完整版,含ERROR 1820 (HY000)解决方案)...

mysql的root密码忘记了怎么重置?往下看:1.保证你的mysql服务处于关闭状态。(用ps -ef | grep mysql 查看进程,有则kill -9 进程号)2.在my.cnf所在目录中执行 vim my.cnf3.在[mysqld] 后边加入skip-grant-tables如图:并保存。4.启动…

mysql谓词演算_MySQL基础知识

一、了解MySQL1、什么是数据库?数据库是一种以某种有组织的方式存储的数据集合。2、模式(schema):关于数据库和表的布局及特性的信息。3、列:正确的将数据分解为多个列极为重要。通过把它分解开,才有可能利用特定的列对数据进行排序和过滤。4…

mysql+缓冲池脏块率高_什么是数据库的 “缓存池” ?(万字干货)

原标题:什么是数据库的 “缓存池” ?(万字干货)1、Buffer Pool 概述Buffer Pool 是什么?从字面上看是 缓存池 的意思,没错,它其实也就是 缓存池 的意思。它是 MySQL 当中至关重要的一个组件,可以这么说&…

mysql多实例配置安装_MySQL多实例安装配置方案

一.基本概念MySQL多实例就是,在一台机器上开启多个不同的服务端口(如:3306,3307,3308...),运行多个MySQL服务进程,这些服务进程通过不同的socket监听不同的端口提供服务。MySQL可以共用一套安全程序,使用不同的my.cnf配…

java趣味_Java趣味分享:try finally

考虑以下四个测试方法,它们会输出什么?public class Test {public static void main(String\[\] args) {System.out.println(test1());System.out.println(test2());System.out.println(test3());System.out.println(test4());}private static int test1…

java 纯面向对象_Java到底是不是一种纯面向对象语言?

原标题:Java到底是不是一种纯面向对象语言?Java——是否确实的 “纯面向对象”?让我们深入到Java的世界,试图来证实它。在我刚开始学习 Java 的前面几年,我从书本里知道了 Java 是遵循 “面向对象编程范式(Object Orie…

java爬虫post 404_POST 后台404错误

今天在开发一个用户信息更新模块的时候遇到了两个问题:1、在我提交form表单的时候我希望在提交表单之后页面不刷新,同时返回更新数据2、向后台POST表单信息的时候,后台显示POST url 404的错误解决第一个问题的使用使用jquery.form的插件进行异…

java防止重复启动bat_java调用exe,及调用bat不成功的解决办法

开门见山的说,文件目录如下想调用123.exe,但是尝试了几次调用不到,然后写了个bat。初始内容如下echo offD:cd test"123.exe"双击可以运行,但是java代码无法调用,怪事。于是,辗转反侧,苦思冥想&am…

java8.0 platform图_Java Platform SE binary语言-Java编程32位/64位版(jdk-jeb)下载V8.0.2510.8官方安装版-西西软件下载...

Java编程32位/64位版(jdk-jeb)是一款功能强大的计算机编程语言工具,Java技术让您可以在安全的计算环境下工作和游戏。使用 Java您可以畅玩网络游戏、与世界各地的朋友聊天、计算按揭利息,还可以在 3D 模式下浏览图像,诸多功能不一而足。软件特…

java 线程由浅入深_由浅入深,Java 并发编程中的 Synchronized(一)

synchronized 作用synchronized 关键字是 Java 并发编程中线程同步的常用手段之一。1.1 作用:确保线程互斥的访问同步代,锁自动释放,多个线程操作同个代码块或函数必须排队获得锁,保证共享变量的修改能够及时可见,获得…

php有哪些高级扩展,php扩展有哪些

什么是PHP扩展?为PHP提供一些扩展的功能常见的PHP扩展mysql-----提供给PHP操作MySQL数据库的功能gd2----动态创建图像xdebug-----跟踪、调试和分析PHP程序的运行状况查看PHP扩展1.使用phpinfo探针phpinfo()---输出关于PHP配置的信息输出PHP当前状态的大量信息&#…