【问题标题】:DOM to parse Facebook wallDOM 解析 Facebook 墙
【发布时间】:2011-07-14 10:24:18
【问题描述】:

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

【问题讨论】:

    标签: php facebook parsing dom


    【解决方案1】:

    您正在使用的 DOMDocument::loadHTML() 方法需要 HTML 内容作为参数,而不是 URL。

    在这里,您试图将您的 URL 解释为一些 HTML 内容,而不是它链接到的内容。


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

    【讨论】:

      【解决方案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'
      

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


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

      【讨论】:

        【解决方案3】:

        另一种方法是使用来自 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;
        }
        

        【讨论】:

        • 我也喜欢这种方法。感谢您的贡献。
        • @jennier:请注意,使用这种方法您需要处理分页。
        • @ifaour 仅当您想要的不仅仅是第一页上的内容。鉴于她试图通过 DOM 获取帖子,可以假设 @jennifer 关心的不仅仅是页面上的帖子。
        • 没错,这只是@jennifer 的提醒。
        猜你喜欢
        • 2010-09-16
        • 2010-12-25
        • 1970-01-01
        • 2014-10-14
        • 1970-01-01
        • 2014-01-05
        • 2011-12-08
        • 2014-05-19
        • 1970-01-01
        相关资源
        最近更新 更多