如何从粉丝页面筛选出最活跃的用户?

时间:2013-04-11 15:38:06

标签: javascript facebook facebook-page browser-extension

我正在创建一个新网站。我想使用另一个与主题相关的Web服务来推广它。我想向推广我的第一个网站和粉丝页面的人发送一些礼物。如何过滤掉让我说20个用户喜欢/分享/评论我的大部分帖子?

任何合适的编程语言都会很好。

[编辑]

好吧......老实说,我正在寻找解析不是我的粉丝的方法。我想寄给我竞争对手粉丝网最活跃用户的礼物,只是简单地贿赂他们:)

5 个答案:

答案 0 :(得分:4)

有很多方法,我会从最简单的......

开始
  1. 假设有品牌名称或#hashtag,那么您可以使用搜索API:https://graph.facebook.com/search?q=watermelon&type=post&limit=1000然后迭代数据,说最新的1000(limit参数)从所有状态中找出模式用户(出现最多的用户)。

  2. 说它只是一个页面,然后你可以访问/<page>/posts终点(例如:https://developers.facebook.com/tools/explorer?method=GET&path=cocacola%2Fposts),因为它会给你一个最新帖子的列表(它们是分页的所以你可以迭代结果)这将包括一个喜欢这些帖子并对其发表评论的人的列表;然后你可以找到模式用户等等。

  3. 就代码而言,您可以使用任何东西,甚至可以使用简单的Web服务器(例如MAMP或WAMP等)或CLI在您的计算机上本地运行。响应是所有JSON和现代语言都能够处理这个。这是一个简单的例子,我在Python中找到了第一个方法:

    import json
    import urllib2
    from collections import Counter
    
    def search():
      req = urllib2.urlopen('https://graph.facebook.com/search?q=watermelon&type=post')
      res = json.loads(req.read())
      users = []
    
      for status in res['data']:
        users.append(status['from']['name'])
    
      count = Counter(users)
    
      print count.most_common()
    
    if __name__ == '__main__':
      search()
    

    如果你想稍后再引用它,我就把它放在github上了:https://github.com/ahmednuaman/python-facebook-search-mode-user/blob/master/search.py

    当您运行代码时,它将返回该搜索中模式用户的有序列表,例如,使用特定搜索标记发布最多评论的用户。如果您想使用它,可以很容易地适应第二种方法。

答案 1 :(得分:4)

基于Ahmed Nuaman answer(请同时给他们+1),我准备了这段代码:

用法示例:

分析http://www.facebook.com/cern

中最活跃的Facebook用户

$ python FacebookFanAnalyzer.py cern likes

$ python FacebookFanAnalyzer.py cern comments

$ python FacebookFanAnalyzer.py cern likes comments

备注:不支持分享和内部评论

file:FacebookFanAnalyzer.py

# -*- coding: utf-8 -*-
import json
import urllib2
import sys
from collections import Counter
reload(sys)
sys.setdefaultencoding('utf8')
###############################################################
###############################################################
#### PLEASE PASTE HERE YOUR TOKEN, YOU CAN GENERETE IT ON:
####    https://developers.facebook.com/tools/explorer
#### GENERETE AND PASTE NEW ONE, WHEN THIS WILL STOP WORKING

token = 'AjZCBe5yhAq2zFtyNS4tdPyhAq2zFtyNS4tdPw9sMkSUgBzF4tdPw9sMkSUgBzFZCDcd6asBpPndjhAq2zFtyNS4tsBphqfZBJNzx'

attrib_limit = 100
post_limit = 100
###############################################################
###############################################################


class FacebookFanAnalyzer(object):

    def __init__(self, fanpage_name, post_limit, attribs, attrib_limit):
        self.fanpage_name = fanpage_name
        self.post_limit = post_limit
        self.attribs = attribs
        self.attrib_limit = attrib_limit
        self.data={}

    def make_request(self, attrib):
        global token
        url = 'https://graph.facebook.com/' + self.fanpage_name + '/posts?limit=' + str(self.post_limit) + '&fields=' + attrib + '.limit('+str(self.attrib_limit)+')&access_token=' + token
        print "Requesting '" + attrib + "' data: " + url
        req = urllib2.urlopen(url)
        res = json.loads(req.read())

        if res.get('error'):
            print res['error']
            exit()

        return res

    def grep_data(self, attrib):
        res=self.make_request(attrib)
        lst=[]
        for status in res['data']:
            if status.get(attrib):
                for person in status[attrib]['data']:
                    if attrib == 'likes':
                        lst.append(person['name'])
                    elif attrib == 'comments':
                        lst.append(person['from']['name'])
        return lst


    def save_as_html(self, attribs):
        filename = self.fanpage_name + '.html'
        f = open(filename, 'w') 

        f.write(u'<html><head></head><body>')
        f.write(u'<table border="0"><tr>')
        for attrib in attribs:
            f.write(u'<td>'+attrib+'</td>')
        f.write(u'</tr>')

        for attrib in attribs:
            f.write(u'<td valign="top"><table border="1">')

            for d in self.data[attrib]:
                f.write(u'<tr><td>' + unicode(d[0]) + u'</td><td>' +unicode(d[1]) + u'</td></tr>')

            f.write(u'</table></td>')

        f.write(u'</tr></table>')
        f.write(u'</body>')
        f.close()
        print "Saved to " + filename

    def fetch_data(self, attribs):
        for attrib in attribs:
            self.data[attrib]=Counter(self.grep_data(attrib)).most_common()

def main():
    global post_limit
    global attrib_limit

    fanpage_name = sys.argv[1] 
    attribs = sys.argv[2:] 

    f = FacebookFanAnalyzer(fanpage_name, post_limit, attribs, attrib_limit)
    f.fetch_data(attribs)
    f.save_as_html(attribs)

if __name__ == '__main__':
    main()

<强>输出:

Requesting 'comments' data: https://graph.facebook.com/cern/posts?limit=50&fields=comments.limit(50)&access_token=AjZCBe5yhAq2zFtyNS4tdPyhAq2zFtyNS4tdPw9sMkSUgBzF4tdPw9sMkSUgBzFZCDcd6asBpPndjhAq2zFtyNS4tsBphqfZBJNzx
Requesting 'likes' data: https://graph.facebook.com/cern/posts?limit=50&fields=likes.limit(50)&access_token=AjZCBe5yhAq2zFtyNS4tdPyhAq2zFtyNS4tdPw9sMkSUgBzF4tdPw9sMkSUgBzFZCDcd6asBpPndjhAq2zFtyNS4tsBphqfZBJNzx
Saved to cern.html

enter image description here

答案 2 :(得分:2)

在页面的/feed连接上阅读页面上的帖子列表,并跟踪在每个帖子上发布和评论的用户的用户ID,并列出最常用的人员列表。

然后将这些存储在某个地方,并使用系统中确定将奖金发送给谁的系统中存储的列表。

e.g。

http://graph.facebook.com/cocacola/feed会返回cocacola页面上的所有近期帖子,您可以跟踪海报,评论者和喜欢者的ID,以确定谁是最活跃的用户

答案 3 :(得分:-2)

编写一个php或jquery脚本,该脚本在用户点击或在您的网站上分享之前执行,就在实际共享/喜欢fb并记录用户信息和他/她共享/喜欢的帖子之前。现在,您可以跟踪最多分享帖子的人。

PHP / Jquery脚本将充当中间人,因此不要直接使用facebook share / like脚本。我将尝试找到我为此方法编写的代码。我使用过PHP&amp; Mysql的。尝试使用JQuery,这将在隐藏进程方面提供更好的结果(我的意思是数据将被记录而不重新加载页面)。

答案 4 :(得分:-2)

你的问题很好,但这很难...... (实际上,在开始时,有一件事从我的脑海中浮现出来,这是不可能的。所以,我建立了一个完全不同的解决方案......) 最好的方法之一是创建一个网络,您的观众可以在其中以需要社交网络页面的官方URL的形式注册,并且他们可以选择他们没有这种网络:

  

“你想分享我们的一些页面吗?请先在这里注册..“

因此,当他们访问您的网站时,他们可以获得他们想要分享的特定网址,但他们在访问该特定网址时并不知道他们正在跟踪这些网址。(每次访问特定URL时,都会跟踪IP并在数据库中获得 ++ 1 的访问次数。)在您的网站顶部为其提供动态网址每个页面的文本区域来跟踪它们。或者使用脚本来自动在站点的URL上添加跟踪查询字符串。

我认为有一个免费软件可以建立联盟网络,让这一切变得简单! 如果您的观众真的很喜欢您的网站,他们会注册成为会员。但是这个不同,联盟网络与上面段落中提到的网络完全不同。

但我认为,您还可以使用Google Analytics完全跟踪一些未使用动态QUERY STRING(例如Digital Point)来自网址的引荐,而不是来自Facebook等其他社交网络因为查询路径,你不会得到那种社交网络的确切推荐路径。但是,您可以使用它来跟踪其他网络。此外,AddThis Analytics适用于非查询字符串网址。

Google Analytics上的两种推荐属于标准报告“流量来源”菜单。

  • 流量来源
    • 源头
      • 推介
    • 社会
      • 网络推介

这个答案非常混乱,但有时候,非常有用..除此之外?请查看以下链接:

  1. Publishing with an App Access Token - Facebook Developers
  2. Facebook for Websites - Facebook Developers
  3. Like - Facebook Developers
  4. Open Graph Overview - Facebook Developers