DOM para analisar a parede do Facebook

Estou tentando analisar mensagens de um muro público da página de fãs do Facebook, mas retorna uma página em branco.

$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; 

Outra abordagem seria usar o JSON da API de Gráficos

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

O método DOMDocument::loadHTML() , que você está usando, espera que o conteúdo HTML seja um parâmetro – e não um URL.

Aqui, você está tentando interpretar seu URL como um conteúdo HTML – e não o que ele vincula.

usando esse método, você pode tentar com um que funcione em um arquivo ou um conteúdo remonte, como DOMDocument::loadHTMLFile() .

Esta não é a maneira correta de buscar dados do Facebook, e é claro que você deseja evitar a criação de um aplicativo no Facebook.

Mas a boa notícia é que você ainda pode usar o FQL, tente a consulta abaixo no Graph API Explorer .

Na consulta abaixo, consultamos a tabela de stream para obter os feeds públicos da página do desenvolvedor do Facebook :

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

Ele retornará todos os feeds ” públicos ” da página. Obviamente você pode precisar recuperar mais campos para criar um resultado significativo.


Você precisa fornecer um access_token válido para access mesmo a postagens públicas. Leia mais aqui .