php爬网-启用javascript

php爬网-启用javascript,php,web-crawler,Php,Web Crawler,大家好,有没有人知道一种创建spider的方法,就像启用了javascript一样 PHP代码: file_get_contents("http://www.google.co.uk/search?hl=en&q=".$keyword."&start=".($x*10)."&sa=N") file_get_contents("http://www.facebook.com/something/something.something.php") (im not sur

大家好,有没有人知道一种创建spider的方法,就像启用了javascript一样

PHP代码:

file_get_contents("http://www.google.co.uk/search?hl=en&q=".$keyword."&start=".($x*10)."&sa=N") 
file_get_contents("http://www.facebook.com/something/something.something.php") 
(im not sure i just know face book is a good example)
它将检索该页面的输出。 如果你用, PHP代码:

file_get_contents("http://www.facebook.com/something/something.something.php") 
(im not sure i just know face book is a good example)
它将返回trhe输出,我猜这将包括“必须启用javascript才能继续”这样的内容,因为它是一个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头“
用户代理”

如果我正在使用这部分代码,基于,它允许我设置许多光电管,使用:

我得到的信息和你一样


但是,如果我尝试发送与Firefox对应的
用户代理
(我只是复制粘贴了我真正的Firefox实际发送的代理):

我得到的是真实的Facebook主页,而不是关于不兼容浏览器的错误消息


当然,这并不能解决Javascript无法执行的问题

。。。但是在没有浏览器的情况下执行Javascript是一件相当困难的事情(甚至连谷歌都没有解决它^^)

有一些引擎允许在没有浏览器的情况下运行Javascript代码(例如rhino;或者PHP);但是,即使它们允许您运行Javascript代码,您也不会拥有浏览器提供的所有环境和方法,而这些正是网站所依赖的


如果您需要对依赖Javascript的网站进行爬网,可以使用它打开一个真正的浏览器(ie、firefox或其他),通过PHP代码对其进行控制

但这意味着您必须在PHP机器上有一个图形环境和一个浏览器;这也是相当沉重和缓慢的-比只加载网页慢得多^^

$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;