2011-03-13 15 views
1

공용 Facebook 팬 페이지 벽에서 메시지를 구문 분석하려고하지만 빈 페이지가 반환됩니다. 아닌 URL -Facebook 벽을 구문 분석 할 DOM

$source = "http://www.facebook.com/?sk=wall&filter=2"; 
libxml_use_internal_errors(TRUE); 
$dom = new DOMDocument(); 
$dom->loadHTML($source); 
$xml = simplexml_import_dom($dom); 
libxml_use_internal_errors(FALSE); 
$message = $xml->xpath("//span[@class='messageBody']"); 

return (string)$message[0] . PHP_EOL; 

답변

1

또 다른 방법은

$posts = json_decode(
    file_get_contents('https://graph.facebook.com/swagbucks/posts') 
); 
foreach($posts->data as $post) { 
    echo $post->message, PHP_EOL; 
} 
+0

나는이 방법을 좋아한다. 기고에 감사드립니다. – jennifer

+0

@jennier :이 방법을 사용하면 페이징을 처리해야합니다. – ifaour

+0

첫 페이지에있는 것 이상을 원할 경우에만 @ifaour하십시오. 그녀가 DOM을 통해 게시물을 가져 오려고 했으므로 @jennifer가 페이지에있는 것보다 더 많은 것을 신경 쓰지 않았다고 가정합니다. – Gordon

2

사용하고있는 DOMDocument::loadHTML() 방법은,는 HTML 매개 변수로 내용을 기대하고있다.

여기에서는 URL을 링크 대상이 아닌 일부 HTML 콘텐츠로 해석하려고합니다.


이 방법을 사용하는 경우 파일에서 작업하는 콘텐츠 나 DOMDocument::loadHTMLFile()과 같은 미리 알림 콘텐츠를 사용해 볼 수 있습니다.

+0

+1 내가 완전히 그 이상 보았다 그래프 API에서 JSON을 사용하는 것입니다! – alex

2

이것은 이 아니며이며 Facebook에서 데이터를 가져 오는 올바른 방법이며 Facebook 응용 프로그램을 만들지 않으려는 것이 분명합니다.

그러나 좋은 소식은 FQL을 계속 사용할 수 있다는 것입니다. Graph API Explorer에서 아래 쿼리를 사용해보십시오.

SELECT message 
FROM stream 
WHERE source_id=19292868552 
AND is_hidden = 0 
AND filter_key='owner' 

이 페이지의 모든 "공공"피드를 돌아갑니다 : 아래의 쿼리에서

, 우리는 Facebook Developers 페이지의 공개 피드를 얻기 위해 stream 테이블을 쿼리. 확실히 의미있는 결과를 만들기 위해 더 많은 필드를 검색해야 할 수도 있습니다.


는 당신은 공직에 액세스 할 수 access_token 유효한를 제공해야합니다. 더 읽기 here.

+0

와우! 고맙습니다. – jennifer

관련 문제