Linux 使用wget获取googletranslate的结果

Linux 使用wget获取googletranslate的结果,linux,bash,wget,Linux,Bash,Wget,大家好。我想写一个bash脚本,使用终端上的谷歌翻译,将英文翻译成中文。我的计划是先用wget翻译英语,然后用sed得到结果。因此我使用 wget-qO----header=“接受:text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8”--header=“接受字符集:GBK,utf-8;q=0.7,*;q=0.3”--header=“接受编码:gzip,deflate,sdch”--header=“接受语言:en-US,e

大家好。我想写一个bash脚本,使用终端上的谷歌翻译,将英文翻译成中文。我的计划是先用wget翻译英语,然后用sed得到结果。因此我使用
wget-qO----header=“接受:text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8”--header=“接受字符集:GBK,utf-8;q=0.7,*;q=0.3”--header=“接受编码:gzip,deflate,sdch”--header=“接受语言:en-US,en;q=0.8,zh-CN;q=0.6,zh;q=0.4“-U”Mozilla/5.0(X11;Linux i686)applewkit/536.11(如gekhtmo)Chrome/20.0.1132.27 Safari/536.11“http://translate.google.cn/#en/zh-CN/hello | gunzip>out.html

我还尝试了
wget-U“Mozilla/5.0”http://translate.google.cn/#en/zh-CN/你好

它们的结果似乎都不是我想要的,因为我找不到
你好来自结果的中文版本。

我有什么问题吗?

你无权提出这些请求。谷歌翻译服务有一个你必须付费的网站。如果我使用
curl
尝试您的请求,我会得到如下结果:

<!-- Headers... -->
<ins>That’s an error.</ins>
<p>Your client does not have permission to get URL <code>/</code> from this server.
(Client IP address: xx.xxx.xx.xx)<br><br>


<ins>That’s all we know.</ins>

你做错了的是,你实际上只是从服务器上请求,而不是。这是因为它不会被发送到服务器,只被浏览器使用。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恶意之外的任何事情,您应该(并且可能必须)使用,以避免陷入麻烦。谷歌监控用户的使用情况,并绝对会发现任何滥用其服务的企图


P.P.S:我没有资格提出法律意见,我上面写的关于我认为“不滥用服务”的意见是100%个人的意见,所以请不要把它当作最后的发言权。

使用它,另一个你不应该使用这个方法的原因是,很明显,服务的内部工作方式可能会发生变化,您永远不知道shell脚本何时会停止工作。谢谢您的回答。我只是想训练我写bash脚本的技巧。这有一些问题,例如:如果我想翻译
谢谢
,如果我只是替换
中的
你好
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
使用
谢谢
,它将响应错误400,我如何解决这个问题?错误是因为URL中有一个空格,必须对其进行编码。谷歌网址编码,或阅读以了解更多信息。对不起,我按了回车键,评论在我完成之前就发布了。但基本上,您应该将所有空格替换为
%20
,例如
您是受欢迎的
将是
您是受欢迎的