我试着从Linux终端cURL读取谷歌翻译的数据:
curl -i --user-agent "" -d "sl=en" -d "tl=sk" --data-urlencode "text=hi" https://translate.google.com它返回了整个页面,在那里我可以看到翻译结果。结果在一个HTML元素中。但是当我尝试用PHP的cURL时,它没有输出相同的超文本标记语言,我也找不到翻译结果。
$data = [
"sl" => "en",
"tl" => "sk",
"text" => urlencode("hi");
];
$ch = curl_init();
curl_setopt($ch,CURLOPT_URL, "https://translate.google.com");
curl_setopt($ch,CURLOPT_POST, count($data));
curl_setopt($ch,CURLOPT_POSTFIELDS, $data);
curl_setopt($ch,CURLOPT_HEADER, true);
curl_setopt($ch,CURLOPT_USERAGENT, "");
curl_exec($ch);谢谢你的帮助,我怎样才能在PHP中返回和Linux cURL中相同的结果呢?
发布于 2014-07-21 16:26:57
使用$response = curl_exec($ch);
$data = [
"sl" => "en",
"tl" => "sk",
"text" => urlencode("hi")
];
$ch = curl_init();
curl_setopt($ch,CURLOPT_URL, "https://translate.google.com");
curl_setopt($ch,CURLOPT_POST, true);
curl_setopt($ch,CURLOPT_POSTFIELDS, $data);
curl_setopt($ch,CURLOPT_HEADER, true);
curl_setopt($ch,CURLOPT_USERAGENT, "");
$respond = curl_exec($ch);
echo $respond;
curl_close($ch);发布于 2014-07-21 17:48:31
如果您只是在寻找翻译结果,那么您所需要做的就是使用google translate API,该API使用起来非常简单。
http://translate.google.com/translate_a/t?client=t&text=Hello&hl=en&sl=en&tl=sk&multires=1&otf=2&pc=1&ssel=0&tsel=0&sc=1
此API将返回一个txt文件,您可以在PHP中读取该文件,并从中获取翻译后的结果。
如果你看一下translate.google.com的源代码,你可以在那里找到:
f.src=c;该c是javascript的源代码。现在c被隐藏在源代码中,这很难理解,而且可能会花费很多时间。在google.translate.com上返回的数据显然是通过一个Ajax请求来的,这个请求可能是在某个不能直接查看的javascript文件中,它可以是f.src=c;,也可以是其他文件。因此,在页面translate.google.com上没有直接的结果或翻译,因此PHP的curl不会从该页面获得翻译,因为该页面上的翻译是通过来自其他地方的ajax请求来的(而其他地方是我上面提到的google API ),该页面上没有实际的翻译,您可以直接将其作为字符串读取。
https://stackoverflow.com/questions/24860543
复制相似问题