每一个人。 我想写一个bash脚本来使用terminal的谷歌翻译,并把英文翻译成中文。 我的计划是先用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/#en/zh-CN/hello | gunzip > out.html
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/#en/zh-CN/hello | 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 。 这是因为散列之后的部分没有被发送到服务器,只能被浏览器使用。 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翻译API来避免陷入麻烦。 谷歌监控使用情况,并将绝对检测到任何滥用其服务的企图。
PS:我没有资格提供法律意见,而我上面写的关于我认为是“不滥用服务”的内容是100%的个人意见,所以请不要把它当作最后的说法。
您无权提出这些请求。 Google翻译服务有一个您必须付费的API 。 如果我使用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>