2015-05-16 114 views
1

我想要使用simple_html_dom在google translate编号为result_box的div的内容,但它不返回任何内容。我试图返回另一个div的内容,它的工作完美。看起来问题就在于那个div。
result_box是翻译将出现在的div。获取谷歌翻译div的内容在谷歌翻译不起作用

这里是我的代码

$googleSearch="the contente i want to translate"; 
$googlePage="https://translate.google.com/#en/ar/$googleSearch"; 

$Chtml = file_get_html($googlePage); 
$gt = $Chtml->find('#result_box ',0)->plaintext; 
echo '<br>'.$gt.'<br>'; 

可能是什么原因?我该如何解决它?
如果这不能用simple html dom完成,有没有其他方法可以做到这一点?

请注意,我不希望使用谷歌翻译API

+1

你不能得到这个信息这种方式。如果您在浏览器中使用调试器,则会看到从https://translate.google.com/#en/ar/$googleSearch网址获得的html会返回空的result_box。 result_box稍后将从AJAX调用中填充。 – axxis

+0

@axxis所以我需要找到AJAX调用并打印它在我的PHP脚本? –

+1

我想是的。当然,谷歌翻译使用的JavaScript是压缩的,所以它不会那么容易。我在浏览器的调试器中看到,在请求主页之后,有一个单独的请求:https://translate.google.com/translate_a/single?client=t&sl=en&tl=ar&hl=zh-CN&dt=bd&dt=ex&dt= ld&dt = md&dt = qca&dt = rw&dt = rm&dt = ss&dt = t&dt = at&ie = UTF-8&oe = UTF-8&source = bh&ssel = 0&tsel = 0&kc = 1&tk = 521168 | 823703&q = $ googleSearch并返回带翻译的JSON文件。 – axxis

回答

0

result_box元素没有任何明文:

<div style="zoom:1" dir="ltr"> 
    <div id="tts_button"> 
    <span id="result_box" class="short_text" lang="en"> 
     <span class="hps">spring</span> 
    </span> 
</div> 

我不知道是什么$Chtml->find('#result_box',0)做,但可能你需要迭代到下一个<span>并从那里获取文本

编辑

而且,我不知道是否尾随在Id空白可能会阻止simple_hmtl_dom从寻找什么:

$Chtml->find('#result_box ',0)$Chtml->find('#result_box',0)

+0

'$ Chtml-> find('#result_box',0) - > plaintext'返回div'result_box'内的所有纯文本,它也包含该div内所有标记内的纯文本。 –