file_get_contents和jQuery无页面

时间:2012-03-12 16:24:21

标签: php jquery

我正在使用php file_get_contents函数从pinterest的源跟踪页面检索HTML,该页面显示了源自特定域的所有引脚。例如:http://pinterest.com/source/google.com/

但是,pinterest似乎正在使用jQuery无页面功能,这会阻止加载所有内容。

有没有办法强制file_get_contents函数触发无页面功能,以便返回整个结果集?

2 个答案:

答案 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>