【问题标题】:Get data from a facebook page wall or group wall for use on personal website从 facebook 页面墙或群组墙获取数据以在个人网站上使用
【发布时间】:2011-03-25 23:25:35
【问题描述】:

我想连接到公共 Facebook 页面或群组,并在个人网站上列出墙上的所有条目。我将在我的服务器上使用 PHP,这对我来说是最好的解决方案。或 javascript。

任何人都可以解释或提供有关如何执行此操作的工作代码吗?或者只是制作这个所需的所有步骤?

如果可以为每个帖子处理有关人员、日期、描述...的信息,那就太好了!所以我的布局可以自定义。

感谢您在这里帮助我!

【问题讨论】:

    标签: php facebook screen-scraping


    【解决方案1】:

    您需要在 stream table 上运行 FQL,并提供您感兴趣的页面或组的 ID 为 source_id(fb 文档有一些解释和示例)。获得流数据后,您可以更深入地挖掘并通过 FQL 再次获取离开此帖子的用户或您需要的任何其他数据。

    有多种运行 FQL 的方法 - 可以在 JS API、PHP API 或旧的 REST API 中完成。

    【讨论】:

    • 这听起来是最好的解决方案。你有时间给我一个关于如何连接到页面或组并返回墙的 xml 结构的工作示例吗?我使用 PHP。您是否需要包含某种带有工作方法的 facebook 文件?感谢您的帮助
    • @user412264 如果您根本不熟悉 facebook api,您只需先自己阅读文档即可。我无法在这里向你解释这一切。我建议从 JavaScript api (developers.facebook.com/docs/reference/javascript) 开始,因为它有更好的文档记录(并且更容易 imo)。一旦你取得了一些进展,那么将你的 js api 代码转换为 php api 应该非常简单。
    • 好的。我将尝试查看 js api。您是否需要在 facebook 注册应用程序才能执行此类任务?
    • @user412264 很难说。有些方法不需要提供应用程序 ID,但大多数方法都需要。如果注册一个应用程序不是你的限制,我会注册一个,它会打开更多的门。
    • 好的。我只是有点困惑为什么要为您将在另一台服务器上拥有的代码制作应用程序。就我而言,我只需要一种方法来为组/页面拉出墙上的帖子并将其显示在 php 网站上。很难找到一个例子。但是感谢您帮助我!事情变得越来越清晰,但仍然有点混乱:)
    【解决方案2】:

    使用他们提供的 facebook graph api url

    使用simplejson解析器的python代码

    keyword="old spice"
    searchurl='http://graph.facebook.com/search?q='+keyword
    resp=urllib2.urlopen(searchurl)
    pageData=resp.read()
    json = simplejson.loads(pageData)
    posts=json['data']
    for p in posts:
        postid=p['id']
        username=p['from']['name']
        posterimg=p['icon']
        comment=p['message']
    

    【讨论】:

    • 不知道你在这方面能走多远,但是 +1 可以很好地解决我认为更大的问题
    • 酷!由于我不熟悉python,因此需要仔细查看此代码。以 Tnx 为例!
    【解决方案3】:

    在 JavaScript (jQuery) 中。

    您可以使用我的备用 access_token 来查看公共组或页面;)

    要获得您自己的访问令牌,facebook graph explorer 可以为您生成一个(以及测试查询)。

    在 Javascript 中,我们向 facebook graph 发出请求,该请求返回一个 JSON 对象。响应类似于this

    下面的代码遍历每个条目并打印出消息,如果您查看上面的链接,它会为您提供其他数据字段的命名约定。

    例如:

    data.data[0].created_time;
    data.data[0].from.name;
    

    等等。

    希望有帮助!

    <!DOCTYPE html>
    <head>
    <script src="http://code.jquery.com/jquery-1.6.2.min.js"></script>
    </head>
    
    <body>
    
    <ul id = 'list'>
    <script>
    
        var graphQuery = 'https://graph.facebook.com/2228101777/feed';
        var authToken = '145634995501895|477bb3c939123a5845afe90d.1-100002565213903|F1VA26jsYL7yBeq2iU6SZX_XXrs'
    
        var url =  graphQuery +'?access_token='+ authToken +'&callback=?';  
    
        $.getJSON(url,function(data){                       
            for( i=0; i < data.data.length; i++){
                $("#list").append('<li>'+ data.data[i].message +'</li>');   
                // add some more here if needed
            }               
        }); 
    
    </script>
    
    </ul>
    </body>
    </html>
    

    【讨论】:

      【解决方案4】:

      据我所知,您所说的是 Web Scraping。您要做的是获取组的 URL,在 PHP 中使用 file_get_contents($url) 命令获取文件,然后在 PHP 中对其进行分析。

      我建议为此复习一下您的正则表达式,因为查看 Facebook 用于墙贴的 HTML 非常重要。您将能够从 HTML 中获取您正在寻找的信息。

      我会发布一些示例代码,但那是在遥远的另一台计算机上。不过,应该是一个好的开始。

      编辑:添加一些示例代码:

       $URL = "http://facebook.com/group=5343242" (or whatever the URL structure is for the facebook group)
      $groupPage = file_get_contents($URL)
      

      这里是正则表达式 PHP 页面的链接:

      http://www.php.net/manual/en/book.pcre.php

      【讨论】:

      • 有趣。希望看到这种解决方案的示例,我会查看您发布的链接。
      • 我认为最好的办法是按照其他人的建议检查 API。我的建议可能会比其他人涉及更多的工作。
      • 好的tnx。你仍然有一个有趣的想法:)
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-04-25
      • 2012-12-02
      • 1970-01-01
      • 2023-03-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多