linux - 使用wget获取谷歌翻译的结果

标签 linux bash wget

各位。我想写一个 bash 脚本来使用来自终端的谷歌翻译并将英文翻译成中文。我的计划是先用wget翻译英文,再用sed得到结果。所以我用
wget -qO- --header="Accept:text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"--header="Accept-Charset:GBK ,utf-8;q=0.7,*;q=0.3"--header="Accept-Encoding:gzip,deflate,sdch"--header="Accept-Language:en-US,en;q=0.8,zh -CN;q=0.6,zh;q=0.4"-U "Mozilla/5.0 (X11; Linux i686) AppleWebKit/536.11 (KHTML, like Gecko) Chrome/20.0.1132.27 Safari/536.11"http://translate.google .cn/#zh-CN/你好 | gunzip > out.html.
我也刚刚尝试了 wget -U "Mozilla/5.0"http://translate.google.cn/#en/zh-CN/hello
两者的结果似乎都不是我想要的,因为我无法从结果中找到中文的你好
我有什么问题吗?

最佳答案

你做错的是你实际上只是在请求 http://translate.google.cn/来自服务器而不是 http://translate.google.cn/#en/zh-CN/hello .这是因为 the part after the hash不会发送到服务器,只能由浏览器使用。 Google 使用此部分使用 Javascript 发出翻译请求。

要获得翻译,您需要向该页面上的 Javascript 使用的 URL 发出请求。这样的事情会起作用:

curl -A "Mozilla/5.0" 'http://translate.google.com/translate_a/t?client=t&text=hello&hl=en&sl=en&tl=zh-CN&ie=UTF-8&oe=UTF-8&multires=1&prev=btn&ssel=0&tsel=0&sc=1'

前面的命令会打印出如下结果:

[[["你好","hello","Nǐ hǎo",""]],[["interjection",["喂"],[["喂",["hello","hey"],,0.0087879393]]]],"en",,[["你好",[5],0,0,1000,0,1,0]],[["hello",4,,,""],["hello",5,[["你好",1000,0,0],["招呼",0,0,0],["打招呼",0,0,0],["个招呼",0,0,0],["喂",0,0,0]],[[0,5]],"hello"]],,,[["en"]],6]

然后您可以使用 sed 获得如下结果:

curl -A "Mozilla/5.0" 'http://translate.google.com/translate_a/t?client=t&text=hello&hl=en&sl=en&tl=zh-CN&ie=UTF-8&oe=UTF-8&multires=1&prev=btn&ssel=0&tsel=0&sc=1' | sed 's/\[\[\["\([^"]*\).*/\1/'

但是,正如其他人所提到的,您不应该使用它来滥用翻译服务,对于超出实验或 CLI-badassery 的任何事情,您应该(并且可能不得不)使用 Google Translate API以免给自己惹上麻烦。 Google 会监控使用情况,并且肯定会检测到任何滥用其服务的企图。

P.S:本人没有资格提供法律意见,以上所写的关于我认为“不滥用服务”的内容,100%为个人意见,请勿以此作为最终发言权

关于linux - 使用wget获取谷歌翻译的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15172690/

相关文章:

c - 子进程写完 FIFO 后,父进程如何读取 FIFO?

linux - 如何从文件的每一行中提取具有特殊字符的特定字符串

linux - 基本 HTTP 身份验证 - 带 Cookie 的 wget

curl - httrack wget curl 抓取和获取

xml - 使用 sed 创建 XML 数组

linux - 需要删除特定 block

java - 无法在Linux上为Java程序正确设置PATH变量

Linux "echo -n"未被刷新

linux - 来自文件的 Zenity Bash 列表

linux - wget 从 ftp 中选择样本?