2013-07-11 7 views
1

PHP를 사용하여 Facebook 웹 페이지를 다운로드하고 싶습니다. 나는 stream_context_create와 함께 file_get_contents를 시도했다. 나는 또한 컬을 시도했다. 그러나 페이스 북은이 메시지를 returing된다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

어떤 부분 나는 희망

줄까? – jdero

+0

Facebook은 주로 Javascript 및 AJAX에 의해 구동되는 동적 사이트입니다. 스크린 스크래핑을 사용하여이 작업을 수행하는 것이 매우 어려울 것입니다. – lonesomeday

+0

'Firefox/9.0.1'는 약간 오래된 것 같습니다. 필자가 작성한 최신 버전은 22.0입니다. 아마도 그것은 페이스 북이 좋아하지 않는 것입니다 ... – legoscia

답변

3

대신 API를 사용

여기 컬 코드는? 당신이 언급 한 URL에 대한

데이터는이 일에서 검색 할 수 있습니다 :이 라인에 전체 코드를 줄여 또한

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

:

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

예 (내가 원하는 데이터를 얻습니다.).하지만 htm에서 전체 페이지를 가져올 수 있다면 더 좋지 않을까요? – AgA

+1

@AgA 당신은 할 수 없습니다 : Facebook은 Javascript를 사용하여 페이지를 생성합니다. –

1

페이스 북의 API는 일부 restication에 대한이 fb 데이터

스크랩 Facebook 페이지를 컬하기 전에 모든 자바 스크립트가로드 될 때까지 기다리는 것이 필요합니다.

헤드리스 브라우저 엔진을 사용해야합니다. cURL 및 wget은 HTTP 라이브러리입니다. 그들은 HTTP를 사용하고 문서를 String으로 다운로드합니다. 그들은 페이지가 AJAX OR JS를하고 있다는 것을 이해하는 데 도움이되는 DOM 또는 JavaScript 엔진의 개념을 갖고 있지 않습니다. 따라서 HTML을 다운로드하려면 DOM을 파싱하고 JS를 실행하여 브라우저와 같은 역할을하는 프로그램이 필요합니다. 모질라 엔진을 사용하는 http://simile.mit.edu/wiki/Crowbar을 권장합니다. JS가 쉽게 내용을 스크랩 실행 일단 당신이 당신을 위해 도움-가득 : 웹 페이지의

관련 문제