我想使用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";
答案 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运行你很容易废弃你想要的内容
我希望这对你有帮助:)