如何下载Facebook页面?

时间:2013-07-11 10:41:53

标签: php curl

我想使用PHP下载Facebook网页。我和stream_context_create一起尝试了file_get_contents。我也试过Curl。但Facebook正在撤回这条消息:

  

更新浏览器您正在使用不受支持的网络浏览器   Facebook的。要获得更好的体验,请访问其中一个网站并获取   您首选浏览器的最新版本:

我错过了什么吗?

这是卷曲代码:

       $url="https://www.facebook.com/media/set/?set=a.189662541197403.1073741845.188398434657147&type=1&l=a8755a774e";
        $custom_headers = array();
        $custom_headers[] = "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8";
        $custom_headers[] = "Pragma: no-cache";
        $custom_headers[] = "Cache-Control: no-cache";
        $custom_headers[] = "Accept-Language: en-us;q=0.7,en;q=0.3";
        $custom_headers[] = "Accept-Charset: utf-8,windows-1251;q=0.7,*;q=0.7";

        $ch = curl_init();
        $useragent = "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:9.0.1) Gecko/20100101 Firefox/9.0.1";
        curl_setopt($ch, CURLOPT_USERAGENT, $useragent); // set user agent
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE);
        curl_setopt($ch, CURLOPT_HEADER, false);
        curl_setopt($ch, CURLOPT_HTTPHEADER, $custom_headers);

        curl_setopt($ch, CURLOPT_CONNECTTIMEOUT ,20);
        curl_setopt($ch, CURLOPT_TIMEOUT, 40); //timeout in seconds

        $txResult = curl_exec($ch);

        $statuscode = curl_getinfo($ch, CURLINFO_HTTP_CODE);

        print "$txResult";

2 个答案:

答案 0 :(得分:3)

请改用API吗?

您提到的网址的数据也可以从以下网址中检索到:

http://graph.facebook.com/?id=189662541197403

此外,这会将您的整个代码缩减到此行:

json_decode(file_get_contents('http://graph.facebook.com/?id=189662541197403'));

答案 1 :(得分:2)

facebook Api对fb数据进行了一些修复

如果您想要废弃Facebook页面,您需要等到所有Javascript加载后再卷曲页面

您需要使用无头浏览器引擎来执行此操作。 cURL和wget是HTTP库;  他们说HTTP并将文档下载为String。他们没有DOM或JavaScript引擎的概念,可以帮助他们理解页面正在执行AJAX或JS。因此,要下载HTML,您需要通过解析DOM并执行JS来更像浏览器。我推荐使用Mozilla引擎的http://simile.mit.edu/wiki/Crowbar。 一旦js运行你很容易废弃你想要的内容

我希望这对你有帮助:)