2015-07-12 52 views
3

我使用的file_get_contents,以找出是否有搜索的URL我看:的file_get_contents从谷歌获得不同的文件比显示在浏览器

http://www.google.com/search?q=*a*+site:www.reddit.com/r/+-inurl:(/shirt/|/related/|/domain/|/new/|/top/|/controversial/|/widget/|/buttons/|/about/|/duplicates/|dest=|/i18n)&num=1&sort=date-sdate

如果我去这个网址在浏览器中,显示不同的文件,然后我看到了什么,当我回声file_get_contents

$url = "http://www.google.com/search?q=*a*+site:www.reddit.com/r/+-inurl:(/shirt/|/related/|/domain/|/new/|/top/|/controversial/|/widget/|/buttons/|/about/|/duplicates/|dest=|/i18n)&num=1&sort=date-sdate"; 
$google_search = file_get_contents($url); 

这有什么错我的代码?

回答

2

没什么。问题在于页面使用javascript和ajax来获取内容。因此,为了获得页面的“快照”,您需要“运行它”。也就是说,你需要解析JavaScript代码,哪个php不行。

最好的办法是使用像幻影这样的无头浏览器。如果你搜索,你会发现一些教程解释如何做到这一点

注意

如果你正在寻找的是检索从搜索原始数据的方式,你可能想尝试使用google's search api

0

我认为谷歌肯定会检查用户代理以避免任何类型的自动搜索。

因此,您至少应该使用CURL并定义一个适当的用户代理字符串(即与普通浏览器相同)以“欺骗”Google。

不知怎的,我担心它不会那么容易欺骗谷歌,但也许我只是偏执狂,至少你可能会学到一些关于CURL的知识。