废话少说

从速卖通抓取了一些评论想进行一些简单的文本分析,但是因为速卖通是一个跨境电商平台,上边的评论基本都是小语种,对,小语种,俄语,法语...英语还可以勉强应付一下,但是其他真的是一个字母都不认识啊,所以我就想能不能用python解决这个问题。
知名的翻译(我听说的)就是谷歌,百度,有道,有道翻译英语还行,小语种效果太差了,直接放弃,经过对比百度和谷歌,准确率上还是谷歌更准确一点,毕竟谷歌搜索是全世界的人为其提供训练语料,而百度基本只有中国人在用。
但是,良心百度提供了翻译,而谷歌没有,哎没办法,只能爬了...

正文

首先用chrome打开谷歌搜翻译,看看它是怎么请求数据的
右键 检查 进入开发者工具
选择network,如图

image.png
先点击一下这个clear,把原来的请求都clear(当然是视觉上clear)

image.png
输入测试翻译内容

image.png
我们很快得到了翻译结果,同时得到了下面几个新的请求,那么返回的结果肯定在下面这几个请求,因为之前已经clear掉了,所以新的请求并不多(测试前,先clear,这个技巧很重要,特别是对于那种电商网站,请求分分钟几十上百,你不先clear掉的话,要找到猴年马月)Python入门到精通学习教程请加219再加上539然后519内有大量学习教程,欢迎大家加入

我们很快就可以发现是下面这个请求返回了翻译结果

image.png

image.png
通过请求头信息,可以发现是get请求,请求翻译的内容是通过q这个参数传递的,其它参数暂时不知道什么意思。然后,我们就可以用requests库模仿这个请求,看看能否成功。

import requests
res=requests.get('https://translate.google.cn/translate_a/single?client=t&sl=auto&tl=zh-CN&hl=zh-CN&dt=at&dt=bd&dt=ex&dt=ld&dt=md&dt=qca&dt=rw&dt=rm&dt=ss&dt=t&ie=UTF-8&oe=UTF-8&otf=1&ssel=0&tsel=0&kc=7&tk=272537.149261&q=oh%20shit')
print(res.text)

image.png

直接成功,谷歌翻译这么好爬的嘛?感觉不靠谱,把q后面的内容换成hello,果然不行了,报了403,服务器禁止了。哎,我还是太naive啊

image.png

那么,肯定请求参数里还有一些参数是实时根据内容变化的,很容易注意的tk这个参数。tk=272537.149261,一串数字,你在谷歌翻译里换其它字符串测试,就会发现其它参数基本都一样,只有这个tk不一样.但是呢?以我目前这个水平,是没有能力破解的,于是百度之。果然有大神已经破解了这个tk,但是因为tk的生成是js生成的,所以很多人直接选择了node.js来实现这个爬虫,但是我已经习惯了强大方便的python requests库,所以还是选择继续用python,找了很久才找到python 版本,现在分享出来。

import requests
import json
from bs4 import BeautifulSoup
import execjs #必须,需要先用pip 安装,用来执行js脚本
class Py4Js():     def __init__(self):  self.ctx = execjs.compile(""" function TL(a) { var k = ""; var b = 406644; var b1 = 3293161072;       var jd = "."; var $b = "+-a^+6"; var Zb = "+-3^+b+-f";    for (var e = [], f = 0, g = 0; g < a.length; g++) { var m = a.charCodeAt(g); 128 > m ? e[f++] = m : (2048 > m ? e[f++] = m >> 6 | 192 : (55296 == (m & 64512) && g + 1 < a.length && 56320 == (a.charCodeAt(g + 1) & 64512) ? (m = 65536 + ((m & 1023) << 10) + (a.charCodeAt(++g) & 1023), e[f++] = m >> 18 | 240, e[f++] = m >> 12 & 63 | 128) : e[f++] = m >> 12 | 224, e[f++] = m >> 6 & 63 | 128), e[f++] = m & 63 | 128) } a = b; for (f = 0; f < e.length; f++) a += e[f], a = RL(a, $b); a = RL(a, Zb); a ^= b1 || 0; 0 > a && (a = (a & 2147483647) + 2147483648); a %= 1E6; return a.toString() + jd + (a ^ b) };      function RL(a, b) { var t = "a"; var Yb = "+"; for (var c = 0; c < b.length - 2; c += 3) { var d = b.charAt(c + 2), d = d >= t ? d.charCodeAt(0) - 87 : Number(d), d = b.charAt(c + 1) == Yb ? a >>> d: a << d; a = b.charAt(c) == Yb ? a + d & 4294967295 : a ^ d } return a } """)            def getTk(self,text):  return self.ctx.call("TL",text)
def buildUrl(text,tk):baseUrl='https://translate.google.cn/translate_a/single'baseUrl+='?client=t&'baseUrl+='s1=auto&'baseUrl+='t1=zh-CN&'baseUrl+='h1=zh-CN&'baseUrl+='dt=at&'baseUrl+='dt=bd&'baseUrl+='dt=ex&'baseUrl+='dt=ld&'baseUrl+='dt=md&'baseUrl+='dt=qca&'baseUrl+='dt=rw&'baseUrl+='dt=rm&'baseUrl+='dt=ss&'baseUrl+='dt=t&'baseUrl+='ie=UTF-8&'baseUrl+='oe=UTF-8&'baseUrl+='otf=1&'baseUrl+='pc=1&'baseUrl+='ssel=0&'baseUrl+='tsel=0&'baseUrl+='kc=2&'baseUrl+='tk='+str(tk)+'&'baseUrl+='q='+textreturn baseUrl
def translate(text):header={'authority':'translate.google.cn','method':'GET','path':'','scheme':'https','accept':'*/*','accept-encoding':'gzip, deflate, br','accept-language':'zh-CN,zh;q=0.9','cookie':'','user-agent':'Mozilla/5.0 (Windows NT 10.0; WOW64)  AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.108 Safari/537.36',
'x-client-data':'CIa2yQEIpbbJAQjBtskBCPqcygEIqZ3KAQioo8oBGJGjygE='}url=buildUrl(text,js.getTk(text))res=''try:r=requests.get(url)result=json.loads(r.text)if result[7]!=None:# 如果我们文本输错,提示你是不是要找xxx的话,那么重新把xxx正确的翻译之后返回try:correctText=result[7][0].replace('<b><i>',' ').replace('</i></b>','')print(correctText)correctUrl=buildUrl(correctText,js.getTk(correctText))correctR=requests.get(correctUrl)newResult=json.loads(correctR.text)res=newResult[0][0][0]except Exception as e:print(e)res=result[0][0][0]else:res=result[0][0][0]except Exception as e:res=''print(url)print("翻译"+text+"失败")print("错误信息:")print(e)finally:return res
if __name__ == '__main__':js=Py4Js()res=translate('Всё качественно и быстро!')print(res)

最后

谷歌返回的结果是一个json格式的数据,我们将其变成一个嵌套的list,可以发现该list长度为9,第零个元素就是翻译结果,第七个结果是一些提示信息。如图

image.png

当有提示信息的时候,我们将正确的信息重新翻译一遍,返回。
其次翻译之前一定要先分句,因为我测试这样准确率更高一点,直接一段翻译有时候会面貌全非,但是分开一句句翻译,基本就是人话了。
我目前连续测试上千条语句还没有问题,但是速度有快有慢,而且有时候,如果数据量太大的话,可以采用每翻译一句sleep(1),或者使用代理IP

利用python调用谷歌翻译API相关推荐

  1. 转:利用python调用谷歌翻译API

    废话少说 从速卖通抓取了一些评论想进行一些简单的文本分析,但是因为速卖通是一个跨境电商平台,上边的评论基本都是小语种,对,小语种,俄语,法语...英语还可以勉强应付一下,但是其他真的是一个字母都不认识 ...

  2. Python 调用谷歌翻译(2021年3月测试可用)

    前言 把之前的用来谷歌翻译的Python文件整理了下, 用来处理翻译下i18n.js所需要的字典, 直接调用即可.2021年3月测试可用 (¦3[▓▓] 2021年9月17日 测试失效 请查看: Py ...

  3. python调用谷歌翻译英文文献pdf_Python 调用 Google Translate API 批量翻译文章

    有时候批量翻译中文文章,批量变成各个小语种的语言,手动的粘贴复制是非常慢的.需要调用翻译 API 接口,综合对比市面上的各个翻译 API,个人觉得 Google 的翻译 API 最为好用和准确. 下面 ...

  4. python调用百度翻译-Python 调用百度翻译API

    由于实习公司这边做的是日文app,有时要看看用户反馈,对于我这种五十音图都没记住的人,表示百度翻译确实还可以.但不想每次都复制粘贴啊,google被墙也是挺蛋疼的事,所以用python结合baidu ...

  5. node调用谷歌翻译Api,实现自动国际化

    原因: 项目国际化过程繁琐,每次都需要人工去google翻译,导致工作效率不高. 需求: 1.减少人工的重复劳动,提高工作效率. 2.使用脚本调用谷歌翻译接口自动化翻译. 3.free,作为程序员肯定 ...

  6. python调用百度翻译api+离线语种检测

    百度翻译api调用(具体参考的哪篇博文找不到了,好几篇太像了,原作者留意到可以告知我改转载附上链接): import urllib, hashlib import random import requ ...

  7. python调用谷歌翻译__201907

    2019年7月4日15:53:17(¦3[▓▓] 晚安 谷歌翻译环境 Python 3.6 第三方库 Execjs (pip install PyExecJS) 文件列表 同目录下的四个文件:- to ...

  8. python调用谷歌翻译Googletrans接口

    1. 使用场景 快速翻译一些爬取的英文文章或段落 2. pip install pip install googletrans 3. 调用 3.1 英译汉 from googletrans impor ...

  9. 利用Python调用pastebin.com API自动创建paste

    在上一篇文章中,已经实现了模拟pastebin.com的账号登录,并且获取了api_dev_key,这一篇文章主要讲一下调用API创建paste 登录之后,进入API页面,发现网站已经提供了几个API ...

  10. Python调用谷歌翻译接口

    安装 翻译 语法识别 语种缩略表示 官方文档 安装 pip install googletrans 翻译 from googletrans import Translator translator = ...

最新文章

  1. 关于Transformer,那些的你不知道的事
  2. 在JavaScript中逐个遍历数组?
  3. 利用Hadoop Streaming处理二进制格式文件
  4. 2021年全新各方向IT职业技能图谱
  5. pygame碰撞检测
  6. C++中private成员变量和protect成员变量的区别
  7. html之属性的定义
  8. 需求分析——识别系统需求中的三类事件
  9. spring中的单例和多例
  10. 视频分割修整功哪一款视频剪辑软件更好用?
  11. java使用elasticsearch进行模糊查询-已在项目中实际应用
  12. PHP+txt聊天室
  13. 如何正确的将拼多多的买家晒图采集并保存
  14. 固态硬盘启动计算机时间,固态硬盘如何做到10秒快速开机
  15. 最近项目上遇到的问题~
  16. 关于十二平均律及律学发展简史
  17. 在线购物系统 问题描述、词汇表、领域类图
  18. Mac OS Android Studio 启动模拟器失败
  19. 3D打印断电、断料续打,打印一半中断续打改代码,也适用于单喷头多色打印(用cura切片)
  20. 互联网移动支付存在的安全风险和对策

热门文章

  1. 解决360 安装补丁智能忽略的问题!
  2. 节后一起搞学习!聊一聊我在 B 站上自学编程的经历吧
  3. 计算机二级真题c.doc,2018计算机二级C语言考试真题试卷汇总.doc
  4. 关键词组合工具_凭技术做外贸:关键词优化的高效工具推荐
  5. 线性代数复盘 | 同济大学工程数学第六版第二章思维导图笔记——矩阵及其运算(复习专用)
  6. 软件开发人月成本估算方法
  7. WINRAR青绿色透明主题皮肤 Vista/win 7下效果极佳
  8. 人脸识别的人像处理流程是怎样的?
  9. Windows XP系统文件一一诠释(1)[最新整理](转BY wang6610----BBS.WUYOU.COM)
  10. CAD软件查看.dwg、.dxf、.dwf、.jpeg、.jpg、.png、.gif等文件