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