卓悦,没有人知道的创造行为,如果它已经启动Javascript蜘蛛的一种方式?
PHP代码:
file_get_contents("http://www.google.co.uk/search?hl=en&q=".$keyword."&start=".($x*10)."&sa=N")
它将检索页面的输出。 如果您使用PHP代码:
file_get_contents("http://www.facebook.com/something/something.something.php")
(im not sure i just know face book is a good example)
因为它是一个JavaScript运行的网站(不可访问),它将返回trhe输出,即时猜测将包括大致为“你必须启用JavaScript才能继续”线的东西。
编辑:PHP代码:刚才检查
$link = "http://www.facebook.com/index.php";
$contents = file_get_contents($link);
echo $contents;
返回:您正在使用的不兼容的Web浏览器。
对不起,没有足够的冷静来支持你的浏览器。 请与以下浏览器的一个真正保持它:
* Mozilla Firefox
* Safari
* Microsoft Internet Explorer
我通过所有上述浏览器测试?
显然,在这种特定的情况下,Facebook正在测试只针对HTTP标头“ User-Agent
”。
如果我使用这个代码部分,基于卷曲 ,这让我设置了很多optons,用curl_setopt
:
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "http://www.facebook.com/index.php");
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$html = curl_exec($ch);
curl_close($ch);
echo $html;
我得到同样的消息,你做的。
但是,如果我尝试发送一个User-Agent
对应于火狐(我只是复制粘贴了一个我真正的Firefox是实际发送):
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "http://www.facebook.com/index.php");
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1.3) Gecko/20090910 Ubuntu/9.04 (jaunty) Shiretoko/3.5.3");
$html = curl_exec($ch);
curl_close($ch);
echo $html;
我得到了真正的Facebook主页,不是不兼容的浏览器的错误信息。
当然,这不会解决的Javascript没有被执行的问题...
......但是,如果没有一个浏览器执行JavaScript是一个相当困难的事情(即使不是谷歌解决它^^)
有引擎,允许没有浏览器运行JavaScript代码(犀牛,例如;或SpiderMonkey的PECL扩展 ,PHP的); 但即使他们允许你运行JavaScript代码,你不会有所有的浏览器,在其网站依靠提供的环境和方法...
一个想法,如果你需要抓取一个JavaScript相关的网站,可能是使用硒 ,它会打开一个真正的浏览器(IE,火狐,或其他),从通过你的PHP代码controling它硒RC 。
但是,这意味着你必须有一个图形环境,以及一个浏览器,你的PHP的机器上; 这也是相当沉重和缓慢的 - 不仅仅是加载网页慢了许多^^