我正在使用php file_get_contents函数从pinterest的源跟踪页面检索HTML,该页面显示了源自特定域的所有引脚。例如:http://pinterest.com/source/google.com/
但是,pinterest似乎正在使用jQuery无页面功能,这会阻止加载所有内容。
有没有办法强制file_get_contents函数触发无页面功能,以便返回整个结果集?
答案 0 :(得分:0)
file_get_contents(..)
只会在浏览器中显示您所看到的页面来源。它不能给通过javascript加载的东西。在您的情况下,最好的方法是查找正在进行的AJAX调用(在页面源中)。或者更确切地说,您可以打开浏览器的实用程序来监控页面活动。 (在Chrome上你会得到它使用ctrl + shift + J)
获得请求的网址后,您可以直接在file_get_contents(..)
中使用这些网址来获取相关数据。
答案 1 :(得分:0)
尝试过file_get_contents,但由于某种原因,它没有给我很多东西,但是cURL似乎对我来说很好。
您需要在您的服务器上安装cURL,以及PHP的libCURL扩展,但您可以尝试这样的操作,看看你得到了什么:
<?php
$cl = curl_init();
$header[0] = "Accept: text/xml,application/xml,application/xhtml+xml,";
$header[0] .= "text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5";
$header[] = "Cache-Control: max-age=0";
$header[] = "Connection: keep-alive";
$header[] = "Keep-Alive: 300";
$header[] = "Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3";
$header[] = "Accept-Language: nb-NO,nb;q=0.8,no;q=0.6,nn;q=0.4,en-US;q=0.2,en;q=0.2";
$header[] = "Pragma: ";
curl_setopt($cl, CURLOPT_FAILONERROR,true);
curl_setopt($cl, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/535.7 (KHTML, like Gecko) Chrome/16.0.912.77 Safari/535.7');
curl_setopt($cl, CURLOPT_HTTPHEADER, $header);
curl_setopt($cl, CURLOPT_REFERER, 'http://www.google.com');
curl_setopt($cl, CURLOPT_ENCODING, 'gzip,deflate');
curl_setopt($cl, CURLOPT_AUTOREFERER, false);
curl_setopt($cl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($cl, CURLOPT_CONNECTTIMEOUT, 2);
$url = 'http://pinterest.com/source/google.com/';
curl_setopt($cl, CURLOPT_URL, $url);
$output = curl_exec($cl);
curl_close($cl);
?>
<!DOCTYPE html>
<head>
<title>get pinterest</title>
</head>
<body>
<xmp>
<?php echo $output; ?>
</xmp>
</body>
</html>