google的翻译不得不承认它是比较好的。但是google翻译对外提供的翻译接口都是收钱的,做为一名普普通通的开发者,囊中羞涩,因此就需要借助技术的力量来完成免费的翻译接口的调用。
git
首先在github上我们找到了这篇链接 https://github.com/ssut/py-googletrans
看介绍免费、无限制,这刚好适合我们来用。于是按照它的操作步骤我们来试试:
由于它是python的,因此第一步是去下载它的python库,由于我没有配置python pip的环境变量,因此我手动进入这个目录下:
然后运行 pip install googletrans 这个命令,去下载提供的这个库。
这个时候出错,提示我们没有requests库,因此我们还需要在安装requests库。果然文档里也有些
因此我们就安装把
安装完后再安装googletrans 就可以了:
这个时候我们调用它API提供的方法试试,代码如下:
#-*- coding:utf-8 -*- from googletrans import Translator import sys reload(sys) sys.setdefaultencoding( "utf-8" ) translator = Translator() print translator.translate(‘今天天气不错‘).text print translator.translate(‘今天天气不错‘, dest=‘ja‘).text print translator.translate(‘今天天气不错‘, dest=‘ko‘).text
这个时候就可以看到输出结果:
the weather is nice today 今日天気がいいです ?? ??? ??
一个简单的翻译demo就实现了。是不是非常的简单
然而,这个库并不是google官方提供的,并且有的时候这个库也是不稳定的,,因为我决定自己去趟一下这趟浑水。
第一步当然是抓取它的请求,看看它是怎么请求的。按下F12进入浏览器调试模式,眼睛盯紧network:
接着我们输入一句话,看看它会产生什么消息包。
居然有这么多的消息包,我们一个一个找,直到找到Response中有翻译内容的。这个时候我们去看一下它的header:
可以看到是get方式,于是我们可以浏览器里直接去请求这个url。
果然我们的得到了一个文件,这个时候打开文件,文件里就是请求回来的翻译结果:
这时候我们去分析一下请求的参数,看看我们是否可以构造,可以看到原来要翻译的文本,就是跟着q这个参数出去的:
只不过在请求的时候,文字被encode成了%**%**,这时候我们试着换一个文字去请求,结果发现返回:
仔细上网查过之后,每次翻译的文字不同,参数中的tk值就会不同,ticket这种策略就是google用来防爬虫的。
tk和文字以及TKK有关,TKK也是实时变化的,具体怎么拿到是在 translate.google.cn 这个网页源代码中有一段js代码:
我们直接运行这段js,会得到一个值,这个值就是 TKK值:
那么如果根据TKK和文本算出tk值呢,网上有大神已经实现了js的代码,直接拿过来用了: