DOM解析Facebook墙

时间:2011-03-13 11:46:07

标签: php facebook parsing dom

我正在尝试解析来自公共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;

3 个答案:

答案 0 :(得分:2)

您正在使用的DOMDocument::loadHTML()方法希望将HTML内容作为参数 - 而不是网址。

在这里,您试图将您的网址解释为某些HTML内容 - 而不是链接到的内容。

使用此方法,您可能希望尝试使用适用于文件的文件或remonte内容,例如DOMDocument::loadHTMLFile()

答案 1 :(得分:2)

这是从Facebook获取数据的正确方法,很明显您要避免创建Facebook应用程序。

但好消息是你仍然可以使用FQL,在Graph API Explorer中尝试以下查询。

在下面的查询中,我们查询stream表格以获取Facebook Developers页面的公开供稿:

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

它将返回页面的所有“公共”供稿。显然,您可能需要检索更多字段以创建有意义的结果。


您需要提供有效的access_token来访问公开帖子。阅读更多here

答案 2 :(得分:1)

另一种方法是使用Graph API中的JSON

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