Я пытаюсь разобрать сообщения с публичной стены фан-страницы Facebook, но он возвращает пустую страницу.
$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;
Еще один подход заключается в использовании JSON из Graph API
$posts = json_decode( file_get_contents('https://graph.facebook.com/swagbucks/posts') ); foreach($posts->data as $post) { echo $post->message, PHP_EOL; }
Метод DOMDocument::loadHTML()
, который вы используете, ожидает HTML-контент как параметр, а не URL-адрес.
Здесь вы пытаетесь интерпретировать свой URL как некоторый HTML-контент, а не то, на что он ссылается.
используя этот метод, вы можете попробовать использовать файл, который работает с файлом, или контент-ремонт, например DOMDocument::loadHTMLFile()
.
Это неправильный способ получить данные из Facebook, и ясно, что вы хотите избежать создания приложения Facebook.
Но хорошая новость заключается в том, что вы все еще можете использовать FQL, попробуйте этот запрос в API-интерфейсе Graph API .
В нижеприведенном запросе мы запросили таблицу stream
чтобы получить публичные фиды на странице разработчиков Facebook :
SELECT message FROM stream WHERE source_id=19292868552 AND is_hidden = 0 AND filter_key='owner'
Он вернет все « общедоступные » каналы страницы. Очевидно, вам может понадобиться получить больше полей для создания значимого результата.
Вы должны предоставить действительный access_token
для доступа к публичным сообщениям. Подробнее читайте здесь .